@java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + NAME_FIELD_NUMBER;
    hash = (53 * hash) + getName().hashCode();
    hash = (37 * hash) + SPAN_ID_FIELD_NUMBER;
    hash = (53 * hash) + getSpanId().hashCode();
    hash = (37 * hash) + PARENT_SPAN_ID_FIELD_NUMBER;
    hash = (53 * hash) + getParentSpanId().hashCode();
    if (hasDisplayName()) {
      hash = (37 * hash) + DISPLAY_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getDisplayName().hashCode();
    }
    if (hasStartTime()) {
      hash = (37 * hash) + START_TIME_FIELD_NUMBER;
      hash = (53 * hash) + getStartTime().hashCode();
    }
    if (hasEndTime()) {
      hash = (37 * hash) + END_TIME_FIELD_NUMBER;
      hash = (53 * hash) + getEndTime().hashCode();
    }
    if (hasAttributes()) {
      hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
      hash = (53 * hash) + getAttributes().hashCode();
    }
    if (hasStackTrace()) {
      hash = (37 * hash) + STACK_TRACE_FIELD_NUMBER;
      hash = (53 * hash) + getStackTrace().hashCode();
    }
    if (hasTimeEvents()) {
      hash = (37 * hash) + TIME_EVENTS_FIELD_NUMBER;
      hash = (53 * hash) + getTimeEvents().hashCode();
    }
    if (hasLinks()) {
      hash = (37 * hash) + LINKS_FIELD_NUMBER;
      hash = (53 * hash) + getLinks().hashCode();
    }
    if (hasStatus()) {
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + getStatus().hashCode();
    }
    if (hasSameProcessAsParentSpan()) {
      hash = (37 * hash) + SAME_PROCESS_AS_PARENT_SPAN_FIELD_NUMBER;
      hash = (53 * hash) + getSameProcessAsParentSpan().hashCode();
    }
    if (hasChildSpanCount()) {
      hash = (37 * hash) + CHILD_SPAN_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getChildSpanCount().hashCode();
    }
    hash = (37 * hash) + SPAN_KIND_FIELD_NUMBER;
    hash = (53 * hash) + spanKind_;
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }
<pre>
Optional. Distinguishes between spans generated in a particular context.
For example, two spans with the same name may be distinguished using
`CLIENT` (caller) and `SERVER` (callee) to identify an RPC call.
</pre>

<code>
.google.devtools.cloudtrace.v2.Span.SpanKind span_kind = 14 [(.google.api.field_behavior) = OPTIONAL];
</code>

@return The spanKind.
java-trace/proto-google-cloud-trace-v2/src/main/java/com/google/devtools/cloudtrace/v2/Span.java