All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.opencensus.proto.trace.v1.Span.scala Maven / Gradle / Ivy

There is a newer version: 1.23.0-dev-f04150-1
Show newest version
// Generated by the Scala Plugin for the Protocol Buffer Compiler.
// Do not edit!
//
// Protofile syntax: PROTO3

package io.opencensus.proto.trace.v1

/** A span represents a single operation within a trace. Spans can be
  * nested to form a trace tree. Spans may also be linked to other spans
  * from the same or different trace. And form graphs. Often, a trace
  * contains a root span that describes the end-to-end latency, and one
  * or more subspans for its sub-operations. A trace can also contain
  * multiple root spans, or none at all. Spans do not need to be
  * contiguous - there may be gaps or overlaps between spans in a trace.
  *
  * The next id is 17.
  * TODO(bdrutu): Add an example.
  *
  * @param traceId
  *   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
  *   is considered invalid.
  *  
  *   This field is semantically required. Receiver should generate new
  *   random trace_id if empty or invalid trace_id was received.
  *  
  *   This field is required.
  * @param spanId
  *   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 is considered
  *   invalid.
  *  
  *   This field is semantically required. Receiver should generate new
  *   random span_id if empty or invalid span_id was received.
  *  
  *   This field is required.
  * @param tracestate
  *   The Tracestate on the span.
  * @param parentSpanId
  *   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.
  * @param name
  *   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.
  *   When null or empty string received - receiver may use string "name"
  *   as a replacement. There might be smarted algorithms implemented by
  *   receiver to fix the empty span name.
  *  
  *   This field is required.
  * @param kind
  *   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.
  * @param startTime
  *   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.
  *  
  *   This field is semantically required. When not set on receive -
  *   receiver should set it to the value of end_time field if it was
  *   set. Or to the current time if neither was set. It is important to
  *   keep end_time > start_time for consistency.
  *  
  *   This field is required.
  * @param endTime
  *   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.
  *  
  *   This field is semantically required. When not set on receive -
  *   receiver should set it to start_time value. It is important to
  *   keep end_time > start_time for consistency.
  *  
  *   This field is required.
  * @param attributes
  *   A set of attributes on the span.
  * @param stackTrace
  *   A stack trace captured at the start of the span.
  * @param timeEvents
  *   The included time events.
  * @param links
  *   The included links.
  * @param status
  *   An optional final status for this span. Semantically when Status
  *   wasn't set it is means span ended without errors and assume
  *   Status.Ok (code = 0).
  * @param resource
  *   An optional resource that is associated with this span. If not set, this span 
  *   should be part of a batch that does include the resource information, unless resource 
  *   information is unknown.
  * @param sameProcessAsParentSpan
  *   A highly recommended but not required flag that identifies when a
  *   trace crosses a process boundary. True when the parent_span belongs
  *   to the same process as the current span. This flag is most commonly
  *   used to indicate the need to adjust time as clocks in different
  *   processes may not be synchronized.
  * @param childSpanCount
  *   An optional number of child spans that were generated while this span
  *   was active. If set, allows an implementation to detect missing child spans.
  */
