async def METHOD_NAME(tracer):
    # ensures that the context is correctly propagated when
    # concurrent tasks are created from a common tracing block
    tracer.configure(context_provider=context_provider)
    @tracer.wrap("f1")
    async def f1():
        await asyncio.sleep(0.01)
    @tracer.wrap("f2")
    async def f2():
        await asyncio.sleep(0.01)
    with tracer.trace("main_task"):
        await asyncio.gather(f1(), f2())
        # do additional synchronous work to confirm main context is
        # correctly handled
        with tracer.trace("main_task_child"):
            time.sleep(0.01)
    traces = tracer.pop_traces()
    assert len(traces) == 1
    assert len(traces[0]) == 4
    main_task = traces[0][0]
    child_1 = traces[0][1]
    child_2 = traces[0][2]
    main_task_child = traces[0][3]
    # check if the context has been correctly propagated
    assert child_1.trace_id == main_task.trace_id
    assert child_1.parent_id == main_task.span_id
    assert child_2.trace_id == main_task.trace_id
    assert child_2.parent_id == main_task.span_id
    assert main_task_child.trace_id == main_task.trace_id
    assert main_task_child.parent_id == main_task.span_id