@Override
    public final O serve(ServiceRequestContext ctx, I req) throws Exception {
        if (!ctx.config().transientServiceOptions().contains(TransientServiceOption.WITH_TRACING)) {
            return unwrap().serve(ctx, req);
        }
        final BI braveReq = braveRequest(ctx);
        final Span span = handleReceive(braveReq);
        TraceContextUtil.setTraceContext(ctx, span.context());

        final RequestContextExtension ctxExtension = ctx.as(RequestContextExtension.class);
        if (currentTraceContext.scopeDecoratorAdded() && !span.isNoop() && ctxExtension != null) {
            // Run the scope decorators when the ctx is pushed to the thread local.
            ctxExtension.hook(() -> currentTraceContext.decorateScope(span.context(),
                                                                        SERVICE_REQUEST_DECORATING_SCOPE));
        }

        maybeAddTagsToSpan(ctx, braveReq, span);
        try (SpanInScope ignored = tracer.withSpanInScope(span)) {
            return unwrap().serve(ctx, req);
        }
    }
Creates a new instance that decorates the specified {@link Service}.
brave/brave6/src/main/java/com/linecorp/armeria/server/brave/AbstractBraveService.java