### Question:
Brave { public static <T> Flow<T, Pair<T, TraceContext>, NotUsed> startSpanFlow(final Tracing tracing, final String spanName) { return Flow.fromGraph(new BraveStartSpanFlowStage<>(tracing, spanName)); }  static Flow<T, Pair<T, TraceContext>, NotUsed> startSpanFlow(final Tracing tracing,
                                                                          final String spanName); static Graph<FlowShape<Pair<T, TraceContext>, T>, NotUsed> finishSpanFlow(final Tracing tracing); static Graph<FlowShape<Pair<A, TraceContext>, Pair<B, TraceContext>>, Mat> childSpanFlowWithTraceContext(final Tracing tracing,
                                                                                                                              final String spanName,
                                                                                                                              final Flow<Pair<A, TraceContext>, B, Mat> flow); static Graph<FlowShape<Pair<A, TraceContext>, Pair<B, TraceContext>>, Mat> childSpanFlow(final Tracing tracing,
                                                                                                              final String spanName,
                                                                                                              final Flow<A, B, Mat> flow);  }### Answer:
@Test public void shouldCreateTracePair() throws InterruptedException { new TestKit(system) {{ Source.single("hello") .via(Brave.startSpanFlow(tracing, "my-span")) .map(Pair::second) .map(param -> { tracing.tracer().toSpan(param).finish(); return param; }) .to(Sink.foreach(TestCase::assertNotNull)) .run(materializer); Span span = takeSpan(); assertThat(span).isNotNull(); }}; }