public override int GetHashCode()
        {
            int hash = 1;

            if (traceCase_ == TraceOneofCase.HttpBufferedTrace)
            {
                hash ^= HttpBufferedTrace.GetHashCode();
            }
            if (traceCase_ == TraceOneofCase.HttpStreamedTraceSegment)
            {
                hash ^= HttpStreamedTraceSegment.GetHashCode();
            }
            if (traceCase_ == TraceOneofCase.SocketBufferedTrace)
            {
                hash ^= SocketBufferedTrace.GetHashCode();
            }
            if (traceCase_ == TraceOneofCase.SocketStreamedTraceSegment)
            {
                hash ^= SocketStreamedTraceSegment.GetHashCode();
            }
            hash ^= (int)traceCase_;
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
        public void MergeFrom(TraceWrapper other)
        {
            if (other == null)
            {
                return;
            }
            switch (other.TraceCase)
            {
            case TraceOneofCase.HttpBufferedTrace:
                if (HttpBufferedTrace == null)
                {
                    HttpBufferedTrace = new global::Envoy.Data.Tap.V2Alpha.HttpBufferedTrace();
                }
                HttpBufferedTrace.MergeFrom(other.HttpBufferedTrace);
                break;

            case TraceOneofCase.HttpStreamedTraceSegment:
                if (HttpStreamedTraceSegment == null)
                {
                    HttpStreamedTraceSegment = new global::Envoy.Data.Tap.V2Alpha.HttpStreamedTraceSegment();
                }
                HttpStreamedTraceSegment.MergeFrom(other.HttpStreamedTraceSegment);
                break;

            case TraceOneofCase.SocketBufferedTrace:
                if (SocketBufferedTrace == null)
                {
                    SocketBufferedTrace = new global::Envoy.Data.Tap.V2Alpha.SocketBufferedTrace();
                }
                SocketBufferedTrace.MergeFrom(other.SocketBufferedTrace);
                break;

            case TraceOneofCase.SocketStreamedTraceSegment:
                if (SocketStreamedTraceSegment == null)
                {
                    SocketStreamedTraceSegment = new global::Envoy.Data.Tap.V2Alpha.SocketStreamedTraceSegment();
                }
                SocketStreamedTraceSegment.MergeFrom(other.SocketStreamedTraceSegment);
                break;
            }

            _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }