File: artifacts\obj\Stress.TelemetryService\Debug\net8.0\opentelemetry\proto\trace\v1\Trace.cs
Project: src\playground\Stress\Stress.TelemetryService\Stress.TelemetryService.csproj (Stress.TelemetryService)
// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: opentelemetry/proto/trace/v1/trace.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace OpenTelemetry.Proto.Trace.V1 {

  /// <summary>Holder for reflection information generated from opentelemetry/proto/trace/v1/trace.proto</summary>
  public static partial class TraceReflection {

    #region Descriptor
    /// <summary>File descriptor for opentelemetry/proto/trace/v1/trace.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static TraceReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CihvcGVudGVsZW1ldHJ5L3Byb3RvL3RyYWNlL3YxL3RyYWNlLnByb3RvEhxv",
            "cGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxGipvcGVudGVsZW1ldHJ5L3By",
            "b3RvL2NvbW1vbi92MS9jb21tb24ucHJvdG8aLm9wZW50ZWxlbWV0cnkvcHJv",
            "dG8vcmVzb3VyY2UvdjEvcmVzb3VyY2UucHJvdG8iUQoKVHJhY2VzRGF0YRJD",
            "Cg5yZXNvdXJjZV9zcGFucxgBIAMoCzIrLm9wZW50ZWxlbWV0cnkucHJvdG8u",
            "dHJhY2UudjEuUmVzb3VyY2VTcGFucyKnAQoNUmVzb3VyY2VTcGFucxI7Cghy",
            "ZXNvdXJjZRgBIAEoCzIpLm9wZW50ZWxlbWV0cnkucHJvdG8ucmVzb3VyY2Uu",
            "djEuUmVzb3VyY2USPQoLc2NvcGVfc3BhbnMYAiADKAsyKC5vcGVudGVsZW1l",
            "dHJ5LnByb3RvLnRyYWNlLnYxLlNjb3BlU3BhbnMSEgoKc2NoZW1hX3VybBgD",
            "IAEoCUoGCOgHEOkHIpcBCgpTY29wZVNwYW5zEkIKBXNjb3BlGAEgASgLMjMu",
            "b3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuSW5zdHJ1bWVudGF0aW9u",
            "U2NvcGUSMQoFc3BhbnMYAiADKAsyIi5vcGVudGVsZW1ldHJ5LnByb3RvLnRy",
            "YWNlLnYxLlNwYW4SEgoKc2NoZW1hX3VybBgDIAEoCSLmBwoEU3BhbhIQCgh0",
            "cmFjZV9pZBgBIAEoDBIPCgdzcGFuX2lkGAIgASgMEhMKC3RyYWNlX3N0YXRl",
            "GAMgASgJEhYKDnBhcmVudF9zcGFuX2lkGAQgASgMEgwKBG5hbWUYBSABKAkS",
            "OQoEa2luZBgGIAEoDjIrLm9wZW50ZWxlbWV0cnkucHJvdG8udHJhY2UudjEu",
            "U3Bhbi5TcGFuS2luZBIcChRzdGFydF90aW1lX3VuaXhfbmFubxgHIAEoBhIa",
            "ChJlbmRfdGltZV91bml4X25hbm8YCCABKAYSOwoKYXR0cmlidXRlcxgJIAMo",
            "CzInLm9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxLktleVZhbHVlEiAK",
            "GGRyb3BwZWRfYXR0cmlidXRlc19jb3VudBgKIAEoDRI4CgZldmVudHMYCyAD",
            "KAsyKC5vcGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxLlNwYW4uRXZlbnQS",
            "HAoUZHJvcHBlZF9ldmVudHNfY291bnQYDCABKA0SNgoFbGlua3MYDSADKAsy",
            "Jy5vcGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxLlNwYW4uTGluaxIbChNk",
            "cm9wcGVkX2xpbmtzX2NvdW50GA4gASgNEjQKBnN0YXR1cxgPIAEoCzIkLm9w",
            "ZW50ZWxlbWV0cnkucHJvdG8udHJhY2UudjEuU3RhdHVzGowBCgVFdmVudBIW",
            "Cg50aW1lX3VuaXhfbmFubxgBIAEoBhIMCgRuYW1lGAIgASgJEjsKCmF0dHJp",
            "YnV0ZXMYAyADKAsyJy5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbW1vbi52MS5L",
            "ZXlWYWx1ZRIgChhkcm9wcGVkX2F0dHJpYnV0ZXNfY291bnQYBCABKA0anQEK",
            "BExpbmsSEAoIdHJhY2VfaWQYASABKAwSDwoHc3Bhbl9pZBgCIAEoDBITCgt0",
            "cmFjZV9zdGF0ZRgDIAEoCRI7CgphdHRyaWJ1dGVzGAQgAygLMicub3BlbnRl",
            "bGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWUSIAoYZHJvcHBlZF9h",
            "dHRyaWJ1dGVzX2NvdW50GAUgASgNIpkBCghTcGFuS2luZBIZChVTUEFOX0tJ",
            "TkRfVU5TUEVDSUZJRUQQABIWChJTUEFOX0tJTkRfSU5URVJOQUwQARIUChBT",
            "UEFOX0tJTkRfU0VSVkVSEAISFAoQU1BBTl9LSU5EX0NMSUVOVBADEhYKElNQ",
            "QU5fS0lORF9QUk9EVUNFUhAEEhYKElNQQU5fS0lORF9DT05TVU1FUhAFIq4B",
            "CgZTdGF0dXMSDwoHbWVzc2FnZRgCIAEoCRI9CgRjb2RlGAMgASgOMi8ub3Bl",
            "bnRlbGVtZXRyeS5wcm90by50cmFjZS52MS5TdGF0dXMuU3RhdHVzQ29kZSJO",
            "CgpTdGF0dXNDb2RlEhUKEVNUQVRVU19DT0RFX1VOU0VUEAASEgoOU1RBVFVT",
            "X0NPREVfT0sQARIVChFTVEFUVVNfQ09ERV9FUlJPUhACSgQIARACQncKH2lv",
            "Lm9wZW50ZWxlbWV0cnkucHJvdG8udHJhY2UudjFCClRyYWNlUHJvdG9QAVon",
            "Z28ub3BlbnRlbGVtZXRyeS5pby9wcm90by9vdGxwL3RyYWNlL3YxqgIcT3Bl",
            "blRlbGVtZXRyeS5Qcm90by5UcmFjZS5WMWIGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::OpenTelemetry.Proto.Common.V1.CommonReflection.Descriptor, global::OpenTelemetry.Proto.Resource.V1.ResourceReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenTelemetry.Proto.Trace.V1.TracesData), global::OpenTelemetry.Proto.Trace.V1.TracesData.Parser, new[]{ "ResourceSpans" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenTelemetry.Proto.Trace.V1.ResourceSpans), global::OpenTelemetry.Proto.Trace.V1.ResourceSpans.Parser, new[]{ "Resource", "ScopeSpans", "SchemaUrl" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenTelemetry.Proto.Trace.V1.ScopeSpans), global::OpenTelemetry.Proto.Trace.V1.ScopeSpans.Parser, new[]{ "Scope", "Spans", "SchemaUrl" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenTelemetry.Proto.Trace.V1.Span), global::OpenTelemetry.Proto.Trace.V1.Span.Parser, new[]{ "TraceId", "SpanId", "TraceState", "ParentSpanId", "Name", "Kind", "StartTimeUnixNano", "EndTimeUnixNano", "Attributes", "DroppedAttributesCount", "Events", "DroppedEventsCount", "Links", "DroppedLinksCount", "Status" }, null, new[]{ typeof(global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::OpenTelemetry.Proto.Trace.V1.Span.Types.Event), global::OpenTelemetry.Proto.Trace.V1.Span.Types.Event.Parser, new[]{ "TimeUnixNano", "Name", "Attributes", "DroppedAttributesCount" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenTelemetry.Proto.Trace.V1.Span.Types.Link), global::OpenTelemetry.Proto.Trace.V1.Span.Types.Link.Parser, new[]{ "TraceId", "SpanId", "TraceState", "Attributes", "DroppedAttributesCount" }, null, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::OpenTelemetry.Proto.Trace.V1.Status), global::OpenTelemetry.Proto.Trace.V1.Status.Parser, new[]{ "Message", "Code" }, null, new[]{ typeof(global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode) }, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  /// TracesData represents the traces data that can be stored in a persistent storage,
  /// OR can be embedded by other protocols that transfer OTLP traces data but do
  /// not implement the OTLP protocol.
  ///
  /// The main difference between this message and collector protocol is that
  /// in this message there will not be any "control" or "metadata" specific to
  /// OTLP protocol.
  ///
  /// When new fields are added into this message, the OTLP request MUST be updated
  /// as well.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class TracesData : pb::IMessage<TracesData>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TracesData> _parser = new pb::MessageParser<TracesData>(() => new TracesData());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TracesData> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenTelemetry.Proto.Trace.V1.TraceReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TracesData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TracesData(TracesData other) : this() {
      resourceSpans_ = other.resourceSpans_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TracesData Clone() {
      return new TracesData(this);
    }

    /// <summary>Field number for the "resource_spans" field.</summary>
    public const int ResourceSpansFieldNumber = 1;
    private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Trace.V1.ResourceSpans> _repeated_resourceSpans_codec
        = pb::FieldCodec.ForMessage(10, global::OpenTelemetry.Proto.Trace.V1.ResourceSpans.Parser);
    private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.ResourceSpans> resourceSpans_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.ResourceSpans>();
    /// <summary>
    /// An array of ResourceSpans.
    /// For data coming from a single resource this array will typically contain
    /// one element. Intermediary nodes that receive data from multiple origins
    /// typically batch the data before forwarding further and in that case this
    /// array will contain multiple elements.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.ResourceSpans> ResourceSpans {
      get { return resourceSpans_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TracesData);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TracesData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!resourceSpans_.Equals(other.resourceSpans_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= resourceSpans_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      resourceSpans_.WriteTo(output, _repeated_resourceSpans_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      resourceSpans_.WriteTo(ref output, _repeated_resourceSpans_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += resourceSpans_.CalculateSize(_repeated_resourceSpans_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TracesData other) {
      if (other == null) {
        return;
      }
      resourceSpans_.Add(other.resourceSpans_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            resourceSpans_.AddEntriesFrom(input, _repeated_resourceSpans_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            resourceSpans_.AddEntriesFrom(ref input, _repeated_resourceSpans_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// A collection of ScopeSpans from a Resource.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ResourceSpans : pb::IMessage<ResourceSpans>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ResourceSpans> _parser = new pb::MessageParser<ResourceSpans>(() => new ResourceSpans());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ResourceSpans> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenTelemetry.Proto.Trace.V1.TraceReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResourceSpans() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResourceSpans(ResourceSpans other) : this() {
      resource_ = other.resource_ != null ? other.resource_.Clone() : null;
      scopeSpans_ = other.scopeSpans_.Clone();
      schemaUrl_ = other.schemaUrl_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ResourceSpans Clone() {
      return new ResourceSpans(this);
    }

    /// <summary>Field number for the "resource" field.</summary>
    public const int ResourceFieldNumber = 1;
    private global::OpenTelemetry.Proto.Resource.V1.Resource resource_;
    /// <summary>
    /// The resource for the spans in this message.
    /// If this field is not set then no resource info is known.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::OpenTelemetry.Proto.Resource.V1.Resource Resource {
      get { return resource_; }
      set {
        resource_ = value;
      }
    }

    /// <summary>Field number for the "scope_spans" field.</summary>
    public const int ScopeSpansFieldNumber = 2;
    private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Trace.V1.ScopeSpans> _repeated_scopeSpans_codec
        = pb::FieldCodec.ForMessage(18, global::OpenTelemetry.Proto.Trace.V1.ScopeSpans.Parser);
    private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.ScopeSpans> scopeSpans_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.ScopeSpans>();
    /// <summary>
    /// A list of ScopeSpans that originate from a resource.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.ScopeSpans> ScopeSpans {
      get { return scopeSpans_; }
    }

    /// <summary>Field number for the "schema_url" field.</summary>
    public const int SchemaUrlFieldNumber = 3;
    private string schemaUrl_ = "";
    /// <summary>
    /// This schema_url applies to the data in the "resource" field. It does not apply
    /// to the data in the "scope_spans" field which have their own schema_url field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SchemaUrl {
      get { return schemaUrl_; }
      set {
        schemaUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ResourceSpans);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ResourceSpans other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Resource, other.Resource)) return false;
      if(!scopeSpans_.Equals(other.scopeSpans_)) return false;
      if (SchemaUrl != other.SchemaUrl) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (resource_ != null) hash ^= Resource.GetHashCode();
      hash ^= scopeSpans_.GetHashCode();
      if (SchemaUrl.Length != 0) hash ^= SchemaUrl.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (resource_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Resource);
      }
      scopeSpans_.WriteTo(output, _repeated_scopeSpans_codec);
      if (SchemaUrl.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SchemaUrl);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (resource_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Resource);
      }
      scopeSpans_.WriteTo(ref output, _repeated_scopeSpans_codec);
      if (SchemaUrl.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SchemaUrl);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (resource_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Resource);
      }
      size += scopeSpans_.CalculateSize(_repeated_scopeSpans_codec);
      if (SchemaUrl.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SchemaUrl);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ResourceSpans other) {
      if (other == null) {
        return;
      }
      if (other.resource_ != null) {
        if (resource_ == null) {
          Resource = new global::OpenTelemetry.Proto.Resource.V1.Resource();
        }
        Resource.MergeFrom(other.Resource);
      }
      scopeSpans_.Add(other.scopeSpans_);
      if (other.SchemaUrl.Length != 0) {
        SchemaUrl = other.SchemaUrl;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (resource_ == null) {
              Resource = new global::OpenTelemetry.Proto.Resource.V1.Resource();
            }
            input.ReadMessage(Resource);
            break;
          }
          case 18: {
            scopeSpans_.AddEntriesFrom(input, _repeated_scopeSpans_codec);
            break;
          }
          case 26: {
            SchemaUrl = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (resource_ == null) {
              Resource = new global::OpenTelemetry.Proto.Resource.V1.Resource();
            }
            input.ReadMessage(Resource);
            break;
          }
          case 18: {
            scopeSpans_.AddEntriesFrom(ref input, _repeated_scopeSpans_codec);
            break;
          }
          case 26: {
            SchemaUrl = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// A collection of Spans produced by an InstrumentationScope.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ScopeSpans : pb::IMessage<ScopeSpans>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ScopeSpans> _parser = new pb::MessageParser<ScopeSpans>(() => new ScopeSpans());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ScopeSpans> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenTelemetry.Proto.Trace.V1.TraceReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ScopeSpans() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ScopeSpans(ScopeSpans other) : this() {
      scope_ = other.scope_ != null ? other.scope_.Clone() : null;
      spans_ = other.spans_.Clone();
      schemaUrl_ = other.schemaUrl_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ScopeSpans Clone() {
      return new ScopeSpans(this);
    }

    /// <summary>Field number for the "scope" field.</summary>
    public const int ScopeFieldNumber = 1;
    private global::OpenTelemetry.Proto.Common.V1.InstrumentationScope scope_;
    /// <summary>
    /// The instrumentation scope information for the spans in this message.
    /// Semantically when InstrumentationScope isn't set, it is equivalent with
    /// an empty instrumentation scope name (unknown).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::OpenTelemetry.Proto.Common.V1.InstrumentationScope Scope {
      get { return scope_; }
      set {
        scope_ = value;
      }
    }

    /// <summary>Field number for the "spans" field.</summary>
    public const int SpansFieldNumber = 2;
    private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Trace.V1.Span> _repeated_spans_codec
        = pb::FieldCodec.ForMessage(18, global::OpenTelemetry.Proto.Trace.V1.Span.Parser);
    private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span> spans_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span>();
    /// <summary>
    /// A list of Spans that originate from an instrumentation scope.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span> Spans {
      get { return spans_; }
    }

    /// <summary>Field number for the "schema_url" field.</summary>
    public const int SchemaUrlFieldNumber = 3;
    private string schemaUrl_ = "";
    /// <summary>
    /// This schema_url applies to all spans and span events in the "spans" field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SchemaUrl {
      get { return schemaUrl_; }
      set {
        schemaUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ScopeSpans);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ScopeSpans other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Scope, other.Scope)) return false;
      if(!spans_.Equals(other.spans_)) return false;
      if (SchemaUrl != other.SchemaUrl) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (scope_ != null) hash ^= Scope.GetHashCode();
      hash ^= spans_.GetHashCode();
      if (SchemaUrl.Length != 0) hash ^= SchemaUrl.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (scope_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Scope);
      }
      spans_.WriteTo(output, _repeated_spans_codec);
      if (SchemaUrl.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SchemaUrl);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (scope_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Scope);
      }
      spans_.WriteTo(ref output, _repeated_spans_codec);
      if (SchemaUrl.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SchemaUrl);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (scope_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Scope);
      }
      size += spans_.CalculateSize(_repeated_spans_codec);
      if (SchemaUrl.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SchemaUrl);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ScopeSpans other) {
      if (other == null) {
        return;
      }
      if (other.scope_ != null) {
        if (scope_ == null) {
          Scope = new global::OpenTelemetry.Proto.Common.V1.InstrumentationScope();
        }
        Scope.MergeFrom(other.Scope);
      }
      spans_.Add(other.spans_);
      if (other.SchemaUrl.Length != 0) {
        SchemaUrl = other.SchemaUrl;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (scope_ == null) {
              Scope = new global::OpenTelemetry.Proto.Common.V1.InstrumentationScope();
            }
            input.ReadMessage(Scope);
            break;
          }
          case 18: {
            spans_.AddEntriesFrom(input, _repeated_spans_codec);
            break;
          }
          case 26: {
            SchemaUrl = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (scope_ == null) {
              Scope = new global::OpenTelemetry.Proto.Common.V1.InstrumentationScope();
            }
            input.ReadMessage(Scope);
            break;
          }
          case 18: {
            spans_.AddEntriesFrom(ref input, _repeated_spans_codec);
            break;
          }
          case 26: {
            SchemaUrl = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// A Span represents a single operation performed by a single component of the system.
  ///
  /// The next available field id is 17.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class Span : pb::IMessage<Span>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Span> _parser = new pb::MessageParser<Span>(() => new Span());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Span> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenTelemetry.Proto.Trace.V1.TraceReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Span() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Span(Span other) : this() {
      traceId_ = other.traceId_;
      spanId_ = other.spanId_;
      traceState_ = other.traceState_;
      parentSpanId_ = other.parentSpanId_;
      name_ = other.name_;
      kind_ = other.kind_;
      startTimeUnixNano_ = other.startTimeUnixNano_;
      endTimeUnixNano_ = other.endTimeUnixNano_;
      attributes_ = other.attributes_.Clone();
      droppedAttributesCount_ = other.droppedAttributesCount_;
      events_ = other.events_.Clone();
      droppedEventsCount_ = other.droppedEventsCount_;
      links_ = other.links_.Clone();
      droppedLinksCount_ = other.droppedLinksCount_;
      status_ = other.status_ != null ? other.status_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Span Clone() {
      return new Span(this);
    }

    /// <summary>Field number for the "trace_id" field.</summary>
    public const int TraceIdFieldNumber = 1;
    private pb::ByteString traceId_ = pb::ByteString.Empty;
    /// <summary>
    /// A unique identifier for a trace. All spans from the same trace share
    /// the same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR
    /// of length other than 16 bytes is considered invalid (empty string in OTLP/JSON
    /// is zero-length and thus is also invalid).
    ///
    /// This field is required.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString TraceId {
      get { return traceId_; }
      set {
        traceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "span_id" field.</summary>
    public const int SpanIdFieldNumber = 2;
    private pb::ByteString spanId_ = pb::ByteString.Empty;
    /// <summary>
    /// A unique identifier for a span within a trace, assigned when the span
    /// is created. The ID is an 8-byte array. An ID with all zeroes OR of length
    /// other than 8 bytes is considered invalid (empty string in OTLP/JSON
    /// is zero-length and thus is also invalid).
    ///
    /// This field is required.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString SpanId {
      get { return spanId_; }
      set {
        spanId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "trace_state" field.</summary>
    public const int TraceStateFieldNumber = 3;
    private string traceState_ = "";
    /// <summary>
    /// trace_state conveys information about request position in multiple distributed tracing graphs.
    /// It is a trace_state in w3c-trace-context format: https://www.w3.org/TR/trace-context/#tracestate-header
    /// See also https://github.com/w3c/distributed-tracing for more details about this field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TraceState {
      get { return traceState_; }
      set {
        traceState_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "parent_span_id" field.</summary>
    public const int ParentSpanIdFieldNumber = 4;
    private pb::ByteString parentSpanId_ = pb::ByteString.Empty;
    /// <summary>
    /// The `span_id` of this span's parent span. If this is a root span, then this
    /// field must be empty. The ID is an 8-byte array.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString ParentSpanId {
      get { return parentSpanId_; }
      set {
        parentSpanId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 5;
    private string name_ = "";
    /// <summary>
    /// A description of the span's operation.
    ///
    /// For example, the name can be a qualified method name or a file name
    /// and a line number where the operation is called. A best practice is to use
    /// the same display name at the same call point in an application.
    /// This makes it easier to correlate spans in different traces.
    ///
    /// This field is semantically required to be set to non-empty string.
    /// Empty value is equivalent to an unknown span name.
    ///
    /// This field is required.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "kind" field.</summary>
    public const int KindFieldNumber = 6;
    private global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind kind_ = global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind.Unspecified;
    /// <summary>
    /// 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 queueing latency associated with the span.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind Kind {
      get { return kind_; }
      set {
        kind_ = value;
      }
    }

    /// <summary>Field number for the "start_time_unix_nano" field.</summary>
    public const int StartTimeUnixNanoFieldNumber = 7;
    private ulong startTimeUnixNano_;
    /// <summary>
    /// start_time_unix_nano is the start time of the span. On the client side, this is the time
    /// kept by the local machine where the span execution starts. On the server side, this
    /// is the time when the server's application handler starts running.
    /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970.
    ///
    /// This field is semantically required and it is expected that end_time >= start_time.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong StartTimeUnixNano {
      get { return startTimeUnixNano_; }
      set {
        startTimeUnixNano_ = value;
      }
    }

    /// <summary>Field number for the "end_time_unix_nano" field.</summary>
    public const int EndTimeUnixNanoFieldNumber = 8;
    private ulong endTimeUnixNano_;
    /// <summary>
    /// end_time_unix_nano is the end time of the span. On the client side, this is the time
    /// kept by the local machine where the span execution ends. On the server side, this
    /// is the time when the server application handler stops running.
    /// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970.
    ///
    /// This field is semantically required and it is expected that end_time >= start_time.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong EndTimeUnixNano {
      get { return endTimeUnixNano_; }
      set {
        endTimeUnixNano_ = value;
      }
    }

    /// <summary>Field number for the "attributes" field.</summary>
    public const int AttributesFieldNumber = 9;
    private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Common.V1.KeyValue> _repeated_attributes_codec
        = pb::FieldCodec.ForMessage(74, global::OpenTelemetry.Proto.Common.V1.KeyValue.Parser);
    private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue> attributes_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue>();
    /// <summary>
    /// attributes is a collection of key/value pairs. Note, global attributes
    /// like server name can be set using the resource API. Examples of attributes:
    ///
    ///     "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
    ///     "/http/server_latency": 300
    ///     "example.com/myattribute": true
    ///     "example.com/score": 10.239
    ///
    /// The OpenTelemetry API specification further restricts the allowed value types:
    /// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute
    /// Attribute keys MUST be unique (it is not allowed to have more than one
    /// attribute with the same key).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue> Attributes {
      get { return attributes_; }
    }

    /// <summary>Field number for the "dropped_attributes_count" field.</summary>
    public const int DroppedAttributesCountFieldNumber = 10;
    private uint droppedAttributesCount_;
    /// <summary>
    /// dropped_attributes_count is the number of attributes that were discarded. Attributes
    /// can be discarded because their keys are too long or because there are too many
    /// attributes. If this value is 0, then no attributes were dropped.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint DroppedAttributesCount {
      get { return droppedAttributesCount_; }
      set {
        droppedAttributesCount_ = value;
      }
    }

    /// <summary>Field number for the "events" field.</summary>
    public const int EventsFieldNumber = 11;
    private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Event> _repeated_events_codec
        = pb::FieldCodec.ForMessage(90, global::OpenTelemetry.Proto.Trace.V1.Span.Types.Event.Parser);
    private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Event> events_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Event>();
    /// <summary>
    /// events is a collection of Event items.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Event> Events {
      get { return events_; }
    }

    /// <summary>Field number for the "dropped_events_count" field.</summary>
    public const int DroppedEventsCountFieldNumber = 12;
    private uint droppedEventsCount_;
    /// <summary>
    /// dropped_events_count is the number of dropped events. If the value is 0, then no
    /// events were dropped.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint DroppedEventsCount {
      get { return droppedEventsCount_; }
      set {
        droppedEventsCount_ = value;
      }
    }

    /// <summary>Field number for the "links" field.</summary>
    public const int LinksFieldNumber = 13;
    private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Link> _repeated_links_codec
        = pb::FieldCodec.ForMessage(106, global::OpenTelemetry.Proto.Trace.V1.Span.Types.Link.Parser);
    private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Link> links_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Link>();
    /// <summary>
    /// links is a collection of Links, which are references from this span to a span
    /// in the same or different trace.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::OpenTelemetry.Proto.Trace.V1.Span.Types.Link> Links {
      get { return links_; }
    }

    /// <summary>Field number for the "dropped_links_count" field.</summary>
    public const int DroppedLinksCountFieldNumber = 14;
    private uint droppedLinksCount_;
    /// <summary>
    /// dropped_links_count is the number of dropped links after the maximum size was
    /// enforced. If this value is 0, then no links were dropped.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint DroppedLinksCount {
      get { return droppedLinksCount_; }
      set {
        droppedLinksCount_ = value;
      }
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 15;
    private global::OpenTelemetry.Proto.Trace.V1.Status status_;
    /// <summary>
    /// An optional final status for this span. Semantically when Status isn't set, it means
    /// span's status code is unset, i.e. assume STATUS_CODE_UNSET (code = 0).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::OpenTelemetry.Proto.Trace.V1.Status Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Span);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Span other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TraceId != other.TraceId) return false;
      if (SpanId != other.SpanId) return false;
      if (TraceState != other.TraceState) return false;
      if (ParentSpanId != other.ParentSpanId) return false;
      if (Name != other.Name) return false;
      if (Kind != other.Kind) return false;
      if (StartTimeUnixNano != other.StartTimeUnixNano) return false;
      if (EndTimeUnixNano != other.EndTimeUnixNano) return false;
      if(!attributes_.Equals(other.attributes_)) return false;
      if (DroppedAttributesCount != other.DroppedAttributesCount) return false;
      if(!events_.Equals(other.events_)) return false;
      if (DroppedEventsCount != other.DroppedEventsCount) return false;
      if(!links_.Equals(other.links_)) return false;
      if (DroppedLinksCount != other.DroppedLinksCount) return false;
      if (!object.Equals(Status, other.Status)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (TraceId.Length != 0) hash ^= TraceId.GetHashCode();
      if (SpanId.Length != 0) hash ^= SpanId.GetHashCode();
      if (TraceState.Length != 0) hash ^= TraceState.GetHashCode();
      if (ParentSpanId.Length != 0) hash ^= ParentSpanId.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Kind != global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind.Unspecified) hash ^= Kind.GetHashCode();
      if (StartTimeUnixNano != 0UL) hash ^= StartTimeUnixNano.GetHashCode();
      if (EndTimeUnixNano != 0UL) hash ^= EndTimeUnixNano.GetHashCode();
      hash ^= attributes_.GetHashCode();
      if (DroppedAttributesCount != 0) hash ^= DroppedAttributesCount.GetHashCode();
      hash ^= events_.GetHashCode();
      if (DroppedEventsCount != 0) hash ^= DroppedEventsCount.GetHashCode();
      hash ^= links_.GetHashCode();
      if (DroppedLinksCount != 0) hash ^= DroppedLinksCount.GetHashCode();
      if (status_ != null) hash ^= Status.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (TraceId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(TraceId);
      }
      if (SpanId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(SpanId);
      }
      if (TraceState.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(TraceState);
      }
      if (ParentSpanId.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(ParentSpanId);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Name);
      }
      if (Kind != global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind.Unspecified) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Kind);
      }
      if (StartTimeUnixNano != 0UL) {
        output.WriteRawTag(57);
        output.WriteFixed64(StartTimeUnixNano);
      }
      if (EndTimeUnixNano != 0UL) {
        output.WriteRawTag(65);
        output.WriteFixed64(EndTimeUnixNano);
      }
      attributes_.WriteTo(output, _repeated_attributes_codec);
      if (DroppedAttributesCount != 0) {
        output.WriteRawTag(80);
        output.WriteUInt32(DroppedAttributesCount);
      }
      events_.WriteTo(output, _repeated_events_codec);
      if (DroppedEventsCount != 0) {
        output.WriteRawTag(96);
        output.WriteUInt32(DroppedEventsCount);
      }
      links_.WriteTo(output, _repeated_links_codec);
      if (DroppedLinksCount != 0) {
        output.WriteRawTag(112);
        output.WriteUInt32(DroppedLinksCount);
      }
      if (status_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (TraceId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(TraceId);
      }
      if (SpanId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(SpanId);
      }
      if (TraceState.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(TraceState);
      }
      if (ParentSpanId.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(ParentSpanId);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Name);
      }
      if (Kind != global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind.Unspecified) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Kind);
      }
      if (StartTimeUnixNano != 0UL) {
        output.WriteRawTag(57);
        output.WriteFixed64(StartTimeUnixNano);
      }
      if (EndTimeUnixNano != 0UL) {
        output.WriteRawTag(65);
        output.WriteFixed64(EndTimeUnixNano);
      }
      attributes_.WriteTo(ref output, _repeated_attributes_codec);
      if (DroppedAttributesCount != 0) {
        output.WriteRawTag(80);
        output.WriteUInt32(DroppedAttributesCount);
      }
      events_.WriteTo(ref output, _repeated_events_codec);
      if (DroppedEventsCount != 0) {
        output.WriteRawTag(96);
        output.WriteUInt32(DroppedEventsCount);
      }
      links_.WriteTo(ref output, _repeated_links_codec);
      if (DroppedLinksCount != 0) {
        output.WriteRawTag(112);
        output.WriteUInt32(DroppedLinksCount);
      }
      if (status_ != null) {
        output.WriteRawTag(122);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (TraceId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(TraceId);
      }
      if (SpanId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(SpanId);
      }
      if (TraceState.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TraceState);
      }
      if (ParentSpanId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(ParentSpanId);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Kind != global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
      }
      if (StartTimeUnixNano != 0UL) {
        size += 1 + 8;
      }
      if (EndTimeUnixNano != 0UL) {
        size += 1 + 8;
      }
      size += attributes_.CalculateSize(_repeated_attributes_codec);
      if (DroppedAttributesCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DroppedAttributesCount);
      }
      size += events_.CalculateSize(_repeated_events_codec);
      if (DroppedEventsCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DroppedEventsCount);
      }
      size += links_.CalculateSize(_repeated_links_codec);
      if (DroppedLinksCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DroppedLinksCount);
      }
      if (status_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Status);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Span other) {
      if (other == null) {
        return;
      }
      if (other.TraceId.Length != 0) {
        TraceId = other.TraceId;
      }
      if (other.SpanId.Length != 0) {
        SpanId = other.SpanId;
      }
      if (other.TraceState.Length != 0) {
        TraceState = other.TraceState;
      }
      if (other.ParentSpanId.Length != 0) {
        ParentSpanId = other.ParentSpanId;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Kind != global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind.Unspecified) {
        Kind = other.Kind;
      }
      if (other.StartTimeUnixNano != 0UL) {
        StartTimeUnixNano = other.StartTimeUnixNano;
      }
      if (other.EndTimeUnixNano != 0UL) {
        EndTimeUnixNano = other.EndTimeUnixNano;
      }
      attributes_.Add(other.attributes_);
      if (other.DroppedAttributesCount != 0) {
        DroppedAttributesCount = other.DroppedAttributesCount;
      }
      events_.Add(other.events_);
      if (other.DroppedEventsCount != 0) {
        DroppedEventsCount = other.DroppedEventsCount;
      }
      links_.Add(other.links_);
      if (other.DroppedLinksCount != 0) {
        DroppedLinksCount = other.DroppedLinksCount;
      }
      if (other.status_ != null) {
        if (status_ == null) {
          Status = new global::OpenTelemetry.Proto.Trace.V1.Status();
        }
        Status.MergeFrom(other.Status);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            TraceId = input.ReadBytes();
            break;
          }
          case 18: {
            SpanId = input.ReadBytes();
            break;
          }
          case 26: {
            TraceState = input.ReadString();
            break;
          }
          case 34: {
            ParentSpanId = input.ReadBytes();
            break;
          }
          case 42: {
            Name = input.ReadString();
            break;
          }
          case 48: {
            Kind = (global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind) input.ReadEnum();
            break;
          }
          case 57: {
            StartTimeUnixNano = input.ReadFixed64();
            break;
          }
          case 65: {
            EndTimeUnixNano = input.ReadFixed64();
            break;
          }
          case 74: {
            attributes_.AddEntriesFrom(input, _repeated_attributes_codec);
            break;
          }
          case 80: {
            DroppedAttributesCount = input.ReadUInt32();
            break;
          }
          case 90: {
            events_.AddEntriesFrom(input, _repeated_events_codec);
            break;
          }
          case 96: {
            DroppedEventsCount = input.ReadUInt32();
            break;
          }
          case 106: {
            links_.AddEntriesFrom(input, _repeated_links_codec);
            break;
          }
          case 112: {
            DroppedLinksCount = input.ReadUInt32();
            break;
          }
          case 122: {
            if (status_ == null) {
              Status = new global::OpenTelemetry.Proto.Trace.V1.Status();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            TraceId = input.ReadBytes();
            break;
          }
          case 18: {
            SpanId = input.ReadBytes();
            break;
          }
          case 26: {
            TraceState = input.ReadString();
            break;
          }
          case 34: {
            ParentSpanId = input.ReadBytes();
            break;
          }
          case 42: {
            Name = input.ReadString();
            break;
          }
          case 48: {
            Kind = (global::OpenTelemetry.Proto.Trace.V1.Span.Types.SpanKind) input.ReadEnum();
            break;
          }
          case 57: {
            StartTimeUnixNano = input.ReadFixed64();
            break;
          }
          case 65: {
            EndTimeUnixNano = input.ReadFixed64();
            break;
          }
          case 74: {
            attributes_.AddEntriesFrom(ref input, _repeated_attributes_codec);
            break;
          }
          case 80: {
            DroppedAttributesCount = input.ReadUInt32();
            break;
          }
          case 90: {
            events_.AddEntriesFrom(ref input, _repeated_events_codec);
            break;
          }
          case 96: {
            DroppedEventsCount = input.ReadUInt32();
            break;
          }
          case 106: {
            links_.AddEntriesFrom(ref input, _repeated_links_codec);
            break;
          }
          case 112: {
            DroppedLinksCount = input.ReadUInt32();
            break;
          }
          case 122: {
            if (status_ == null) {
              Status = new global::OpenTelemetry.Proto.Trace.V1.Status();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the Span message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      /// <summary>
      /// SpanKind is the type of span. Can be used to specify additional relationships between spans
      /// in addition to a parent/child relationship.
      /// </summary>
      public enum SpanKind {
        /// <summary>
        /// Unspecified. Do NOT use as default.
        /// Implementations MAY assume SpanKind to be INTERNAL when receiving UNSPECIFIED.
        /// </summary>
        [pbr::OriginalName("SPAN_KIND_UNSPECIFIED")] Unspecified = 0,
        /// <summary>
        /// Indicates that the span represents an internal operation within an application,
        /// as opposed to an operation happening at the boundaries. Default value.
        /// </summary>
        [pbr::OriginalName("SPAN_KIND_INTERNAL")] Internal = 1,
        /// <summary>
        /// Indicates that the span covers server-side handling of an RPC or other
        /// remote network request.
        /// </summary>
        [pbr::OriginalName("SPAN_KIND_SERVER")] Server = 2,
        /// <summary>
        /// Indicates that the span describes a request to some remote service.
        /// </summary>
        [pbr::OriginalName("SPAN_KIND_CLIENT")] Client = 3,
        /// <summary>
        /// Indicates that the span describes a producer sending a message to a broker.
        /// Unlike CLIENT and SERVER, there is often no direct critical path latency relationship
        /// between producer and consumer spans. A PRODUCER span ends when the message was accepted
        /// by the broker while the logical processing of the message might span a much longer time.
        /// </summary>
        [pbr::OriginalName("SPAN_KIND_PRODUCER")] Producer = 4,
        /// <summary>
        /// Indicates that the span describes consumer receiving a message from a broker.
        /// Like the PRODUCER kind, there is often no direct critical path latency relationship
        /// between producer and consumer spans.
        /// </summary>
        [pbr::OriginalName("SPAN_KIND_CONSUMER")] Consumer = 5,
      }

      /// <summary>
      /// Event is a time-stamped annotation of the span, consisting of user-supplied
      /// text description and key-value pairs.
      /// </summary>
      [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
      public sealed partial class Event : pb::IMessage<Event>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<Event> _parser = new pb::MessageParser<Event>(() => new Event());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<Event> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::OpenTelemetry.Proto.Trace.V1.Span.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Event() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Event(Event other) : this() {
          timeUnixNano_ = other.timeUnixNano_;
          name_ = other.name_;
          attributes_ = other.attributes_.Clone();
          droppedAttributesCount_ = other.droppedAttributesCount_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Event Clone() {
          return new Event(this);
        }

        /// <summary>Field number for the "time_unix_nano" field.</summary>
        public const int TimeUnixNanoFieldNumber = 1;
        private ulong timeUnixNano_;
        /// <summary>
        /// time_unix_nano is the time the event occurred.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public ulong TimeUnixNano {
          get { return timeUnixNano_; }
          set {
            timeUnixNano_ = value;
          }
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 2;
        private string name_ = "";
        /// <summary>
        /// name of the event.
        /// This field is semantically required to be set to non-empty string.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "attributes" field.</summary>
        public const int AttributesFieldNumber = 3;
        private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Common.V1.KeyValue> _repeated_attributes_codec
            = pb::FieldCodec.ForMessage(26, global::OpenTelemetry.Proto.Common.V1.KeyValue.Parser);
        private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue> attributes_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue>();
        /// <summary>
        /// attributes is a collection of attribute key/value pairs on the event.
        /// Attribute keys MUST be unique (it is not allowed to have more than one
        /// attribute with the same key).
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue> Attributes {
          get { return attributes_; }
        }

        /// <summary>Field number for the "dropped_attributes_count" field.</summary>
        public const int DroppedAttributesCountFieldNumber = 4;
        private uint droppedAttributesCount_;
        /// <summary>
        /// dropped_attributes_count is the number of dropped attributes. If the value is 0,
        /// then no attributes were dropped.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint DroppedAttributesCount {
          get { return droppedAttributesCount_; }
          set {
            droppedAttributesCount_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override bool Equals(object other) {
          return Equals(other as Event);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(Event other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (TimeUnixNano != other.TimeUnixNano) return false;
          if (Name != other.Name) return false;
          if(!attributes_.Equals(other.attributes_)) return false;
          if (DroppedAttributesCount != other.DroppedAttributesCount) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override int GetHashCode() {
          int hash = 1;
          if (TimeUnixNano != 0UL) hash ^= TimeUnixNano.GetHashCode();
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          hash ^= attributes_.GetHashCode();
          if (DroppedAttributesCount != 0) hash ^= DroppedAttributesCount.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void WriteTo(pb::CodedOutputStream output) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          output.WriteRawMessage(this);
        #else
          if (TimeUnixNano != 0UL) {
            output.WriteRawTag(9);
            output.WriteFixed64(TimeUnixNano);
          }
          if (Name.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(Name);
          }
          attributes_.WriteTo(output, _repeated_attributes_codec);
          if (DroppedAttributesCount != 0) {
            output.WriteRawTag(32);
            output.WriteUInt32(DroppedAttributesCount);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
          if (TimeUnixNano != 0UL) {
            output.WriteRawTag(9);
            output.WriteFixed64(TimeUnixNano);
          }
          if (Name.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(Name);
          }
          attributes_.WriteTo(ref output, _repeated_attributes_codec);
          if (DroppedAttributesCount != 0) {
            output.WriteRawTag(32);
            output.WriteUInt32(DroppedAttributesCount);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(ref output);
          }
        }
        #endif

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int CalculateSize() {
          int size = 0;
          if (TimeUnixNano != 0UL) {
            size += 1 + 8;
          }
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          size += attributes_.CalculateSize(_repeated_attributes_codec);
          if (DroppedAttributesCount != 0) {
            size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DroppedAttributesCount);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(Event other) {
          if (other == null) {
            return;
          }
          if (other.TimeUnixNano != 0UL) {
            TimeUnixNano = other.TimeUnixNano;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          attributes_.Add(other.attributes_);
          if (other.DroppedAttributesCount != 0) {
            DroppedAttributesCount = other.DroppedAttributesCount;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(pb::CodedInputStream input) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          input.ReadRawMessage(this);
        #else
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
          if ((tag & 7) == 4) {
            // Abort on any end group tag.
            return;
          }
          switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 9: {
                TimeUnixNano = input.ReadFixed64();
                break;
              }
              case 18: {
                Name = input.ReadString();
                break;
              }
              case 26: {
                attributes_.AddEntriesFrom(input, _repeated_attributes_codec);
                break;
              }
              case 32: {
                DroppedAttributesCount = input.ReadUInt32();
                break;
              }
            }
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
          if ((tag & 7) == 4) {
            // Abort on any end group tag.
            return;
          }
          switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 9: {
                TimeUnixNano = input.ReadFixed64();
                break;
              }
              case 18: {
                Name = input.ReadString();
                break;
              }
              case 26: {
                attributes_.AddEntriesFrom(ref input, _repeated_attributes_codec);
                break;
              }
              case 32: {
                DroppedAttributesCount = input.ReadUInt32();
                break;
              }
            }
          }
        }
        #endif

      }

      /// <summary>
      /// A pointer from the current span to another span in the same trace or in a
      /// different trace. For example, this can be used in batching operations,
      /// where a single batch handler processes multiple requests from different
      /// traces or when the handler receives a request from a different project.
      /// </summary>
      [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
      public sealed partial class Link : pb::IMessage<Link>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<Link> _parser = new pb::MessageParser<Link>(() => new Link());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<Link> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::OpenTelemetry.Proto.Trace.V1.Span.Descriptor.NestedTypes[1]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Link() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Link(Link other) : this() {
          traceId_ = other.traceId_;
          spanId_ = other.spanId_;
          traceState_ = other.traceState_;
          attributes_ = other.attributes_.Clone();
          droppedAttributesCount_ = other.droppedAttributesCount_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Link Clone() {
          return new Link(this);
        }

        /// <summary>Field number for the "trace_id" field.</summary>
        public const int TraceIdFieldNumber = 1;
        private pb::ByteString traceId_ = pb::ByteString.Empty;
        /// <summary>
        /// A unique identifier of a trace that this linked span is part of. The ID is a
        /// 16-byte array.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public pb::ByteString TraceId {
          get { return traceId_; }
          set {
            traceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "span_id" field.</summary>
        public const int SpanIdFieldNumber = 2;
        private pb::ByteString spanId_ = pb::ByteString.Empty;
        /// <summary>
        /// A unique identifier for the linked span. The ID is an 8-byte array.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public pb::ByteString SpanId {
          get { return spanId_; }
          set {
            spanId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "trace_state" field.</summary>
        public const int TraceStateFieldNumber = 3;
        private string traceState_ = "";
        /// <summary>
        /// The trace_state associated with the link.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public string TraceState {
          get { return traceState_; }
          set {
            traceState_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "attributes" field.</summary>
        public const int AttributesFieldNumber = 4;
        private static readonly pb::FieldCodec<global::OpenTelemetry.Proto.Common.V1.KeyValue> _repeated_attributes_codec
            = pb::FieldCodec.ForMessage(34, global::OpenTelemetry.Proto.Common.V1.KeyValue.Parser);
        private readonly pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue> attributes_ = new pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue>();
        /// <summary>
        /// attributes is a collection of attribute key/value pairs on the link.
        /// Attribute keys MUST be unique (it is not allowed to have more than one
        /// attribute with the same key).
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public pbc::RepeatedField<global::OpenTelemetry.Proto.Common.V1.KeyValue> Attributes {
          get { return attributes_; }
        }

        /// <summary>Field number for the "dropped_attributes_count" field.</summary>
        public const int DroppedAttributesCountFieldNumber = 5;
        private uint droppedAttributesCount_;
        /// <summary>
        /// dropped_attributes_count is the number of dropped attributes. If the value is 0,
        /// then no attributes were dropped.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public uint DroppedAttributesCount {
          get { return droppedAttributesCount_; }
          set {
            droppedAttributesCount_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override bool Equals(object other) {
          return Equals(other as Link);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(Link other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (TraceId != other.TraceId) return false;
          if (SpanId != other.SpanId) return false;
          if (TraceState != other.TraceState) return false;
          if(!attributes_.Equals(other.attributes_)) return false;
          if (DroppedAttributesCount != other.DroppedAttributesCount) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override int GetHashCode() {
          int hash = 1;
          if (TraceId.Length != 0) hash ^= TraceId.GetHashCode();
          if (SpanId.Length != 0) hash ^= SpanId.GetHashCode();
          if (TraceState.Length != 0) hash ^= TraceState.GetHashCode();
          hash ^= attributes_.GetHashCode();
          if (DroppedAttributesCount != 0) hash ^= DroppedAttributesCount.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void WriteTo(pb::CodedOutputStream output) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          output.WriteRawMessage(this);
        #else
          if (TraceId.Length != 0) {
            output.WriteRawTag(10);
            output.WriteBytes(TraceId);
          }
          if (SpanId.Length != 0) {
            output.WriteRawTag(18);
            output.WriteBytes(SpanId);
          }
          if (TraceState.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(TraceState);
          }
          attributes_.WriteTo(output, _repeated_attributes_codec);
          if (DroppedAttributesCount != 0) {
            output.WriteRawTag(40);
            output.WriteUInt32(DroppedAttributesCount);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
          if (TraceId.Length != 0) {
            output.WriteRawTag(10);
            output.WriteBytes(TraceId);
          }
          if (SpanId.Length != 0) {
            output.WriteRawTag(18);
            output.WriteBytes(SpanId);
          }
          if (TraceState.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(TraceState);
          }
          attributes_.WriteTo(ref output, _repeated_attributes_codec);
          if (DroppedAttributesCount != 0) {
            output.WriteRawTag(40);
            output.WriteUInt32(DroppedAttributesCount);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(ref output);
          }
        }
        #endif

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int CalculateSize() {
          int size = 0;
          if (TraceId.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeBytesSize(TraceId);
          }
          if (SpanId.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeBytesSize(SpanId);
          }
          if (TraceState.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(TraceState);
          }
          size += attributes_.CalculateSize(_repeated_attributes_codec);
          if (DroppedAttributesCount != 0) {
            size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DroppedAttributesCount);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(Link other) {
          if (other == null) {
            return;
          }
          if (other.TraceId.Length != 0) {
            TraceId = other.TraceId;
          }
          if (other.SpanId.Length != 0) {
            SpanId = other.SpanId;
          }
          if (other.TraceState.Length != 0) {
            TraceState = other.TraceState;
          }
          attributes_.Add(other.attributes_);
          if (other.DroppedAttributesCount != 0) {
            DroppedAttributesCount = other.DroppedAttributesCount;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(pb::CodedInputStream input) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          input.ReadRawMessage(this);
        #else
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
          if ((tag & 7) == 4) {
            // Abort on any end group tag.
            return;
          }
          switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                TraceId = input.ReadBytes();
                break;
              }
              case 18: {
                SpanId = input.ReadBytes();
                break;
              }
              case 26: {
                TraceState = input.ReadString();
                break;
              }
              case 34: {
                attributes_.AddEntriesFrom(input, _repeated_attributes_codec);
                break;
              }
              case 40: {
                DroppedAttributesCount = input.ReadUInt32();
                break;
              }
            }
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
          if ((tag & 7) == 4) {
            // Abort on any end group tag.
            return;
          }
          switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 10: {
                TraceId = input.ReadBytes();
                break;
              }
              case 18: {
                SpanId = input.ReadBytes();
                break;
              }
              case 26: {
                TraceState = input.ReadString();
                break;
              }
              case 34: {
                attributes_.AddEntriesFrom(ref input, _repeated_attributes_codec);
                break;
              }
              case 40: {
                DroppedAttributesCount = input.ReadUInt32();
                break;
              }
            }
          }
        }
        #endif

      }

    }
    #endregion

  }

  /// <summary>
  /// The Status type defines a logical error model that is suitable for different
  /// programming environments, including REST APIs and RPC APIs.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class Status : pb::IMessage<Status>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Status> _parser = new pb::MessageParser<Status>(() => new Status());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Status> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::OpenTelemetry.Proto.Trace.V1.TraceReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Status() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Status(Status other) : this() {
      message_ = other.message_;
      code_ = other.code_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Status Clone() {
      return new Status(this);
    }

    /// <summary>Field number for the "message" field.</summary>
    public const int MessageFieldNumber = 2;
    private string message_ = "";
    /// <summary>
    /// A developer-facing human readable error message.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Message {
      get { return message_; }
      set {
        message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "code" field.</summary>
    public const int CodeFieldNumber = 3;
    private global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode code_ = global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode.Unset;
    /// <summary>
    /// The status code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode Code {
      get { return code_; }
      set {
        code_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Status);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Status other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Message != other.Message) return false;
      if (Code != other.Code) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Message.Length != 0) hash ^= Message.GetHashCode();
      if (Code != global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode.Unset) hash ^= Code.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Message.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Message);
      }
      if (Code != global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode.Unset) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Code);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Message.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Message);
      }
      if (Code != global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode.Unset) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Code);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Message.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Message);
      }
      if (Code != global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode.Unset) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Code);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Status other) {
      if (other == null) {
        return;
      }
      if (other.Message.Length != 0) {
        Message = other.Message;
      }
      if (other.Code != global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode.Unset) {
        Code = other.Code;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            Message = input.ReadString();
            break;
          }
          case 24: {
            Code = (global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode) input.ReadEnum();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            Message = input.ReadString();
            break;
          }
          case 24: {
            Code = (global::OpenTelemetry.Proto.Trace.V1.Status.Types.StatusCode) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// <summary>Container for nested types declared in the Status message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      /// <summary>
      /// For the semantics of status codes see
      /// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status
      /// </summary>
      public enum StatusCode {
        /// <summary>
        /// The default status.
        /// </summary>
        [pbr::OriginalName("STATUS_CODE_UNSET")] Unset = 0,
        /// <summary>
        /// The Span has been validated by an Application developer or Operator to 
        /// have completed successfully.
        /// </summary>
        [pbr::OriginalName("STATUS_CODE_OK")] Ok = 1,
        /// <summary>
        /// The Span contains an error.
        /// </summary>
        [pbr::OriginalName("STATUS_CODE_ERROR")] Error = 2,
      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code