@Test void build_skewedTrace() {
    List<Span> httpTrace = List.of(
      Span.newBuilder()
        .traceId("1e223ff1f80f1c69").parentId("74280ae0c10d8062").id("43210ae0c10d1234")
        .name("async")
        .timestamp(1470150004008762L)
        .duration(65000L)
        .localEndpoint(Endpoint.newBuilder().serviceName("serviceb").ip("192.0.0.0").build())
        .build(),
      Span.newBuilder()
        .traceId("1e223ff1f80f1c69").parentId("bf396325699c84bf").id("43210ae0c10d1234")
        .kind(Span.Kind.SERVER)
        .name("post")
        .timestamp(1541138169255688L)
        .duration(168731L)
        .localEndpoint(Endpoint.newBuilder().serviceName("serviceb").ip("192.0.0.0").build())
        .shared(true)
        .build(),
      Span.newBuilder()
        .traceId("1e223ff1f80f1c69").id("bb1f0e21882325b8")
        .kind(Span.Kind.SERVER)
        .name("get")
        .timestamp(1470150004071068L)
        .duration(99411L)
        .localEndpoint(Endpoint.newBuilder().serviceName("servicea").ip("127.0.0.0").build())
        .build(),
      Span.newBuilder()
        .traceId("1e223ff1f80f1c69").parentId("bb1f0e21882325b8").id("74280ae0c10d8062")
        .kind(Span.Kind.CLIENT)
        .name("post")
        .timestamp(1470150004074202L)
        .duration(94539L)
        .localEndpoint(Endpoint.newBuilder().serviceName("servicea").ip("127.0.0.0").build())
        .build());

    SpanNode root = new SpanNode.Builder(logger).build(httpTrace);
    assertThat(root.traverse()).toIterable().extracting(SpanNode::span)
      .containsExactlyInAnyOrderElementsOf(httpTrace);
  }
Same as {@link #constructsTraceTree()}, except with shared span ID
zipkin/src/test/java/zipkin2/internal/SpanNodeTest.java