@Test void producerAndConsumer_loopback_shared() {
    V1Span v1 =
        V1Span.newBuilder()
            .traceId(1)
            .parentId(2)
            .id(3)
            .name("message")
            .addAnnotation(1472470996199000L, "ms", FRONTEND)
            .addAnnotation(1472470996238000L, "ws", FRONTEND)
            .addAnnotation(1472470996403000L, "wr", FRONTEND)
            .addAnnotation(1472470996406000L, "mr", FRONTEND)
            .build();

    Span.Builder newBuilder = Span.newBuilder().traceId("1").parentId("2").id("3").name("message");

    Span producer =
        newBuilder
            .clone()
            .kind(Kind.PRODUCER)
            .localEndpoint(FRONTEND)
            .timestamp(1472470996199000L)
            .duration(1472470996238000L - 1472470996199000L)
            .build();

    Span consumer =
        newBuilder
            .clone()
            .kind(Kind.CONSUMER)
            .shared(true)
            .localEndpoint(FRONTEND)
            .timestamp(1472470996403000L)
            .duration(1472470996406000L - 1472470996403000L)
            .build();

    assertThat(v1SpanConverter.convert(v1)).containsExactly(producer, consumer);
  }
shared v1 IDs for messaging spans isn't supported, but shouldn't break
zipkin/src/test/java/zipkin2/v1/SpanConverterTest.java