docs: @Override
      public void filter(ClientRequestContext clientRequestContext) throws IOException {
          String methodName = "filter(outgoing)";
  
          Tracer tracer = OpentracingTracerManager.getTracer();
          if (tracer == null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " no tracer");
              }
              return;
          } else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName, OpentracingUtils.getTracerText(tracer));
              }
          }
  
          URI outgoingUri = clientRequestContext.getUri();
          String outgoingURL = outgoingUri.toURL().toString();
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, methodName + " outgoing URL", outgoingURL);
          }
  
          /*
           * Removing filter processing until microprofile spec for it is approved. Expect to add this code
           * back in 1Q18 - smf
           */
  //        boolean process = OpentracingService.process(outgoingUri, SpanFilterType.OUTGOING);
          boolean process = true;
  
          if (process) {
              String buildSpanName = helper != null ? helper.getBuildSpanName(clientRequestContext) : outgoingURL;
              Tracer.SpanBuilder spanBuilder = tracer.buildSpan(buildSpanName);
  
              spanBuilder.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT);
              spanBuilder.withTag(Tags.HTTP_URL.getKey(), outgoingURL);
              spanBuilder.withTag(Tags.HTTP_METHOD.getKey(), clientRequestContext.getMethod());
              spanBuilder.withTag(Tags.COMPONENT.getKey(), TAG_COMPONENT_JAXRS);
  
              SpanContext parentSpanContext = (SpanContext) clientRequestContext.getProperty(References.CHILD_OF);
  
              if (parentSpanContext != null) {
                  spanBuilder.ignoreActiveSpan().asChildOf(parentSpanContext);
              }
  
              Span span = spanBuilder.start();
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " span", span);
              }
  
              try (AutoFinishScope scope = AUTO_FINISH_SCOPE_MANAGER.activate(span, true)) {
                  Continuation continuation = scope.capture();
  
                  tracer.inject(
                                scope.span().context(),
                                Format.Builtin.HTTP_HEADERS, new MultivaluedMapToTextMap(clientRequestContext.getHeaders()));
  
                  clientRequestContext.setProperty(CLIENT_CONTINUATION_PROP_ID, continuation);
              }
          } else {
              Span currentSpan = tracer.activeSpan();
              if (currentSpan != null) {
                  tracer.inject(
                                currentSpan.context(),
                                Format.Builtin.HTTP_HEADERS, new MultivaluedMapToTextMap(clientRequestContext.getHeaders()));
              }
          }
  
          clientRequestContext.setProperty(CLIENT_SPAN_SKIPPED_ID, !process);
      }