code: public final <C> Callable<C> withSpan(Span span, final Callable<C> callable) {
      return CurrentSpanUtils.withSpan(span, /* endSpan= */ false, callable);
    }
docs: Returns a {@link Callable} that runs the given task with the given {@code Span} in the current
  context.
  
  <p>Users may consider to use {@link SpanBuilder#startSpanAndCall(Callable)}.
  
  <p>Any error will end up as a {@link Status#UNKNOWN}.
  
  <p>IMPORTANT: Caller must manually propagate the entire {@code io.grpc.Context} when wraps a
  {@code Callable}, see the examples.
  
  <p>IMPORTANT: Caller must manually end the {@code Span} within the {@code Callable}, or after
  the {@code Callable} is executed.
  
  <p>Example with Executor wrapped with {@link io.grpc.Context#currentContextExecutor}:
  
  <pre><code>
  class MyClass {
  private static Tracer tracer = Tracing.getTracer();
  void handleRequest(Executor executor) {
  Span span = tracer.spanBuilder("MyRunnableSpan").startSpan();
  executor.execute(tracer.withSpan(span, {@code new Callable<MyResult>()} {
  {@literal @}Override
  public MyResult call() throws Exception {
  try {
  return sendResult();
  } finally {
  span.end();
  }
  }
  }));
  }
  }
  </code></pre>
  
  <p>Example without Executor wrapped with {@link io.grpc.Context#currentContextExecutor}:
  
  <pre><code>
  class MyClass {
  private static Tracer tracer = Tracing.getTracer();
  void handleRequest(Executor executor) {
  Span span = tracer.spanBuilder("MyRunnableSpan").startSpan();
  executor.execute(Context.wrap(tracer.withSpan(span, {@code new Callable<MyResult>()} {
  {@literal @}Override
  public MyResult call() throws Exception {
  try {
  return sendResult();
  } finally {
  span.end();
  }
  }
  })));
  }
  }
  </code></pre>
  
  @param span the {@code Span} to be set as current.
  @param callable the {@code Callable} to run in the {@code Span}.
  @return the {@code Callable}.
  @since 0.11.0