@Override public String toString() {
    List<Span> childrenSpans = new ArrayList<>();
    for (SpanNode child : children) {
      childrenSpans.add(child.span);
    }
    return "SpanNode{parent=" + (parent != null ? parent.span : null)
      + ", span=" + span + ", children=" + childrenSpans + "}";
  }
A span in the tree is not always unique on ID. Sharing is allowed once per ID (Ex: in RPC).
However, it is possible in a retry scenario for accidental duplicate ID sharing to occur
zipkin/src/main/java/zipkin2/internal/SpanNode.java