docs: @Override
      public void filter(ContainerRequestContext incomingRequestContext,
                         ContainerResponseContext outgoingResponseContext) throws IOException {
          String methodName = "filter(outgoing)";
  
          Boolean skipped = (Boolean) incomingRequestContext.getProperty(OpentracingContainerFilter.SERVER_SPAN_SKIPPED_ID);
  
          if (skipped != null) {
              // Remove it immediately
              incomingRequestContext.removeProperty(OpentracingContainerFilter.SERVER_SPAN_SKIPPED_ID);
          }
  
          if (skipped != null && skipped) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " skipped");
              }
              return;
          }
  
          // If processing wasn't skipped, then we should have an ActiveSpan
          Scope scope = (Scope) incomingRequestContext.getProperty(OpentracingContainerFilter.SERVER_SPAN_PROP_ID);
          if (scope == null) {
              // This may occur if there's no Tracer (see other method); otherwise, there's
              // probably some bug sending the right ActiveSpan (e.g. threading?).
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " no span");
              }
              return;
          }
  
          incomingRequestContext.removeProperty(OpentracingContainerFilter.SERVER_SPAN_PROP_ID);
  
          try {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " span", scope.span());
              }
  
              Integer httpStatus = Integer.valueOf(outgoingResponseContext.getStatus());
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " httpStatus", httpStatus);
              }
              scope.span().setTag(Tags.HTTP_STATUS.getKey(), httpStatus);
  
              if (outgoingResponseContext.getStatus() >= 400) {
                  MultivaluedMap<String, Object> headers = outgoingResponseContext.getHeaders();
  
                  Throwable exception = (Throwable) headers.getFirst(EXCEPTION_KEY);
                  if (exception != null) {
                      headers.remove(EXCEPTION_KEY);
                  }
  
                  OpentracingService.addSpanErrorInfo(scope.span(), exception);
              }
          } finally {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " finish span", scope.span());
              }
              scope.close();
          }
      }