@SerialVersionUID(0L)
final case class Span(
    traceId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY,
    spanId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY,
    tracestate: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate] = _root_.scala.None,
    parentSpanId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY,
    name: _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString] = _root_.scala.None,
    kind: io.opencensus.proto.trace.v1.Span.SpanKind = io.opencensus.proto.trace.v1.Span.SpanKind.SPAN_KIND_UNSPECIFIED,
    startTime: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = _root_.scala.None,
    endTime: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = _root_.scala.None,
    attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes] = _root_.scala.None,
    stackTrace: _root_.scala.Option[io.opencensus.proto.trace.v1.StackTrace] = _root_.scala.None,
    timeEvents: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvents] = _root_.scala.None,
    links: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Links] = _root_.scala.None,
    status: _root_.scala.Option[io.opencensus.proto.trace.v1.Status] = _root_.scala.None,
    resource: _root_.scala.Option[io.opencensus.proto.resource.v1.Resource] = _root_.scala.None,
    sameProcessAsParentSpan: _root_.scala.Option[_root_.scala.Boolean] = _root_.scala.None,
    childSpanCount: _root_.scala.Option[_root_.scala.Int] = _root_.scala.None,
    unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
    ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Span] {
    @transient
    private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
    private[this] def __computeSerializedSize(): _root_.scala.Int = {
      var __size = 0
      
      {
        val __value = traceId
        if (!__value.isEmpty) {
          __size += _root_.com.google.protobuf.CodedOutputStream.computeBytesSize(1, __value)
        }
      };
      
      {
        val __value = spanId
        if (!__value.isEmpty) {
          __size += _root_.com.google.protobuf.CodedOutputStream.computeBytesSize(2, __value)
        }
      };
      if (tracestate.isDefined) {
        val __value = tracestate.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      
      {
        val __value = parentSpanId
        if (!__value.isEmpty) {
          __size += _root_.com.google.protobuf.CodedOutputStream.computeBytesSize(3, __value)
        }
      };
      if (name.isDefined) {
        val __value = name.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      
      {
        val __value = kind.value
        if (__value != 0) {
          __size += _root_.com.google.protobuf.CodedOutputStream.computeEnumSize(14, __value)
        }
      };
      if (startTime.isDefined) {
        val __value = startTime.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (endTime.isDefined) {
        val __value = endTime.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (attributes.isDefined) {
        val __value = attributes.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (stackTrace.isDefined) {
        val __value = stackTrace.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (timeEvents.isDefined) {
        val __value = timeEvents.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (links.isDefined) {
        val __value = links.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (status.isDefined) {
        val __value = status.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (resource.isDefined) {
        val __value = resource.get
        __size += 2 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (sameProcessAsParentSpan.isDefined) {
        val __value = io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toBase(sameProcessAsParentSpan.get)
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (childSpanCount.isDefined) {
        val __value = io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toBase(childSpanCount.get)
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      __size += unknownFields.serializedSize
      __size
    }
    override def serializedSize: _root_.scala.Int = {
      var __size = __serializedSizeMemoized
      if (__size == 0) {
        __size = __computeSerializedSize() + 1
        __serializedSizeMemoized = __size
      }
      __size - 1
      
    }
    def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
      {
        val __v = traceId
        if (!__v.isEmpty) {
          _output__.writeBytes(1, __v)
        }
      };
      {
        val __v = spanId
        if (!__v.isEmpty) {
          _output__.writeBytes(2, __v)
        }
      };
      {
        val __v = parentSpanId
        if (!__v.isEmpty) {
          _output__.writeBytes(3, __v)
        }
      };
      name.foreach { __v =>
        val __m = __v
        _output__.writeTag(4, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      startTime.foreach { __v =>
        val __m = __v
        _output__.writeTag(5, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      endTime.foreach { __v =>
        val __m = __v
        _output__.writeTag(6, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      attributes.foreach { __v =>
        val __m = __v
        _output__.writeTag(7, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      stackTrace.foreach { __v =>
        val __m = __v
        _output__.writeTag(8, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      timeEvents.foreach { __v =>
        val __m = __v
        _output__.writeTag(9, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      links.foreach { __v =>
        val __m = __v
        _output__.writeTag(10, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      status.foreach { __v =>
        val __m = __v
        _output__.writeTag(11, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      sameProcessAsParentSpan.foreach { __v =>
        val __m = io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toBase(__v)
        _output__.writeTag(12, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      childSpanCount.foreach { __v =>
        val __m = io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toBase(__v)
        _output__.writeTag(13, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      {
        val __v = kind.value
        if (__v != 0) {
          _output__.writeEnum(14, __v)
        }
      };
      tracestate.foreach { __v =>
        val __m = __v
        _output__.writeTag(15, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      resource.foreach { __v =>
        val __m = __v
        _output__.writeTag(16, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      unknownFields.writeTo(_output__)
    }
    def withTraceId(__v: _root_.com.google.protobuf.ByteString): Span = copy(traceId = __v)
    def withSpanId(__v: _root_.com.google.protobuf.ByteString): Span = copy(spanId = __v)
    def getTracestate: io.opencensus.proto.trace.v1.Span.Tracestate = tracestate.getOrElse(io.opencensus.proto.trace.v1.Span.Tracestate.defaultInstance)
    def clearTracestate: Span = copy(tracestate = _root_.scala.None)
    def withTracestate(__v: io.opencensus.proto.trace.v1.Span.Tracestate): Span = copy(tracestate = Option(__v))
    def withParentSpanId(__v: _root_.com.google.protobuf.ByteString): Span = copy(parentSpanId = __v)
    def getName: io.opencensus.proto.trace.v1.TruncatableString = name.getOrElse(io.opencensus.proto.trace.v1.TruncatableString.defaultInstance)
    def clearName: Span = copy(name = _root_.scala.None)
    def withName(__v: io.opencensus.proto.trace.v1.TruncatableString): Span = copy(name = Option(__v))
    def withKind(__v: io.opencensus.proto.trace.v1.Span.SpanKind): Span = copy(kind = __v)
    def getStartTime: com.google.protobuf.timestamp.Timestamp = startTime.getOrElse(com.google.protobuf.timestamp.Timestamp.defaultInstance)
    def clearStartTime: Span = copy(startTime = _root_.scala.None)
    def withStartTime(__v: com.google.protobuf.timestamp.Timestamp): Span = copy(startTime = Option(__v))
    def getEndTime: com.google.protobuf.timestamp.Timestamp = endTime.getOrElse(com.google.protobuf.timestamp.Timestamp.defaultInstance)
    def clearEndTime: Span = copy(endTime = _root_.scala.None)
    def withEndTime(__v: com.google.protobuf.timestamp.Timestamp): Span = copy(endTime = Option(__v))
    def getAttributes: io.opencensus.proto.trace.v1.Span.Attributes = attributes.getOrElse(io.opencensus.proto.trace.v1.Span.Attributes.defaultInstance)
    def clearAttributes: Span = copy(attributes = _root_.scala.None)
    def withAttributes(__v: io.opencensus.proto.trace.v1.Span.Attributes): Span = copy(attributes = Option(__v))
    def getStackTrace: io.opencensus.proto.trace.v1.StackTrace = stackTrace.getOrElse(io.opencensus.proto.trace.v1.StackTrace.defaultInstance)
    def clearStackTrace: Span = copy(stackTrace = _root_.scala.None)
    def withStackTrace(__v: io.opencensus.proto.trace.v1.StackTrace): Span = copy(stackTrace = Option(__v))
    def getTimeEvents: io.opencensus.proto.trace.v1.Span.TimeEvents = timeEvents.getOrElse(io.opencensus.proto.trace.v1.Span.TimeEvents.defaultInstance)
    def clearTimeEvents: Span = copy(timeEvents = _root_.scala.None)
    def withTimeEvents(__v: io.opencensus.proto.trace.v1.Span.TimeEvents): Span = copy(timeEvents = Option(__v))
    def getLinks: io.opencensus.proto.trace.v1.Span.Links = links.getOrElse(io.opencensus.proto.trace.v1.Span.Links.defaultInstance)
    def clearLinks: Span = copy(links = _root_.scala.None)
    def withLinks(__v: io.opencensus.proto.trace.v1.Span.Links): Span = copy(links = Option(__v))
    def getStatus: io.opencensus.proto.trace.v1.Status = status.getOrElse(io.opencensus.proto.trace.v1.Status.defaultInstance)
    def clearStatus: Span = copy(status = _root_.scala.None)
    def withStatus(__v: io.opencensus.proto.trace.v1.Status): Span = copy(status = Option(__v))
    def getResource: io.opencensus.proto.resource.v1.Resource = resource.getOrElse(io.opencensus.proto.resource.v1.Resource.defaultInstance)
    def clearResource: Span = copy(resource = _root_.scala.None)
    def withResource(__v: io.opencensus.proto.resource.v1.Resource): Span = copy(resource = Option(__v))
    def getSameProcessAsParentSpan: _root_.scala.Boolean = sameProcessAsParentSpan.getOrElse(io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toCustom(com.google.protobuf.wrappers.BoolValue.defaultInstance))
    def clearSameProcessAsParentSpan: Span = copy(sameProcessAsParentSpan = _root_.scala.None)
    def withSameProcessAsParentSpan(__v: _root_.scala.Boolean): Span = copy(sameProcessAsParentSpan = Option(__v))
    def getChildSpanCount: _root_.scala.Int = childSpanCount.getOrElse(io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toCustom(com.google.protobuf.wrappers.UInt32Value.defaultInstance))
    def clearChildSpanCount: Span = copy(childSpanCount = _root_.scala.None)
    def withChildSpanCount(__v: _root_.scala.Int): Span = copy(childSpanCount = Option(__v))
    def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
    def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
    def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 1 => {
          val __t = traceId
          if (__t != _root_.com.google.protobuf.ByteString.EMPTY) __t else null
        }
        case 2 => {
          val __t = spanId
          if (__t != _root_.com.google.protobuf.ByteString.EMPTY) __t else null
        }
        case 15 => tracestate.orNull
        case 3 => {
          val __t = parentSpanId
          if (__t != _root_.com.google.protobuf.ByteString.EMPTY) __t else null
        }
        case 4 => name.orNull
        case 14 => {
          val __t = kind.javaValueDescriptor
          if (__t.getNumber() != 0) __t else null
        }
        case 5 => startTime.orNull
        case 6 => endTime.orNull
        case 7 => attributes.orNull
        case 8 => stackTrace.orNull
        case 9 => timeEvents.orNull
        case 10 => links.orNull
        case 11 => status.orNull
        case 16 => resource.orNull
        case 12 => sameProcessAsParentSpan.map(io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toBase(_)).orNull
        case 13 => childSpanCount.map(io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toBase(_)).orNull
      }
    }
    def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
      _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
      (__field.number: @_root_.scala.unchecked) match {
        case 1 => _root_.scalapb.descriptors.PByteString(traceId)
        case 2 => _root_.scalapb.descriptors.PByteString(spanId)
        case 15 => tracestate.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 3 => _root_.scalapb.descriptors.PByteString(parentSpanId)
        case 4 => name.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 14 => _root_.scalapb.descriptors.PEnum(kind.scalaValueDescriptor)
        case 5 => startTime.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 6 => endTime.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 7 => attributes.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 8 => stackTrace.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 9 => timeEvents.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 10 => links.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 11 => status.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 16 => resource.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 12 => sameProcessAsParentSpan.map(io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toBase(_).toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 13 => childSpanCount.map(io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toBase(_).toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
      }
    }
    def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
    def companion: io.opencensus.proto.trace.v1.Span.type = io.opencensus.proto.trace.v1.Span
    // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span])
}

object Span extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span] {
  implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span] = this
  def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span = {
    var __traceId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY
    var __spanId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY
    var __tracestate: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate] = _root_.scala.None
    var __parentSpanId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY
    var __name: _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString] = _root_.scala.None
    var __kind: io.opencensus.proto.trace.v1.Span.SpanKind = io.opencensus.proto.trace.v1.Span.SpanKind.SPAN_KIND_UNSPECIFIED
    var __startTime: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = _root_.scala.None
    var __endTime: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = _root_.scala.None
    var __attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes] = _root_.scala.None
    var __stackTrace: _root_.scala.Option[io.opencensus.proto.trace.v1.StackTrace] = _root_.scala.None
    var __timeEvents: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvents] = _root_.scala.None
    var __links: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Links] = _root_.scala.None
    var __status: _root_.scala.Option[io.opencensus.proto.trace.v1.Status] = _root_.scala.None
    var __resource: _root_.scala.Option[io.opencensus.proto.resource.v1.Resource] = _root_.scala.None
    var __sameProcessAsParentSpan: _root_.scala.Option[_root_.scala.Boolean] = _root_.scala.None
    var __childSpanCount: _root_.scala.Option[_root_.scala.Int] = _root_.scala.None
    var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
    var _done__ = false
    while (!_done__) {
      val _tag__ = _input__.readTag()
      _tag__ match {
        case 0 => _done__ = true
        case 10 =>
          __traceId = _input__.readBytes()
        case 18 =>
          __spanId = _input__.readBytes()
        case 122 =>
          __tracestate = Option(__tracestate.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Tracestate](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 26 =>
          __parentSpanId = _input__.readBytes()
        case 34 =>
          __name = Option(__name.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.TruncatableString](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 112 =>
          __kind = io.opencensus.proto.trace.v1.Span.SpanKind.fromValue(_input__.readEnum())
        case 42 =>
          __startTime = Option(__startTime.fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.timestamp.Timestamp](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 50 =>
          __endTime = Option(__endTime.fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.timestamp.Timestamp](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 58 =>
          __attributes = Option(__attributes.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Attributes](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 66 =>
          __stackTrace = Option(__stackTrace.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.StackTrace](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 74 =>
          __timeEvents = Option(__timeEvents.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.TimeEvents](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 82 =>
          __links = Option(__links.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Links](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 90 =>
          __status = Option(__status.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Status](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 130 =>
          __resource = Option(__resource.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.resource.v1.Resource](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 98 =>
          __sameProcessAsParentSpan = Option(io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toCustom(__sameProcessAsParentSpan.map(io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toBase(_)).fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.wrappers.BoolValue](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _))))
        case 106 =>
          __childSpanCount = Option(io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toCustom(__childSpanCount.map(io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toBase(_)).fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.wrappers.UInt32Value](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _))))
        case tag =>
          if (_unknownFields__ == null) {
            _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
          }
          _unknownFields__.parseField(tag, _input__)
      }
    }
    io.opencensus.proto.trace.v1.Span(
        traceId = __traceId,
        spanId = __spanId,
        tracestate = __tracestate,
        parentSpanId = __parentSpanId,
        name = __name,
        kind = __kind,
        startTime = __startTime,
        endTime = __endTime,
        attributes = __attributes,
        stackTrace = __stackTrace,
        timeEvents = __timeEvents,
        links = __links,
        status = __status,
        resource = __resource,
        sameProcessAsParentSpan = __sameProcessAsParentSpan,
        childSpanCount = __childSpanCount,
        unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
    )
  }
  implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span] = _root_.scalapb.descriptors.Reads{
    case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
      _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
      io.opencensus.proto.trace.v1.Span(
        traceId = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.com.google.protobuf.ByteString]).getOrElse(_root_.com.google.protobuf.ByteString.EMPTY),
        spanId = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.com.google.protobuf.ByteString]).getOrElse(_root_.com.google.protobuf.ByteString.EMPTY),
        tracestate = __fieldsMap.get(scalaDescriptor.findFieldByNumber(15).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate]]),
        parentSpanId = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.com.google.protobuf.ByteString]).getOrElse(_root_.com.google.protobuf.ByteString.EMPTY),
        name = __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString]]),
        kind = io.opencensus.proto.trace.v1.Span.SpanKind.fromValue(__fieldsMap.get(scalaDescriptor.findFieldByNumber(14).get).map(_.as[_root_.scalapb.descriptors.EnumValueDescriptor]).getOrElse(io.opencensus.proto.trace.v1.Span.SpanKind.SPAN_KIND_UNSPECIFIED.scalaValueDescriptor).number),
        startTime = __fieldsMap.get(scalaDescriptor.findFieldByNumber(5).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.timestamp.Timestamp]]),
        endTime = __fieldsMap.get(scalaDescriptor.findFieldByNumber(6).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.timestamp.Timestamp]]),
        attributes = __fieldsMap.get(scalaDescriptor.findFieldByNumber(7).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes]]),
        stackTrace = __fieldsMap.get(scalaDescriptor.findFieldByNumber(8).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.StackTrace]]),
        timeEvents = __fieldsMap.get(scalaDescriptor.findFieldByNumber(9).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvents]]),
        links = __fieldsMap.get(scalaDescriptor.findFieldByNumber(10).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.Links]]),
        status = __fieldsMap.get(scalaDescriptor.findFieldByNumber(11).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Status]]),
        resource = __fieldsMap.get(scalaDescriptor.findFieldByNumber(16).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.resource.v1.Resource]]),
        sameProcessAsParentSpan = __fieldsMap.get(scalaDescriptor.findFieldByNumber(12).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.wrappers.BoolValue]]).map(io.opencensus.proto.trace.v1.Span._typemapper_sameProcessAsParentSpan.toCustom(_)),
        childSpanCount = __fieldsMap.get(scalaDescriptor.findFieldByNumber(13).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.wrappers.UInt32Value]]).map(io.opencensus.proto.trace.v1.Span._typemapper_childSpanCount.toCustom(_))
      )
    case _ => throw new RuntimeException("Expected PMessage")
  }
  def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = TraceProto.javaDescriptor.getMessageTypes().get(0)
  def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = TraceProto.scalaDescriptor.messages(0)
  def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
    var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
    (__number: @_root_.scala.unchecked) match {
      case 15 => __out = io.opencensus.proto.trace.v1.Span.Tracestate
      case 4 => __out = io.opencensus.proto.trace.v1.TruncatableString
      case 5 => __out = com.google.protobuf.timestamp.Timestamp
      case 6 => __out = com.google.protobuf.timestamp.Timestamp
      case 7 => __out = io.opencensus.proto.trace.v1.Span.Attributes
      case 8 => __out = io.opencensus.proto.trace.v1.StackTrace
      case 9 => __out = io.opencensus.proto.trace.v1.Span.TimeEvents
      case 10 => __out = io.opencensus.proto.trace.v1.Span.Links
      case 11 => __out = io.opencensus.proto.trace.v1.Status
      case 16 => __out = io.opencensus.proto.resource.v1.Resource
      case 12 => __out = com.google.protobuf.wrappers.BoolValue
      case 13 => __out = com.google.protobuf.wrappers.UInt32Value
    }
    __out
  }
  lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] =
    Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]](
      _root_.io.opencensus.proto.trace.v1.Span.Tracestate,
      _root_.io.opencensus.proto.trace.v1.Span.Attributes,
      _root_.io.opencensus.proto.trace.v1.Span.TimeEvent,
      _root_.io.opencensus.proto.trace.v1.Span.TimeEvents,
      _root_.io.opencensus.proto.trace.v1.Span.Link,
      _root_.io.opencensus.proto.trace.v1.Span.Links
    )
  def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = {
    (__fieldNumber: @_root_.scala.unchecked) match {
      case 14 => io.opencensus.proto.trace.v1.Span.SpanKind
    }
  }
  lazy val defaultInstance = io.opencensus.proto.trace.v1.Span(
    traceId = _root_.com.google.protobuf.ByteString.EMPTY,
    spanId = _root_.com.google.protobuf.ByteString.EMPTY,
    tracestate = _root_.scala.None,
    parentSpanId = _root_.com.google.protobuf.ByteString.EMPTY,
    name = _root_.scala.None,
    kind = io.opencensus.proto.trace.v1.Span.SpanKind.SPAN_KIND_UNSPECIFIED,
    startTime = _root_.scala.None,
    endTime = _root_.scala.None,
    attributes = _root_.scala.None,
    stackTrace = _root_.scala.None,
    timeEvents = _root_.scala.None,
    links = _root_.scala.None,
    status = _root_.scala.None,
    resource = _root_.scala.None,
    sameProcessAsParentSpan = _root_.scala.None,
    childSpanCount = _root_.scala.None
  )
  /** Type of span. Can be used to specify additional relationships between spans
    * in addition to a parent/child relationship.
    */
  sealed abstract class SpanKind(val value: _root_.scala.Int) extends _root_.scalapb.GeneratedEnum {
    type EnumType = SpanKind
    def isSpanKindUnspecified: _root_.scala.Boolean = false
    def isServer: _root_.scala.Boolean = false
    def isClient: _root_.scala.Boolean = false
    def companion: _root_.scalapb.GeneratedEnumCompanion[SpanKind] = io.opencensus.proto.trace.v1.Span.SpanKind
    final def asRecognized: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.SpanKind.Recognized] = if (isUnrecognized) _root_.scala.None else _root_.scala.Some(this.asInstanceOf[io.opencensus.proto.trace.v1.Span.SpanKind.Recognized])
  }
  
  object SpanKind extends _root_.scalapb.GeneratedEnumCompanion[SpanKind] {
    sealed trait Recognized extends SpanKind
    implicit def enumCompanion: _root_.scalapb.GeneratedEnumCompanion[SpanKind] = this
    
    /** Unspecified.
      */
    @SerialVersionUID(0L)
    case object SPAN_KIND_UNSPECIFIED extends SpanKind(0) with SpanKind.Recognized {
      val index = 0
      val name = "SPAN_KIND_UNSPECIFIED"
      override def isSpanKindUnspecified: _root_.scala.Boolean = true
    }
    
    /** Indicates that the span covers server-side handling of an RPC or other
      * remote network request.
      */
    @SerialVersionUID(0L)
    case object SERVER extends SpanKind(1) with SpanKind.Recognized {
      val index = 1
      val name = "SERVER"
      override def isServer: _root_.scala.Boolean = true
    }
    
    /** Indicates that the span covers the client-side wrapper around an RPC or
      * other remote request.
      */
    @SerialVersionUID(0L)
    case object CLIENT extends SpanKind(2) with SpanKind.Recognized {
      val index = 2
      val name = "CLIENT"
      override def isClient: _root_.scala.Boolean = true
    }
    
    @SerialVersionUID(0L)
    final case class Unrecognized(unrecognizedValue: _root_.scala.Int) extends SpanKind(unrecognizedValue) with _root_.scalapb.UnrecognizedEnum
    lazy val values = scala.collection.immutable.Seq(SPAN_KIND_UNSPECIFIED, SERVER, CLIENT)
    def fromValue(__value: _root_.scala.Int): SpanKind = __value match {
      case 0 => SPAN_KIND_UNSPECIFIED
      case 1 => SERVER
      case 2 => CLIENT
      case __other => Unrecognized(__other)
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.EnumDescriptor = io.opencensus.proto.trace.v1.Span.javaDescriptor.getEnumTypes().get(0)
    def scalaDescriptor: _root_.scalapb.descriptors.EnumDescriptor = io.opencensus.proto.trace.v1.Span.scalaDescriptor.enums(0)
  }
  /** This field conveys information about request position in multiple distributed tracing graphs.
    * It is a list of Tracestate.Entry with a maximum of 32 members in the list.
    *
    * See the https://github.com/w3c/distributed-tracing for more details about this field.
    *
    * @param entries
    *   A list of entries that represent the Tracestate.
    */
  @SerialVersionUID(0L)
  final case class Tracestate(
      entries: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Tracestate.Entry] = _root_.scala.Seq.empty,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Tracestate] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        entries.foreach { __item =>
          val __value = __item
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        }
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        entries.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def clearEntries = copy(entries = _root_.scala.Seq.empty)
      def addEntries(__vs: io.opencensus.proto.trace.v1.Span.Tracestate.Entry *): Tracestate = addAllEntries(__vs)
      def addAllEntries(__vs: Iterable[io.opencensus.proto.trace.v1.Span.Tracestate.Entry]): Tracestate = copy(entries = entries ++ __vs)
      def withEntries(__v: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Tracestate.Entry]): Tracestate = copy(entries = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => entries
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PRepeated(entries.iterator.map(_.toPMessage).toVector)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.opencensus.proto.trace.v1.Span.Tracestate.type = io.opencensus.proto.trace.v1.Span.Tracestate
      // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.Tracestate])
  }
  
  object Tracestate extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Tracestate] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Tracestate] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.Tracestate = {
      val __entries: _root_.scala.collection.immutable.VectorBuilder[io.opencensus.proto.trace.v1.Span.Tracestate.Entry] = new _root_.scala.collection.immutable.VectorBuilder[io.opencensus.proto.trace.v1.Span.Tracestate.Entry]
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __entries += _root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Tracestate.Entry](_input__)
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.opencensus.proto.trace.v1.Span.Tracestate(
          entries = __entries.result(),
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.Tracestate] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.opencensus.proto.trace.v1.Span.Tracestate(
          entries = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Tracestate.Entry]]).getOrElse(_root_.scala.Seq.empty)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.javaDescriptor.getNestedTypes().get(0)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.scalaDescriptor.nestedMessages(0)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = io.opencensus.proto.trace.v1.Span.Tracestate.Entry
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] =
      Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]](
        _root_.io.opencensus.proto.trace.v1.Span.Tracestate.Entry
      )
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.Tracestate(
      entries = _root_.scala.Seq.empty
    )
    /** @param key
      *   The key must begin with a lowercase letter, and can only contain
      *   lowercase letters 'a'-'z', digits '0'-'9', underscores '_', dashes
      *   '-', asterisks '*', and forward slashes '/'.
      * @param value
      *   The value is opaque string up to 256 characters printable ASCII
      *   RFC0020 characters (i.e., the range 0x20 to 0x7E) except ',' and '='.
      *   Note that this also excludes tabs, newlines, carriage returns, etc.
      */
    @SerialVersionUID(0L)
    final case class Entry(
        key: _root_.scala.Predef.String = "",
        value: _root_.scala.Predef.String = "",
        unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
        ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Entry] {
        @transient
        private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
        private[this] def __computeSerializedSize(): _root_.scala.Int = {
          var __size = 0
          
          {
            val __value = key
            if (!__value.isEmpty) {
              __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
            }
          };
          
          {
            val __value = value
            if (!__value.isEmpty) {
              __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(2, __value)
            }
          };
          __size += unknownFields.serializedSize
          __size
        }
        override def serializedSize: _root_.scala.Int = {
          var __size = __serializedSizeMemoized
          if (__size == 0) {
            __size = __computeSerializedSize() + 1
            __serializedSizeMemoized = __size
          }
          __size - 1
          
        }
        def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
          {
            val __v = key
            if (!__v.isEmpty) {
              _output__.writeString(1, __v)
            }
          };
          {
            val __v = value
            if (!__v.isEmpty) {
              _output__.writeString(2, __v)
            }
          };
          unknownFields.writeTo(_output__)
        }
        def withKey(__v: _root_.scala.Predef.String): Entry = copy(key = __v)
        def withValue(__v: _root_.scala.Predef.String): Entry = copy(value = __v)
        def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
        def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
        def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
          (__fieldNumber: @_root_.scala.unchecked) match {
            case 1 => {
              val __t = key
              if (__t != "") __t else null
            }
            case 2 => {
              val __t = value
              if (__t != "") __t else null
            }
          }
        }
        def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
          _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
          (__field.number: @_root_.scala.unchecked) match {
            case 1 => _root_.scalapb.descriptors.PString(key)
            case 2 => _root_.scalapb.descriptors.PString(value)
          }
        }
        def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
        def companion: io.opencensus.proto.trace.v1.Span.Tracestate.Entry.type = io.opencensus.proto.trace.v1.Span.Tracestate.Entry
        // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.Tracestate.Entry])
    }
    
    object Entry extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Tracestate.Entry] {
      implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Tracestate.Entry] = this
      def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.Tracestate.Entry = {
        var __key: _root_.scala.Predef.String = ""
        var __value: _root_.scala.Predef.String = ""
        var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __key = _input__.readStringRequireUtf8()
            case 18 =>
              __value = _input__.readStringRequireUtf8()
            case tag =>
              if (_unknownFields__ == null) {
                _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
              }
              _unknownFields__.parseField(tag, _input__)
          }
        }
        io.opencensus.proto.trace.v1.Span.Tracestate.Entry(
            key = __key,
            value = __value,
            unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
        )
      }
      implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.Tracestate.Entry] = _root_.scalapb.descriptors.Reads{
        case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
          _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
          io.opencensus.proto.trace.v1.Span.Tracestate.Entry(
            key = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
            value = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Predef.String]).getOrElse("")
          )
        case _ => throw new RuntimeException("Expected PMessage")
      }
      def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.Tracestate.javaDescriptor.getNestedTypes().get(0)
      def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.Tracestate.scalaDescriptor.nestedMessages(0)
      def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
      lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
      def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
      lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.Tracestate.Entry(
        key = "",
        value = ""
      )
      implicit class EntryLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Tracestate.Entry]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.Tracestate.Entry](_l) {
        def key: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.key)((c_, f_) => c_.copy(key = f_))
        def value: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.value)((c_, f_) => c_.copy(value = f_))
      }
      final val KEY_FIELD_NUMBER = 1
      final val VALUE_FIELD_NUMBER = 2
      def of(
        key: _root_.scala.Predef.String,
        value: _root_.scala.Predef.String
      ): _root_.io.opencensus.proto.trace.v1.Span.Tracestate.Entry = _root_.io.opencensus.proto.trace.v1.Span.Tracestate.Entry(
        key,
        value
      )
      // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.Tracestate.Entry])
    }
    
    implicit class TracestateLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Tracestate]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.Tracestate](_l) {
      def entries: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Tracestate.Entry]] = field(_.entries)((c_, f_) => c_.copy(entries = f_))
    }
    final val ENTRIES_FIELD_NUMBER = 1
    def of(
      entries: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Tracestate.Entry]
    ): _root_.io.opencensus.proto.trace.v1.Span.Tracestate = _root_.io.opencensus.proto.trace.v1.Span.Tracestate(
      entries
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.Tracestate])
  }
  
  /** A set of attributes, each with a key and a value.
    *
    * @param attributeMap
    *   The set of attributes. The value can be a string, an integer, a double
    *   or the Boolean values `true` or `false`. Note, global attributes like 
    *   server name can be set as tags using 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
    *       "abc.com/myattribute": true
    *       "abc.com/score": 10.239
    * @param droppedAttributesCount
    *   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.
    */
  @SerialVersionUID(0L)
  final case class Attributes(
      attributeMap: _root_.scala.collection.immutable.Map[_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue] = _root_.scala.collection.immutable.Map.empty,
      droppedAttributesCount: _root_.scala.Int = 0,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Attributes] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        attributeMap.foreach { __item =>
          val __value = io.opencensus.proto.trace.v1.Span.Attributes._typemapper_attributeMap.toBase(__item)
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        }
        
        {
          val __value = droppedAttributesCount
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeInt32Size(2, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        attributeMap.foreach { __v =>
          val __m = io.opencensus.proto.trace.v1.Span.Attributes._typemapper_attributeMap.toBase(__v)
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        {
          val __v = droppedAttributesCount
          if (__v != 0) {
            _output__.writeInt32(2, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def clearAttributeMap = copy(attributeMap = _root_.scala.collection.immutable.Map.empty)
      def addAttributeMap(__vs: (_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue) *): Attributes = addAllAttributeMap(__vs)
      def addAllAttributeMap(__vs: Iterable[(_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue)]): Attributes = copy(attributeMap = attributeMap ++ __vs)
      def withAttributeMap(__v: _root_.scala.collection.immutable.Map[_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue]): Attributes = copy(attributeMap = __v)
      def withDroppedAttributesCount(__v: _root_.scala.Int): Attributes = copy(droppedAttributesCount = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => attributeMap.iterator.map(io.opencensus.proto.trace.v1.Span.Attributes._typemapper_attributeMap.toBase(_)).toSeq
          case 2 => {
            val __t = droppedAttributesCount
            if (__t != 0) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PRepeated(attributeMap.iterator.map(io.opencensus.proto.trace.v1.Span.Attributes._typemapper_attributeMap.toBase(_).toPMessage).toVector)
          case 2 => _root_.scalapb.descriptors.PInt(droppedAttributesCount)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.opencensus.proto.trace.v1.Span.Attributes.type = io.opencensus.proto.trace.v1.Span.Attributes
      // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.Attributes])
  }
  
  object Attributes extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Attributes] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Attributes] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.Attributes = {
      val __attributeMap: _root_.scala.collection.mutable.Builder[(_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue), _root_.scala.collection.immutable.Map[_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue]] = _root_.scala.collection.immutable.Map.newBuilder[_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue]
      var __droppedAttributesCount: _root_.scala.Int = 0
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __attributeMap += io.opencensus.proto.trace.v1.Span.Attributes._typemapper_attributeMap.toCustom(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry](_input__))
          case 16 =>
            __droppedAttributesCount = _input__.readInt32()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.opencensus.proto.trace.v1.Span.Attributes(
          attributeMap = __attributeMap.result(),
          droppedAttributesCount = __droppedAttributesCount,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.Attributes] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.opencensus.proto.trace.v1.Span.Attributes(
          attributeMap = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry]]).getOrElse(_root_.scala.Seq.empty).iterator.map(io.opencensus.proto.trace.v1.Span.Attributes._typemapper_attributeMap.toCustom(_)).toMap,
          droppedAttributesCount = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Int]).getOrElse(0)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.javaDescriptor.getNestedTypes().get(1)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.scalaDescriptor.nestedMessages(1)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] =
      Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]](
        _root_.io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry
      )
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.Attributes(
      attributeMap = _root_.scala.collection.immutable.Map.empty,
      droppedAttributesCount = 0
    )
    @SerialVersionUID(0L)
    final case class AttributeMapEntry(
        key: _root_.scala.Predef.String = "",
        value: _root_.scala.Option[io.opencensus.proto.trace.v1.AttributeValue] = _root_.scala.None,
        unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
        ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[AttributeMapEntry] {
        @transient
        private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
        private[this] def __computeSerializedSize(): _root_.scala.Int = {
          var __size = 0
          
          {
            val __value = key
            if (!__value.isEmpty) {
              __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(1, __value)
            }
          };
          if (value.isDefined) {
            val __value = value.get
            __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
          };
          __size += unknownFields.serializedSize
          __size
        }
        override def serializedSize: _root_.scala.Int = {
          var __size = __serializedSizeMemoized
          if (__size == 0) {
            __size = __computeSerializedSize() + 1
            __serializedSizeMemoized = __size
          }
          __size - 1
          
        }
        def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
          {
            val __v = key
            if (!__v.isEmpty) {
              _output__.writeString(1, __v)
            }
          };
          value.foreach { __v =>
            val __m = __v
            _output__.writeTag(2, 2)
            _output__.writeUInt32NoTag(__m.serializedSize)
            __m.writeTo(_output__)
          };
          unknownFields.writeTo(_output__)
        }
        def withKey(__v: _root_.scala.Predef.String): AttributeMapEntry = copy(key = __v)
        def getValue: io.opencensus.proto.trace.v1.AttributeValue = value.getOrElse(io.opencensus.proto.trace.v1.AttributeValue.defaultInstance)
        def clearValue: AttributeMapEntry = copy(value = _root_.scala.None)
        def withValue(__v: io.opencensus.proto.trace.v1.AttributeValue): AttributeMapEntry = copy(value = Option(__v))
        def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
        def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
        def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
          (__fieldNumber: @_root_.scala.unchecked) match {
            case 1 => {
              val __t = key
              if (__t != "") __t else null
            }
            case 2 => value.orNull
          }
        }
        def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
          _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
          (__field.number: @_root_.scala.unchecked) match {
            case 1 => _root_.scalapb.descriptors.PString(key)
            case 2 => value.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          }
        }
        def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
        def companion: io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry.type = io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry
        // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry])
    }
    
    object AttributeMapEntry extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry] {
      implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry] = this
      def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry = {
        var __key: _root_.scala.Predef.String = ""
        var __value: _root_.scala.Option[io.opencensus.proto.trace.v1.AttributeValue] = _root_.scala.None
        var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __key = _input__.readStringRequireUtf8()
            case 18 =>
              __value = Option(__value.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.AttributeValue](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            case tag =>
              if (_unknownFields__ == null) {
                _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
              }
              _unknownFields__.parseField(tag, _input__)
          }
        }
        io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry(
            key = __key,
            value = __value,
            unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
        )
      }
      implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry] = _root_.scalapb.descriptors.Reads{
        case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
          _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
          io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry(
            key = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
            value = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.AttributeValue]])
          )
        case _ => throw new RuntimeException("Expected PMessage")
      }
      def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.Attributes.javaDescriptor.getNestedTypes().get(0)
      def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.Attributes.scalaDescriptor.nestedMessages(0)
      def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
        var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
        (__number: @_root_.scala.unchecked) match {
          case 2 => __out = io.opencensus.proto.trace.v1.AttributeValue
        }
        __out
      }
      lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
      def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
      lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry(
        key = "",
        value = _root_.scala.None
      )
      implicit class AttributeMapEntryLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry](_l) {
        def key: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.key)((c_, f_) => c_.copy(key = f_))
        def value: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.AttributeValue] = field(_.getValue)((c_, f_) => c_.copy(value = Option(f_)))
        def optionalValue: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.AttributeValue]] = field(_.value)((c_, f_) => c_.copy(value = f_))
      }
      final val KEY_FIELD_NUMBER = 1
      final val VALUE_FIELD_NUMBER = 2
      @transient
      implicit val keyValueMapper: _root_.scalapb.TypeMapper[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry, (_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue)] =
        _root_.scalapb.TypeMapper[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry, (_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue)](__m => (__m.key, __m.getValue))(__p => io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry(__p._1, Some(__p._2)))
      def of(
        key: _root_.scala.Predef.String,
        value: _root_.scala.Option[io.opencensus.proto.trace.v1.AttributeValue]
      ): _root_.io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry = _root_.io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry(
        key,
        value
      )
      // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry])
    }
    
    implicit class AttributesLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Attributes]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.Attributes](_l) {
      def attributeMap: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.collection.immutable.Map[_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue]] = field(_.attributeMap)((c_, f_) => c_.copy(attributeMap = f_))
      def droppedAttributesCount: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.droppedAttributesCount)((c_, f_) => c_.copy(droppedAttributesCount = f_))
    }
    final val ATTRIBUTE_MAP_FIELD_NUMBER = 1
    final val DROPPED_ATTRIBUTES_COUNT_FIELD_NUMBER = 2
    @transient
    private[v1] val _typemapper_attributeMap: _root_.scalapb.TypeMapper[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry, (_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue)] = implicitly[_root_.scalapb.TypeMapper[io.opencensus.proto.trace.v1.Span.Attributes.AttributeMapEntry, (_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue)]]
    def of(
      attributeMap: _root_.scala.collection.immutable.Map[_root_.scala.Predef.String, io.opencensus.proto.trace.v1.AttributeValue],
      droppedAttributesCount: _root_.scala.Int
    ): _root_.io.opencensus.proto.trace.v1.Span.Attributes = _root_.io.opencensus.proto.trace.v1.Span.Attributes(
      attributeMap,
      droppedAttributesCount
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.Attributes])
  }
  
  /** A time-stamped annotation or message event in the Span.
    *
    * @param time
    *   The time the event occurred.
    */
  @SerialVersionUID(0L)
  final case class TimeEvent(
      time: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = _root_.scala.None,
      value: io.opencensus.proto.trace.v1.Span.TimeEvent.Value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Empty,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[TimeEvent] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        if (time.isDefined) {
          val __value = time.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (value.annotation.isDefined) {
          val __value = value.annotation.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (value.messageEvent.isDefined) {
          val __value = value.messageEvent.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        time.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        value.annotation.foreach { __v =>
          val __m = __v
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        value.messageEvent.foreach { __v =>
          val __m = __v
          _output__.writeTag(3, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def getTime: com.google.protobuf.timestamp.Timestamp = time.getOrElse(com.google.protobuf.timestamp.Timestamp.defaultInstance)
      def clearTime: TimeEvent = copy(time = _root_.scala.None)
      def withTime(__v: com.google.protobuf.timestamp.Timestamp): TimeEvent = copy(time = Option(__v))
      def getAnnotation: io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation = value.annotation.getOrElse(io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation.defaultInstance)
      def withAnnotation(__v: io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation): TimeEvent = copy(value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Annotation(__v))
      def getMessageEvent: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent = value.messageEvent.getOrElse(io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.defaultInstance)
      def withMessageEvent(__v: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent): TimeEvent = copy(value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.MessageEvent(__v))
      def clearValue: TimeEvent = copy(value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Empty)
      def withValue(__v: io.opencensus.proto.trace.v1.Span.TimeEvent.Value): TimeEvent = copy(value = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => time.orNull
          case 2 => value.annotation.orNull
          case 3 => value.messageEvent.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => time.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 2 => value.annotation.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => value.messageEvent.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.opencensus.proto.trace.v1.Span.TimeEvent.type = io.opencensus.proto.trace.v1.Span.TimeEvent
      // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.TimeEvent])
  }
  
  object TimeEvent extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvent] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvent] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.TimeEvent = {
      var __time: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = _root_.scala.None
      var __value: io.opencensus.proto.trace.v1.Span.TimeEvent.Value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Empty
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __time = Option(__time.fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.timestamp.Timestamp](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 18 =>
            __value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Annotation(__value.annotation.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 26 =>
            __value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.MessageEvent(__value.messageEvent.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.opencensus.proto.trace.v1.Span.TimeEvent(
          time = __time,
          value = __value,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.TimeEvent] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.opencensus.proto.trace.v1.Span.TimeEvent(
          time = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.timestamp.Timestamp]]),
          value = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation]]).map(io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Annotation(_))
              .orElse[io.opencensus.proto.trace.v1.Span.TimeEvent.Value](__fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent]]).map(io.opencensus.proto.trace.v1.Span.TimeEvent.Value.MessageEvent(_)))
              .getOrElse(io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Empty)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.javaDescriptor.getNestedTypes().get(2)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.scalaDescriptor.nestedMessages(2)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = com.google.protobuf.timestamp.Timestamp
        case 2 => __out = io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation
        case 3 => __out = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] =
      Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]](
        _root_.io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation,
        _root_.io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent
      )
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.TimeEvent(
      time = _root_.scala.None,
      value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Empty
    )
    sealed trait Value extends _root_.scalapb.GeneratedOneof {
      def isEmpty: _root_.scala.Boolean = false
      def isDefined: _root_.scala.Boolean = true
      def isAnnotation: _root_.scala.Boolean = false
      def isMessageEvent: _root_.scala.Boolean = false
      def annotation: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation] = _root_.scala.None
      def messageEvent: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent] = _root_.scala.None
    }
    object Value {
      @SerialVersionUID(0L)
      case object Empty extends io.opencensus.proto.trace.v1.Span.TimeEvent.Value {
        type ValueType = _root_.scala.Nothing
        override def isEmpty: _root_.scala.Boolean = true
        override def isDefined: _root_.scala.Boolean = false
        override def number: _root_.scala.Int = 0
        override def value: _root_.scala.Nothing = throw new java.util.NoSuchElementException("Empty.value")
      }
    
      @SerialVersionUID(0L)
      final case class Annotation(value: io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation) extends io.opencensus.proto.trace.v1.Span.TimeEvent.Value {
        type ValueType = io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation
        override def isAnnotation: _root_.scala.Boolean = true
        override def annotation: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation] = Some(value)
        override def number: _root_.scala.Int = 2
      }
      @SerialVersionUID(0L)
      final case class MessageEvent(value: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent) extends io.opencensus.proto.trace.v1.Span.TimeEvent.Value {
        type ValueType = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent
        override def isMessageEvent: _root_.scala.Boolean = true
        override def messageEvent: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent] = Some(value)
        override def number: _root_.scala.Int = 3
      }
    }
    /** A text annotation with a set of attributes.
      *
      * @param description
      *   A user-supplied message describing the event.
      * @param attributes
      *   A set of attributes on the annotation.
      */
    @SerialVersionUID(0L)
    final case class Annotation(
        description: _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString] = _root_.scala.None,
        attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes] = _root_.scala.None,
        unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
        ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Annotation] {
        @transient
        private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
        private[this] def __computeSerializedSize(): _root_.scala.Int = {
          var __size = 0
          if (description.isDefined) {
            val __value = description.get
            __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
          };
          if (attributes.isDefined) {
            val __value = attributes.get
            __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
          };
          __size += unknownFields.serializedSize
          __size
        }
        override def serializedSize: _root_.scala.Int = {
          var __size = __serializedSizeMemoized
          if (__size == 0) {
            __size = __computeSerializedSize() + 1
            __serializedSizeMemoized = __size
          }
          __size - 1
          
        }
        def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
          description.foreach { __v =>
            val __m = __v
            _output__.writeTag(1, 2)
            _output__.writeUInt32NoTag(__m.serializedSize)
            __m.writeTo(_output__)
          };
          attributes.foreach { __v =>
            val __m = __v
            _output__.writeTag(2, 2)
            _output__.writeUInt32NoTag(__m.serializedSize)
            __m.writeTo(_output__)
          };
          unknownFields.writeTo(_output__)
        }
        def getDescription: io.opencensus.proto.trace.v1.TruncatableString = description.getOrElse(io.opencensus.proto.trace.v1.TruncatableString.defaultInstance)
        def clearDescription: Annotation = copy(description = _root_.scala.None)
        def withDescription(__v: io.opencensus.proto.trace.v1.TruncatableString): Annotation = copy(description = Option(__v))
        def getAttributes: io.opencensus.proto.trace.v1.Span.Attributes = attributes.getOrElse(io.opencensus.proto.trace.v1.Span.Attributes.defaultInstance)
        def clearAttributes: Annotation = copy(attributes = _root_.scala.None)
        def withAttributes(__v: io.opencensus.proto.trace.v1.Span.Attributes): Annotation = copy(attributes = Option(__v))
        def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
        def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
        def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
          (__fieldNumber: @_root_.scala.unchecked) match {
            case 1 => description.orNull
            case 2 => attributes.orNull
          }
        }
        def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
          _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
          (__field.number: @_root_.scala.unchecked) match {
            case 1 => description.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
            case 2 => attributes.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          }
        }
        def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
        def companion: io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation.type = io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation
        // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.TimeEvent.Annotation])
    }
    
    object Annotation extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation] {
      implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation] = this
      def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation = {
        var __description: _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString] = _root_.scala.None
        var __attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes] = _root_.scala.None
        var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 10 =>
              __description = Option(__description.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.TruncatableString](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            case 18 =>
              __attributes = Option(__attributes.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Attributes](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
            case tag =>
              if (_unknownFields__ == null) {
                _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
              }
              _unknownFields__.parseField(tag, _input__)
          }
        }
        io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation(
            description = __description,
            attributes = __attributes,
            unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
        )
      }
      implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation] = _root_.scalapb.descriptors.Reads{
        case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
          _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
          io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation(
            description = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString]]),
            attributes = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes]])
          )
        case _ => throw new RuntimeException("Expected PMessage")
      }
      def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.TimeEvent.javaDescriptor.getNestedTypes().get(0)
      def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.TimeEvent.scalaDescriptor.nestedMessages(0)
      def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
        var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
        (__number: @_root_.scala.unchecked) match {
          case 1 => __out = io.opencensus.proto.trace.v1.TruncatableString
          case 2 => __out = io.opencensus.proto.trace.v1.Span.Attributes
        }
        __out
      }
      lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
      def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
      lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation(
        description = _root_.scala.None,
        attributes = _root_.scala.None
      )
      implicit class AnnotationLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation](_l) {
        def description: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.TruncatableString] = field(_.getDescription)((c_, f_) => c_.copy(description = Option(f_)))
        def optionalDescription: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString]] = field(_.description)((c_, f_) => c_.copy(description = f_))
        def attributes: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Attributes] = field(_.getAttributes)((c_, f_) => c_.copy(attributes = Option(f_)))
        def optionalAttributes: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes]] = field(_.attributes)((c_, f_) => c_.copy(attributes = f_))
      }
      final val DESCRIPTION_FIELD_NUMBER = 1
      final val ATTRIBUTES_FIELD_NUMBER = 2
      def of(
        description: _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString],
        attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes]
      ): _root_.io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation = _root_.io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation(
        description,
        attributes
      )
      // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.TimeEvent.Annotation])
    }
    
    /** An event describing a message sent/received between Spans.
      *
      * @param type
      *   The type of MessageEvent. Indicates whether the message was sent or
      *   received.
      * @param id
      *   An identifier for the MessageEvent's message that can be used to match
      *   SENT and RECEIVED MessageEvents. For example, this field could
      *   represent a sequence ID for a streaming RPC. It is recommended to be
      *   unique within a Span.
      * @param uncompressedSize
      *   The number of uncompressed bytes sent or received.
      * @param compressedSize
      *   The number of compressed bytes sent or received. If zero, assumed to
      *   be the same size as uncompressed.
      */
    @SerialVersionUID(0L)
    final case class MessageEvent(
        `type`: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.TYPE_UNSPECIFIED,
        id: _root_.scala.Long = 0L,
        uncompressedSize: _root_.scala.Long = 0L,
        compressedSize: _root_.scala.Long = 0L,
        unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
        ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[MessageEvent] {
        @transient
        private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
        private[this] def __computeSerializedSize(): _root_.scala.Int = {
          var __size = 0
          
          {
            val __value = `type`.value
            if (__value != 0) {
              __size += _root_.com.google.protobuf.CodedOutputStream.computeEnumSize(1, __value)
            }
          };
          
          {
            val __value = id
            if (__value != 0L) {
              __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt64Size(2, __value)
            }
          };
          
          {
            val __value = uncompressedSize
            if (__value != 0L) {
              __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt64Size(3, __value)
            }
          };
          
          {
            val __value = compressedSize
            if (__value != 0L) {
              __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt64Size(4, __value)
            }
          };
          __size += unknownFields.serializedSize
          __size
        }
        override def serializedSize: _root_.scala.Int = {
          var __size = __serializedSizeMemoized
          if (__size == 0) {
            __size = __computeSerializedSize() + 1
            __serializedSizeMemoized = __size
          }
          __size - 1
          
        }
        def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
          {
            val __v = `type`.value
            if (__v != 0) {
              _output__.writeEnum(1, __v)
            }
          };
          {
            val __v = id
            if (__v != 0L) {
              _output__.writeUInt64(2, __v)
            }
          };
          {
            val __v = uncompressedSize
            if (__v != 0L) {
              _output__.writeUInt64(3, __v)
            }
          };
          {
            val __v = compressedSize
            if (__v != 0L) {
              _output__.writeUInt64(4, __v)
            }
          };
          unknownFields.writeTo(_output__)
        }
        def withType(__v: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type): MessageEvent = copy(`type` = __v)
        def withId(__v: _root_.scala.Long): MessageEvent = copy(id = __v)
        def withUncompressedSize(__v: _root_.scala.Long): MessageEvent = copy(uncompressedSize = __v)
        def withCompressedSize(__v: _root_.scala.Long): MessageEvent = copy(compressedSize = __v)
        def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
        def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
        def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
          (__fieldNumber: @_root_.scala.unchecked) match {
            case 1 => {
              val __t = `type`.javaValueDescriptor
              if (__t.getNumber() != 0) __t else null
            }
            case 2 => {
              val __t = id
              if (__t != 0L) __t else null
            }
            case 3 => {
              val __t = uncompressedSize
              if (__t != 0L) __t else null
            }
            case 4 => {
              val __t = compressedSize
              if (__t != 0L) __t else null
            }
          }
        }
        def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
          _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
          (__field.number: @_root_.scala.unchecked) match {
            case 1 => _root_.scalapb.descriptors.PEnum(`type`.scalaValueDescriptor)
            case 2 => _root_.scalapb.descriptors.PLong(id)
            case 3 => _root_.scalapb.descriptors.PLong(uncompressedSize)
            case 4 => _root_.scalapb.descriptors.PLong(compressedSize)
          }
        }
        def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
        def companion: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.type = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent
        // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent])
    }
    
    object MessageEvent extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent] {
      implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent] = this
      def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent = {
        var __type: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.TYPE_UNSPECIFIED
        var __id: _root_.scala.Long = 0L
        var __uncompressedSize: _root_.scala.Long = 0L
        var __compressedSize: _root_.scala.Long = 0L
        var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
        var _done__ = false
        while (!_done__) {
          val _tag__ = _input__.readTag()
          _tag__ match {
            case 0 => _done__ = true
            case 8 =>
              __type = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.fromValue(_input__.readEnum())
            case 16 =>
              __id = _input__.readUInt64()
            case 24 =>
              __uncompressedSize = _input__.readUInt64()
            case 32 =>
              __compressedSize = _input__.readUInt64()
            case tag =>
              if (_unknownFields__ == null) {
                _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
              }
              _unknownFields__.parseField(tag, _input__)
          }
        }
        io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent(
            `type` = __type,
            id = __id,
            uncompressedSize = __uncompressedSize,
            compressedSize = __compressedSize,
            unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
        )
      }
      implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent] = _root_.scalapb.descriptors.Reads{
        case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
          _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
          io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent(
            `type` = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.fromValue(__fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scalapb.descriptors.EnumValueDescriptor]).getOrElse(io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.TYPE_UNSPECIFIED.scalaValueDescriptor).number),
            id = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Long]).getOrElse(0L),
            uncompressedSize = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Long]).getOrElse(0L),
            compressedSize = __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).map(_.as[_root_.scala.Long]).getOrElse(0L)
          )
        case _ => throw new RuntimeException("Expected PMessage")
      }
      def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.TimeEvent.javaDescriptor.getNestedTypes().get(1)
      def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.TimeEvent.scalaDescriptor.nestedMessages(1)
      def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
      lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
      def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type
        }
      }
      lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent(
        `type` = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.TYPE_UNSPECIFIED,
        id = 0L,
        uncompressedSize = 0L,
        compressedSize = 0L
      )
      /** Indicates whether the message was sent or received.
        */
      sealed abstract class Type(val value: _root_.scala.Int) extends _root_.scalapb.GeneratedEnum {
        type EnumType = Type
        def isTypeUnspecified: _root_.scala.Boolean = false
        def isSent: _root_.scala.Boolean = false
        def isReceived: _root_.scala.Boolean = false
        def companion: _root_.scalapb.GeneratedEnumCompanion[Type] = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type
        final def asRecognized: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.Recognized] = if (isUnrecognized) _root_.scala.None else _root_.scala.Some(this.asInstanceOf[io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type.Recognized])
      }
      
      object Type extends _root_.scalapb.GeneratedEnumCompanion[Type] {
        sealed trait Recognized extends Type
        implicit def enumCompanion: _root_.scalapb.GeneratedEnumCompanion[Type] = this
        
        /** Unknown event type.
          */
        @SerialVersionUID(0L)
        case object TYPE_UNSPECIFIED extends Type(0) with Type.Recognized {
          val index = 0
          val name = "TYPE_UNSPECIFIED"
          override def isTypeUnspecified: _root_.scala.Boolean = true
        }
        
        /** Indicates a sent message.
          */
        @SerialVersionUID(0L)
        case object SENT extends Type(1) with Type.Recognized {
          val index = 1
          val name = "SENT"
          override def isSent: _root_.scala.Boolean = true
        }
        
        /** Indicates a received message.
          */
        @SerialVersionUID(0L)
        case object RECEIVED extends Type(2) with Type.Recognized {
          val index = 2
          val name = "RECEIVED"
          override def isReceived: _root_.scala.Boolean = true
        }
        
        @SerialVersionUID(0L)
        final case class Unrecognized(unrecognizedValue: _root_.scala.Int) extends Type(unrecognizedValue) with _root_.scalapb.UnrecognizedEnum
        lazy val values = scala.collection.immutable.Seq(TYPE_UNSPECIFIED, SENT, RECEIVED)
        def fromValue(__value: _root_.scala.Int): Type = __value match {
          case 0 => TYPE_UNSPECIFIED
          case 1 => SENT
          case 2 => RECEIVED
          case __other => Unrecognized(__other)
        }
        def javaDescriptor: _root_.com.google.protobuf.Descriptors.EnumDescriptor = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.javaDescriptor.getEnumTypes().get(0)
        def scalaDescriptor: _root_.scalapb.descriptors.EnumDescriptor = io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.scalaDescriptor.enums(0)
      }
      implicit class MessageEventLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent](_l) {
        def `type`: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type] = field(_.`type`)((c_, f_) => c_.copy(`type` = f_))
        def id: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Long] = field(_.id)((c_, f_) => c_.copy(id = f_))
        def uncompressedSize: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Long] = field(_.uncompressedSize)((c_, f_) => c_.copy(uncompressedSize = f_))
        def compressedSize: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Long] = field(_.compressedSize)((c_, f_) => c_.copy(compressedSize = f_))
      }
      final val TYPE_FIELD_NUMBER = 1
      final val ID_FIELD_NUMBER = 2
      final val UNCOMPRESSED_SIZE_FIELD_NUMBER = 3
      final val COMPRESSED_SIZE_FIELD_NUMBER = 4
      def of(
        `type`: io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent.Type,
        id: _root_.scala.Long,
        uncompressedSize: _root_.scala.Long,
        compressedSize: _root_.scala.Long
      ): _root_.io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent = _root_.io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent(
        `type`,
        id,
        uncompressedSize,
        compressedSize
      )
      // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent])
    }
    
    implicit class TimeEventLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent](_l) {
      def time: _root_.scalapb.lenses.Lens[UpperPB, com.google.protobuf.timestamp.Timestamp] = field(_.getTime)((c_, f_) => c_.copy(time = Option(f_)))
      def optionalTime: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[com.google.protobuf.timestamp.Timestamp]] = field(_.time)((c_, f_) => c_.copy(time = f_))
      def annotation: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.Annotation] = field(_.getAnnotation)((c_, f_) => c_.copy(value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.Annotation(f_)))
      def messageEvent: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.MessageEvent] = field(_.getMessageEvent)((c_, f_) => c_.copy(value = io.opencensus.proto.trace.v1.Span.TimeEvent.Value.MessageEvent(f_)))
      def value: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvent.Value] = field(_.value)((c_, f_) => c_.copy(value = f_))
    }
    final val TIME_FIELD_NUMBER = 1
    final val ANNOTATION_FIELD_NUMBER = 2
    final val MESSAGE_EVENT_FIELD_NUMBER = 3
    def of(
      time: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp],
      value: io.opencensus.proto.trace.v1.Span.TimeEvent.Value
    ): _root_.io.opencensus.proto.trace.v1.Span.TimeEvent = _root_.io.opencensus.proto.trace.v1.Span.TimeEvent(
      time,
      value
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.TimeEvent])
  }
  
  /** A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation
    * on the span, consisting of either user-supplied key-value pairs, or
    * details of a message sent/received between Spans.
    *
    * @param timeEvent
    *   A collection of `TimeEvent`s.
    * @param droppedAnnotationsCount
    *   The number of dropped annotations in all the included time events.
    *   If the value is 0, then no annotations were dropped.
    * @param droppedMessageEventsCount
    *   The number of dropped message events in all the included time events.
    *   If the value is 0, then no message events were dropped.
    */
  @SerialVersionUID(0L)
  final case class TimeEvents(
      timeEvent: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.TimeEvent] = _root_.scala.Seq.empty,
      droppedAnnotationsCount: _root_.scala.Int = 0,
      droppedMessageEventsCount: _root_.scala.Int = 0,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[TimeEvents] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        timeEvent.foreach { __item =>
          val __value = __item
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        }
        
        {
          val __value = droppedAnnotationsCount
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeInt32Size(2, __value)
          }
        };
        
        {
          val __value = droppedMessageEventsCount
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeInt32Size(3, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        timeEvent.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        {
          val __v = droppedAnnotationsCount
          if (__v != 0) {
            _output__.writeInt32(2, __v)
          }
        };
        {
          val __v = droppedMessageEventsCount
          if (__v != 0) {
            _output__.writeInt32(3, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def clearTimeEvent = copy(timeEvent = _root_.scala.Seq.empty)
      def addTimeEvent(__vs: io.opencensus.proto.trace.v1.Span.TimeEvent *): TimeEvents = addAllTimeEvent(__vs)
      def addAllTimeEvent(__vs: Iterable[io.opencensus.proto.trace.v1.Span.TimeEvent]): TimeEvents = copy(timeEvent = timeEvent ++ __vs)
      def withTimeEvent(__v: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.TimeEvent]): TimeEvents = copy(timeEvent = __v)
      def withDroppedAnnotationsCount(__v: _root_.scala.Int): TimeEvents = copy(droppedAnnotationsCount = __v)
      def withDroppedMessageEventsCount(__v: _root_.scala.Int): TimeEvents = copy(droppedMessageEventsCount = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => timeEvent
          case 2 => {
            val __t = droppedAnnotationsCount
            if (__t != 0) __t else null
          }
          case 3 => {
            val __t = droppedMessageEventsCount
            if (__t != 0) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PRepeated(timeEvent.iterator.map(_.toPMessage).toVector)
          case 2 => _root_.scalapb.descriptors.PInt(droppedAnnotationsCount)
          case 3 => _root_.scalapb.descriptors.PInt(droppedMessageEventsCount)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.opencensus.proto.trace.v1.Span.TimeEvents.type = io.opencensus.proto.trace.v1.Span.TimeEvents
      // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.TimeEvents])
  }
  
  object TimeEvents extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvents] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.TimeEvents] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.TimeEvents = {
      val __timeEvent: _root_.scala.collection.immutable.VectorBuilder[io.opencensus.proto.trace.v1.Span.TimeEvent] = new _root_.scala.collection.immutable.VectorBuilder[io.opencensus.proto.trace.v1.Span.TimeEvent]
      var __droppedAnnotationsCount: _root_.scala.Int = 0
      var __droppedMessageEventsCount: _root_.scala.Int = 0
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __timeEvent += _root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.TimeEvent](_input__)
          case 16 =>
            __droppedAnnotationsCount = _input__.readInt32()
          case 24 =>
            __droppedMessageEventsCount = _input__.readInt32()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.opencensus.proto.trace.v1.Span.TimeEvents(
          timeEvent = __timeEvent.result(),
          droppedAnnotationsCount = __droppedAnnotationsCount,
          droppedMessageEventsCount = __droppedMessageEventsCount,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.TimeEvents] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.opencensus.proto.trace.v1.Span.TimeEvents(
          timeEvent = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Seq[io.opencensus.proto.trace.v1.Span.TimeEvent]]).getOrElse(_root_.scala.Seq.empty),
          droppedAnnotationsCount = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Int]).getOrElse(0),
          droppedMessageEventsCount = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Int]).getOrElse(0)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.javaDescriptor.getNestedTypes().get(3)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.scalaDescriptor.nestedMessages(3)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = io.opencensus.proto.trace.v1.Span.TimeEvent
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.TimeEvents(
      timeEvent = _root_.scala.Seq.empty,
      droppedAnnotationsCount = 0,
      droppedMessageEventsCount = 0
    )
    implicit class TimeEventsLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvents]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvents](_l) {
      def timeEvent: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.TimeEvent]] = field(_.timeEvent)((c_, f_) => c_.copy(timeEvent = f_))
      def droppedAnnotationsCount: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.droppedAnnotationsCount)((c_, f_) => c_.copy(droppedAnnotationsCount = f_))
      def droppedMessageEventsCount: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.droppedMessageEventsCount)((c_, f_) => c_.copy(droppedMessageEventsCount = f_))
    }
    final val TIME_EVENT_FIELD_NUMBER = 1
    final val DROPPED_ANNOTATIONS_COUNT_FIELD_NUMBER = 2
    final val DROPPED_MESSAGE_EVENTS_COUNT_FIELD_NUMBER = 3
    def of(
      timeEvent: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.TimeEvent],
      droppedAnnotationsCount: _root_.scala.Int,
      droppedMessageEventsCount: _root_.scala.Int
    ): _root_.io.opencensus.proto.trace.v1.Span.TimeEvents = _root_.io.opencensus.proto.trace.v1.Span.TimeEvents(
      timeEvent,
      droppedAnnotationsCount,
      droppedMessageEventsCount
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.TimeEvents])
  }
  
  /** 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.
    *
    * @param traceId
    *   A unique identifier of a trace that this linked span is part of. The ID is a 
    *   16-byte array.
    * @param spanId
    *   A unique identifier for the linked span. The ID is an 8-byte array.
    * @param type
    *   The relationship of the current span relative to the linked span.
    * @param attributes
    *   A set of attributes on the link.
    * @param tracestate
    *   The Tracestate associated with the link.
    */
  @SerialVersionUID(0L)
  final case class Link(
      traceId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY,
      spanId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY,
      `type`: io.opencensus.proto.trace.v1.Span.Link.Type = io.opencensus.proto.trace.v1.Span.Link.Type.TYPE_UNSPECIFIED,
      attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes] = _root_.scala.None,
      tracestate: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate] = _root_.scala.None,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Link] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = traceId
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeBytesSize(1, __value)
          }
        };
        
        {
          val __value = spanId
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeBytesSize(2, __value)
          }
        };
        
        {
          val __value = `type`.value
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeEnumSize(3, __value)
          }
        };
        if (attributes.isDefined) {
          val __value = attributes.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (tracestate.isDefined) {
          val __value = tracestate.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = traceId
          if (!__v.isEmpty) {
            _output__.writeBytes(1, __v)
          }
        };
        {
          val __v = spanId
          if (!__v.isEmpty) {
            _output__.writeBytes(2, __v)
          }
        };
        {
          val __v = `type`.value
          if (__v != 0) {
            _output__.writeEnum(3, __v)
          }
        };
        attributes.foreach { __v =>
          val __m = __v
          _output__.writeTag(4, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        tracestate.foreach { __v =>
          val __m = __v
          _output__.writeTag(5, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withTraceId(__v: _root_.com.google.protobuf.ByteString): Link = copy(traceId = __v)
      def withSpanId(__v: _root_.com.google.protobuf.ByteString): Link = copy(spanId = __v)
      def withType(__v: io.opencensus.proto.trace.v1.Span.Link.Type): Link = copy(`type` = __v)
      def getAttributes: io.opencensus.proto.trace.v1.Span.Attributes = attributes.getOrElse(io.opencensus.proto.trace.v1.Span.Attributes.defaultInstance)
      def clearAttributes: Link = copy(attributes = _root_.scala.None)
      def withAttributes(__v: io.opencensus.proto.trace.v1.Span.Attributes): Link = copy(attributes = Option(__v))
      def getTracestate: io.opencensus.proto.trace.v1.Span.Tracestate = tracestate.getOrElse(io.opencensus.proto.trace.v1.Span.Tracestate.defaultInstance)
      def clearTracestate: Link = copy(tracestate = _root_.scala.None)
      def withTracestate(__v: io.opencensus.proto.trace.v1.Span.Tracestate): Link = copy(tracestate = Option(__v))
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = traceId
            if (__t != _root_.com.google.protobuf.ByteString.EMPTY) __t else null
          }
          case 2 => {
            val __t = spanId
            if (__t != _root_.com.google.protobuf.ByteString.EMPTY) __t else null
          }
          case 3 => {
            val __t = `type`.javaValueDescriptor
            if (__t.getNumber() != 0) __t else null
          }
          case 4 => attributes.orNull
          case 5 => tracestate.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PByteString(traceId)
          case 2 => _root_.scalapb.descriptors.PByteString(spanId)
          case 3 => _root_.scalapb.descriptors.PEnum(`type`.scalaValueDescriptor)
          case 4 => attributes.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 5 => tracestate.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.opencensus.proto.trace.v1.Span.Link.type = io.opencensus.proto.trace.v1.Span.Link
      // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.Link])
  }
  
  object Link extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Link] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Link] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.Link = {
      var __traceId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY
      var __spanId: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY
      var __type: io.opencensus.proto.trace.v1.Span.Link.Type = io.opencensus.proto.trace.v1.Span.Link.Type.TYPE_UNSPECIFIED
      var __attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes] = _root_.scala.None
      var __tracestate: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __traceId = _input__.readBytes()
          case 18 =>
            __spanId = _input__.readBytes()
          case 24 =>
            __type = io.opencensus.proto.trace.v1.Span.Link.Type.fromValue(_input__.readEnum())
          case 34 =>
            __attributes = Option(__attributes.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Attributes](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 42 =>
            __tracestate = Option(__tracestate.fold(_root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Tracestate](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.opencensus.proto.trace.v1.Span.Link(
          traceId = __traceId,
          spanId = __spanId,
          `type` = __type,
          attributes = __attributes,
          tracestate = __tracestate,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.Link] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.opencensus.proto.trace.v1.Span.Link(
          traceId = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.com.google.protobuf.ByteString]).getOrElse(_root_.com.google.protobuf.ByteString.EMPTY),
          spanId = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.com.google.protobuf.ByteString]).getOrElse(_root_.com.google.protobuf.ByteString.EMPTY),
          `type` = io.opencensus.proto.trace.v1.Span.Link.Type.fromValue(__fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scalapb.descriptors.EnumValueDescriptor]).getOrElse(io.opencensus.proto.trace.v1.Span.Link.Type.TYPE_UNSPECIFIED.scalaValueDescriptor).number),
          attributes = __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes]]),
          tracestate = __fieldsMap.get(scalaDescriptor.findFieldByNumber(5).get).flatMap(_.as[_root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate]])
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.javaDescriptor.getNestedTypes().get(4)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.scalaDescriptor.nestedMessages(4)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 4 => __out = io.opencensus.proto.trace.v1.Span.Attributes
        case 5 => __out = io.opencensus.proto.trace.v1.Span.Tracestate
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 3 => io.opencensus.proto.trace.v1.Span.Link.Type
      }
    }
    lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.Link(
      traceId = _root_.com.google.protobuf.ByteString.EMPTY,
      spanId = _root_.com.google.protobuf.ByteString.EMPTY,
      `type` = io.opencensus.proto.trace.v1.Span.Link.Type.TYPE_UNSPECIFIED,
      attributes = _root_.scala.None,
      tracestate = _root_.scala.None
    )
    /** The relationship of the current span relative to the linked span: child,
      * parent, or unspecified.
      */
    sealed abstract class Type(val value: _root_.scala.Int) extends _root_.scalapb.GeneratedEnum {
      type EnumType = Type
      def isTypeUnspecified: _root_.scala.Boolean = false
      def isChildLinkedSpan: _root_.scala.Boolean = false
      def isParentLinkedSpan: _root_.scala.Boolean = false
      def companion: _root_.scalapb.GeneratedEnumCompanion[Type] = io.opencensus.proto.trace.v1.Span.Link.Type
      final def asRecognized: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Link.Type.Recognized] = if (isUnrecognized) _root_.scala.None else _root_.scala.Some(this.asInstanceOf[io.opencensus.proto.trace.v1.Span.Link.Type.Recognized])
    }
    
    object Type extends _root_.scalapb.GeneratedEnumCompanion[Type] {
      sealed trait Recognized extends Type
      implicit def enumCompanion: _root_.scalapb.GeneratedEnumCompanion[Type] = this
      
      /** The relationship of the two spans is unknown, or known but other
        * than parent-child.
        */
      @SerialVersionUID(0L)
      case object TYPE_UNSPECIFIED extends Type(0) with Type.Recognized {
        val index = 0
        val name = "TYPE_UNSPECIFIED"
        override def isTypeUnspecified: _root_.scala.Boolean = true
      }
      
      /** The linked span is a child of the current span.
        */
      @SerialVersionUID(0L)
      case object CHILD_LINKED_SPAN extends Type(1) with Type.Recognized {
        val index = 1
        val name = "CHILD_LINKED_SPAN"
        override def isChildLinkedSpan: _root_.scala.Boolean = true
      }
      
      /** The linked span is a parent of the current span.
        */
      @SerialVersionUID(0L)
      case object PARENT_LINKED_SPAN extends Type(2) with Type.Recognized {
        val index = 2
        val name = "PARENT_LINKED_SPAN"
        override def isParentLinkedSpan: _root_.scala.Boolean = true
      }
      
      @SerialVersionUID(0L)
      final case class Unrecognized(unrecognizedValue: _root_.scala.Int) extends Type(unrecognizedValue) with _root_.scalapb.UnrecognizedEnum
      lazy val values = scala.collection.immutable.Seq(TYPE_UNSPECIFIED, CHILD_LINKED_SPAN, PARENT_LINKED_SPAN)
      def fromValue(__value: _root_.scala.Int): Type = __value match {
        case 0 => TYPE_UNSPECIFIED
        case 1 => CHILD_LINKED_SPAN
        case 2 => PARENT_LINKED_SPAN
        case __other => Unrecognized(__other)
      }
      def javaDescriptor: _root_.com.google.protobuf.Descriptors.EnumDescriptor = io.opencensus.proto.trace.v1.Span.Link.javaDescriptor.getEnumTypes().get(0)
      def scalaDescriptor: _root_.scalapb.descriptors.EnumDescriptor = io.opencensus.proto.trace.v1.Span.Link.scalaDescriptor.enums(0)
    }
    implicit class LinkLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Link]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.Link](_l) {
      def traceId: _root_.scalapb.lenses.Lens[UpperPB, _root_.com.google.protobuf.ByteString] = field(_.traceId)((c_, f_) => c_.copy(traceId = f_))
      def spanId: _root_.scalapb.lenses.Lens[UpperPB, _root_.com.google.protobuf.ByteString] = field(_.spanId)((c_, f_) => c_.copy(spanId = f_))
      def `type`: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Link.Type] = field(_.`type`)((c_, f_) => c_.copy(`type` = f_))
      def attributes: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Attributes] = field(_.getAttributes)((c_, f_) => c_.copy(attributes = Option(f_)))
      def optionalAttributes: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes]] = field(_.attributes)((c_, f_) => c_.copy(attributes = f_))
      def tracestate: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Tracestate] = field(_.getTracestate)((c_, f_) => c_.copy(tracestate = Option(f_)))
      def optionalTracestate: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate]] = field(_.tracestate)((c_, f_) => c_.copy(tracestate = f_))
    }
    final val TRACE_ID_FIELD_NUMBER = 1
    final val SPAN_ID_FIELD_NUMBER = 2
    final val TYPE_FIELD_NUMBER = 3
    final val ATTRIBUTES_FIELD_NUMBER = 4
    final val TRACESTATE_FIELD_NUMBER = 5
    def of(
      traceId: _root_.com.google.protobuf.ByteString,
      spanId: _root_.com.google.protobuf.ByteString,
      `type`: io.opencensus.proto.trace.v1.Span.Link.Type,
      attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes],
      tracestate: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate]
    ): _root_.io.opencensus.proto.trace.v1.Span.Link = _root_.io.opencensus.proto.trace.v1.Span.Link(
      traceId,
      spanId,
      `type`,
      attributes,
      tracestate
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.Link])
  }
  
  /** A collection of links, which are references from this span to a span
    * in the same or different trace.
    *
    * @param link
    *   A collection of links.
    * @param droppedLinksCount
    *   The number of dropped links after the maximum size was enforced. If
    *   this value is 0, then no links were dropped.
    */
  @SerialVersionUID(0L)
  final case class Links(
      link: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Link] = _root_.scala.Seq.empty,
      droppedLinksCount: _root_.scala.Int = 0,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Links] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        link.foreach { __item =>
          val __value = __item
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        }
        
        {
          val __value = droppedLinksCount
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeInt32Size(2, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        link.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        {
          val __v = droppedLinksCount
          if (__v != 0) {
            _output__.writeInt32(2, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def clearLink = copy(link = _root_.scala.Seq.empty)
      def addLink(__vs: io.opencensus.proto.trace.v1.Span.Link *): Links = addAllLink(__vs)
      def addAllLink(__vs: Iterable[io.opencensus.proto.trace.v1.Span.Link]): Links = copy(link = link ++ __vs)
      def withLink(__v: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Link]): Links = copy(link = __v)
      def withDroppedLinksCount(__v: _root_.scala.Int): Links = copy(droppedLinksCount = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => link
          case 2 => {
            val __t = droppedLinksCount
            if (__t != 0) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PRepeated(link.iterator.map(_.toPMessage).toVector)
          case 2 => _root_.scalapb.descriptors.PInt(droppedLinksCount)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.opencensus.proto.trace.v1.Span.Links.type = io.opencensus.proto.trace.v1.Span.Links
      // @@protoc_insertion_point(GeneratedMessage[opencensus.proto.trace.v1.Span.Links])
  }
  
  object Links extends scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Links] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.opencensus.proto.trace.v1.Span.Links] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.opencensus.proto.trace.v1.Span.Links = {
      val __link: _root_.scala.collection.immutable.VectorBuilder[io.opencensus.proto.trace.v1.Span.Link] = new _root_.scala.collection.immutable.VectorBuilder[io.opencensus.proto.trace.v1.Span.Link]
      var __droppedLinksCount: _root_.scala.Int = 0
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __link += _root_.scalapb.LiteParser.readMessage[io.opencensus.proto.trace.v1.Span.Link](_input__)
          case 16 =>
            __droppedLinksCount = _input__.readInt32()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.opencensus.proto.trace.v1.Span.Links(
          link = __link.result(),
          droppedLinksCount = __droppedLinksCount,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.opencensus.proto.trace.v1.Span.Links] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.opencensus.proto.trace.v1.Span.Links(
          link = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Link]]).getOrElse(_root_.scala.Seq.empty),
          droppedLinksCount = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Int]).getOrElse(0)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.javaDescriptor.getNestedTypes().get(5)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.opencensus.proto.trace.v1.Span.scalaDescriptor.nestedMessages(5)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = io.opencensus.proto.trace.v1.Span.Link
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.opencensus.proto.trace.v1.Span.Links(
      link = _root_.scala.Seq.empty,
      droppedLinksCount = 0
    )
    implicit class LinksLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Links]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span.Links](_l) {
      def link: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Link]] = field(_.link)((c_, f_) => c_.copy(link = f_))
      def droppedLinksCount: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.droppedLinksCount)((c_, f_) => c_.copy(droppedLinksCount = f_))
    }
    final val LINK_FIELD_NUMBER = 1
    final val DROPPED_LINKS_COUNT_FIELD_NUMBER = 2
    def of(
      link: _root_.scala.Seq[io.opencensus.proto.trace.v1.Span.Link],
      droppedLinksCount: _root_.scala.Int
    ): _root_.io.opencensus.proto.trace.v1.Span.Links = _root_.io.opencensus.proto.trace.v1.Span.Links(
      link,
      droppedLinksCount
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span.Links])
  }
  
  implicit class SpanLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.opencensus.proto.trace.v1.Span](_l) {
    def traceId: _root_.scalapb.lenses.Lens[UpperPB, _root_.com.google.protobuf.ByteString] = field(_.traceId)((c_, f_) => c_.copy(traceId = f_))
    def spanId: _root_.scalapb.lenses.Lens[UpperPB, _root_.com.google.protobuf.ByteString] = field(_.spanId)((c_, f_) => c_.copy(spanId = f_))
    def tracestate: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Tracestate] = field(_.getTracestate)((c_, f_) => c_.copy(tracestate = Option(f_)))
    def optionalTracestate: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate]] = field(_.tracestate)((c_, f_) => c_.copy(tracestate = f_))
    def parentSpanId: _root_.scalapb.lenses.Lens[UpperPB, _root_.com.google.protobuf.ByteString] = field(_.parentSpanId)((c_, f_) => c_.copy(parentSpanId = f_))
    def name: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.TruncatableString] = field(_.getName)((c_, f_) => c_.copy(name = Option(f_)))
    def optionalName: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString]] = field(_.name)((c_, f_) => c_.copy(name = f_))
    def kind: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.SpanKind] = field(_.kind)((c_, f_) => c_.copy(kind = f_))
    def startTime: _root_.scalapb.lenses.Lens[UpperPB, com.google.protobuf.timestamp.Timestamp] = field(_.getStartTime)((c_, f_) => c_.copy(startTime = Option(f_)))
    def optionalStartTime: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[com.google.protobuf.timestamp.Timestamp]] = field(_.startTime)((c_, f_) => c_.copy(startTime = f_))
    def endTime: _root_.scalapb.lenses.Lens[UpperPB, com.google.protobuf.timestamp.Timestamp] = field(_.getEndTime)((c_, f_) => c_.copy(endTime = Option(f_)))
    def optionalEndTime: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[com.google.protobuf.timestamp.Timestamp]] = field(_.endTime)((c_, f_) => c_.copy(endTime = f_))
    def attributes: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Attributes] = field(_.getAttributes)((c_, f_) => c_.copy(attributes = Option(f_)))
    def optionalAttributes: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes]] = field(_.attributes)((c_, f_) => c_.copy(attributes = f_))
    def stackTrace: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.StackTrace] = field(_.getStackTrace)((c_, f_) => c_.copy(stackTrace = Option(f_)))
    def optionalStackTrace: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.StackTrace]] = field(_.stackTrace)((c_, f_) => c_.copy(stackTrace = f_))
    def timeEvents: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.TimeEvents] = field(_.getTimeEvents)((c_, f_) => c_.copy(timeEvents = Option(f_)))
    def optionalTimeEvents: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvents]] = field(_.timeEvents)((c_, f_) => c_.copy(timeEvents = f_))
    def links: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Span.Links] = field(_.getLinks)((c_, f_) => c_.copy(links = Option(f_)))
    def optionalLinks: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Links]] = field(_.links)((c_, f_) => c_.copy(links = f_))
    def status: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.trace.v1.Status] = field(_.getStatus)((c_, f_) => c_.copy(status = Option(f_)))
    def optionalStatus: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.trace.v1.Status]] = field(_.status)((c_, f_) => c_.copy(status = f_))
    def resource: _root_.scalapb.lenses.Lens[UpperPB, io.opencensus.proto.resource.v1.Resource] = field(_.getResource)((c_, f_) => c_.copy(resource = Option(f_)))
    def optionalResource: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.opencensus.proto.resource.v1.Resource]] = field(_.resource)((c_, f_) => c_.copy(resource = f_))
    def sameProcessAsParentSpan: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Boolean] = field(_.getSameProcessAsParentSpan)((c_, f_) => c_.copy(sameProcessAsParentSpan = Option(f_)))
    def optionalSameProcessAsParentSpan: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[_root_.scala.Boolean]] = field(_.sameProcessAsParentSpan)((c_, f_) => c_.copy(sameProcessAsParentSpan = f_))
    def childSpanCount: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.getChildSpanCount)((c_, f_) => c_.copy(childSpanCount = Option(f_)))
    def optionalChildSpanCount: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[_root_.scala.Int]] = field(_.childSpanCount)((c_, f_) => c_.copy(childSpanCount = f_))
  }
  final val TRACE_ID_FIELD_NUMBER = 1
  final val SPAN_ID_FIELD_NUMBER = 2
  final val TRACESTATE_FIELD_NUMBER = 15
  final val PARENT_SPAN_ID_FIELD_NUMBER = 3
  final val NAME_FIELD_NUMBER = 4
  final val KIND_FIELD_NUMBER = 14
  final val START_TIME_FIELD_NUMBER = 5
  final val END_TIME_FIELD_NUMBER = 6
  final val ATTRIBUTES_FIELD_NUMBER = 7
  final val STACK_TRACE_FIELD_NUMBER = 8
  final val TIME_EVENTS_FIELD_NUMBER = 9
  final val LINKS_FIELD_NUMBER = 10
  final val STATUS_FIELD_NUMBER = 11
  final val RESOURCE_FIELD_NUMBER = 16
  final val SAME_PROCESS_AS_PARENT_SPAN_FIELD_NUMBER = 12
  final val CHILD_SPAN_COUNT_FIELD_NUMBER = 13
  @transient
  private[v1] val _typemapper_sameProcessAsParentSpan: _root_.scalapb.TypeMapper[com.google.protobuf.wrappers.BoolValue, _root_.scala.Boolean] = implicitly[_root_.scalapb.TypeMapper[com.google.protobuf.wrappers.BoolValue, _root_.scala.Boolean]]
  @transient
  private[v1] val _typemapper_childSpanCount: _root_.scalapb.TypeMapper[com.google.protobuf.wrappers.UInt32Value, _root_.scala.Int] = implicitly[_root_.scalapb.TypeMapper[com.google.protobuf.wrappers.UInt32Value, _root_.scala.Int]]
  def of(
    traceId: _root_.com.google.protobuf.ByteString,
    spanId: _root_.com.google.protobuf.ByteString,
    tracestate: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Tracestate],
    parentSpanId: _root_.com.google.protobuf.ByteString,
    name: _root_.scala.Option[io.opencensus.proto.trace.v1.TruncatableString],
    kind: io.opencensus.proto.trace.v1.Span.SpanKind,
    startTime: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp],
    endTime: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp],
    attributes: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Attributes],
    stackTrace: _root_.scala.Option[io.opencensus.proto.trace.v1.StackTrace],
    timeEvents: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.TimeEvents],
    links: _root_.scala.Option[io.opencensus.proto.trace.v1.Span.Links],
    status: _root_.scala.Option[io.opencensus.proto.trace.v1.Status],
    resource: _root_.scala.Option[io.opencensus.proto.resource.v1.Resource],
    sameProcessAsParentSpan: _root_.scala.Option[_root_.scala.Boolean],
    childSpanCount: _root_.scala.Option[_root_.scala.Int]
  ): _root_.io.opencensus.proto.trace.v1.Span = _root_.io.opencensus.proto.trace.v1.Span(
    traceId,
    spanId,
    tracestate,
    parentSpanId,
    name,
    kind,
    startTime,
    endTime,
    attributes,
    stackTrace,
    timeEvents,
    links,
    status,
    resource,
    sameProcessAsParentSpan,
    childSpanCount
  )
  // @@protoc_insertion_point(GeneratedMessageCompanion[opencensus.proto.trace.v1.Span])
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy