@UnstableApi
    public static Consumer<ClientRequestContext> inject(Supplier<TraceContext> traceContextSupplier) {
        requireNonNull(traceContextSupplier, "traceContextSupplier");
        return ctx -> {
            final TraceContext traceContext = traceContextSupplier.get();
            requireNonNull(traceContext, "traceContextSupplier.get() returned null");
            TraceContextUtil.setTraceContext(ctx, traceContext);
        };
    }
Injects the current {@link TraceContext} through {@link ClientBuilder#contextCustomizer(Consumer)} or
{@link Clients#withContextCustomizer(Consumer)}. The injected {@link TraceContext} will be propagated
to {@link BraveClient} as a parent {@link Span}.

<p>Basically, a parent {@link TraceContext} is automatically propagated to {@link BraveClient} if you use
{@link BraveService}. This method is useful if you want to manually propagate the current
{@link TraceContext} to {@link BraveClient} in non-Armeria server environment.
<pre>{@code
Tracing threadLocalTracing = ...;
Tracing requestContextTracing =
    Tracing.newBuilder()
           .currentTraceContext(RequestContextCurrentTraceContext.ofDefault())
           .build();

Clients.builder(...)
       .contextCustomizer(TraceContextPropagation.inject(() -> {
           return threadLocalTracing.currentTraceContext().get();
       })
       .decorator(BraveClient.newDecorator(requestContextTracing))
       .build();
}</pre>
brave/brave6/src/main/java/com/linecorp/armeria/client/brave/TraceContextPropagation.java