public Builder mergeFrom(com.google.devtools.cloudtrace.v1.TraceSpan other) {
      if (other == com.google.devtools.cloudtrace.v1.TraceSpan.getDefaultInstance()) return this;
      if (other.getSpanId() != 0L) {
        setSpanId(other.getSpanId());
      }
      if (other.kind_ != 0) {
        setKindValue(other.getKindValue());
      }
      if (!other.getName().isEmpty()) {
        name_ = other.name_;
        bitField0_ |= 0x00000004;
        onChanged();
      }
      if (other.hasStartTime()) {
        mergeStartTime(other.getStartTime());
      }
      if (other.hasEndTime()) {
        mergeEndTime(other.getEndTime());
      }
      if (other.getParentSpanId() != 0L) {
        setParentSpanId(other.getParentSpanId());
      }
      internalGetMutableLabels().mergeFrom(other.internalGetLabels());
      bitField0_ |= 0x00000040;
      this.mergeUnknownFields(other.getUnknownFields());
      onChanged();
      return this;
    }
<pre>
A span represents a single timed event within a trace. Spans can be nested
and form a trace tree. Often, a trace contains a root span that describes the
end-to-end latency of an operation and, optionally, one or more subspans for
its suboperations. Spans do not need to be contiguous. There may be gaps
between spans in a trace.
</pre>

Protobuf type {@code google.devtools.cloudtrace.v1.TraceSpan}
java-trace/proto-google-cloud-trace-v1/src/main/java/com/google/devtools/cloudtrace/v1/TraceSpan.java