code: public static <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
          Context context,
          ServerCall<ReqT, RespT> call,
          Metadata headers,
          ServerCallHandler<ReqT, RespT> next) {
      Context previous = context.attach();
      try {
        return new ContextualizedServerCallListener<>(
            next.startCall(call, headers),
            context);
      } finally {
        context.detach(previous);
      }
    }
docs: Make the provided {@link Context} {@link Context#current()} for the creation of a listener
  to a received call and for all events received by that listener.
  
  <p>This utility is expected to be used by {@link ServerInterceptor} implementations that need
  to augment the {@link Context} in which the application does work when receiving events from
  the client.
  
  @param context to make {@link Context#current()}.
  @param call used to send responses to client.
  @param headers received from client.
  @param next handler used to create the listener to be wrapped.
  @return listener that will receive events in the scope of the provided context.