<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def span_in_stack_context(span):
 """ Create Tornado's StackContext that stores the given span in the thread-local request context. This function is intended for use in Tornado applications based on IOLoop, although will work fine in single-threaded apps like Flask, albeit with more overhead. ## Usage example in Tornado application Suppose you have a method `handle_request(request)` in the http server. Instead of calling it directly, use a wrapper: .. code-block:: python from opentracing_instrumentation import request_context @tornado.gen.coroutine def handle_request_wrapper(request, actual_handler, *args, **kwargs) request_wrapper = TornadoRequestWrapper(request=request) span = http_server.before_request(request=request_wrapper) with request_context.span_in_stack_context(span):
 return actual_handler(*args, **kwargs) :param span: :return: Return StackContext that wraps the request context. """


    if not isinstance(opentracing.tracer.scope_manager, TornadoScopeManager):
        raise RuntimeError('scope_manager is not TornadoScopeManager')

    # Enter the newly created stack context so we have
    # storage available for Span activation.
    context = tracer_stack_context()
    entered_context = _TracerEnteredStackContext(context)

    if span is None:
        return entered_context

    opentracing.tracer.scope_manager.activate(span, False)
    assert opentracing.tracer.active_span is not None
    assert opentracing.tracer.active_span is span

    return entered_context