@Override
    public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata a) {
      if (!BRAVE_PRESENT) {
        return ConditionOutcome.noMatch("Brave must be in the classpath");
      }

      String selfTracingEnabled = context.getEnvironment()
          .getProperty("zipkin.self-tracing.enabled");

      if (!Boolean.valueOf(selfTracingEnabled)) {
        return ConditionOutcome.noMatch("zipkin.self-tracing.enabled isn't true");
      }

      String expectedStorageType = AnnotationAttributes.fromMap(
          a.getAnnotationAttributes(ConditionalOnSelfTracing.class.getName())
      ).getString("storageType");

      if (expectedStorageType.isEmpty()) {
        return ConditionOutcome.match();
      }

      String storageType = context.getEnvironment().getProperty("zipkin.storage.type");
      return expectedStorageType.equals(storageType) ?
          ConditionOutcome.match() :
          ConditionOutcome.noMatch(
              "zipkin.storage.type was: " + storageType + " expected " + expectedStorageType);
    }
This helps solve a number of problems including the following, which sometimes only break in an
alpine JRE. The solution is to go with pure properties instead.

<pre>
<p>ConditionalOnClass(name = "brave.Tracing")
<p>ConditionalOnBean(Brave.class)
</pre>
zipkin-server/src/main/java/zipkin2/server/internal/ConditionalOnSelfTracing.java