test_class.file: agent/core/src/test/java/org/glowroot/agent/util/OptionalServiceTest.java
test_class.identifier: OptionalServiceTest
test_case.body: @Test
      public void testUnavailable() {
          // when
          OptionalService<Object> optionalService = OptionalService.unavailable("abc");
          // then
          assertThat(optionalService.getAvailability().getAvailable()).isFalse();
          assertThat(optionalService.getAvailability().getReason()).isEqualTo("abc");
      }
test_case.class_method_signature: OptionalServiceTest.testUnavailable()
test_case.full_signature: @Test public void testUnavailable()
test_case.identifier: testUnavailable
test_case.invocations: unavailable isFalse assertThat getAvailable getAvailability isEqualTo assertThat getReason getAvailability
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testUnavailable()
focal_class.file: agent/core/src/main/java/org/glowroot/agent/util/OptionalService.java
focal_class.identifier: OptionalService
focal_class.class_method_signature: OptionalService.available(T service)
focal_class.full_signature: static OptionalService<T> available(T service)
focal_class.identifier: available
focal_class.modifiers: static
focal_class.parameters: (T service)
focal_class.return: OptionalService<T>
focal_class.signature: OptionalService<T> available(T service)
focal_class.class_method_signature: OptionalService.unavailable(String reason)
focal_class.full_signature: static OptionalService<T> unavailable(String reason)
focal_class.identifier: unavailable
focal_class.modifiers: static
focal_class.parameters: (String reason)
focal_class.return: OptionalService<T>
focal_class.signature: OptionalService<T> unavailable(String reason)
focal_class.class_method_signature: OptionalService.getAvailability()
focal_class.full_signature: public abstract Availability getAvailability()
focal_class.identifier: getAvailability
focal_class.modifiers: public abstract
focal_class.parameters: ()
focal_class.return: Availability
focal_class.signature: Availability getAvailability()
focal_class.class_method_signature: OptionalService.getService()
focal_class.full_signature: public abstract @Nullable T getService()
focal_class.identifier: getService
focal_class.modifiers: public abstract @Nullable
focal_class.parameters: ()
focal_class.return: T
focal_class.signature: T getService()
focal_method.body: static <T> OptionalService<T> unavailable(String reason) {
          return new AbsentOptionalService<T>(reason);
      }
focal_method.class_method_signature: OptionalService.unavailable(String reason)
focal_method.full_signature: static OptionalService<T> unavailable(String reason)
focal_method.identifier: unavailable
focal_method.modifiers: static
focal_method.parameters: (String reason)
focal_method.return: OptionalService<T>
focal_method.signature: OptionalService<T> unavailable(String reason)