public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;

            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                default:
                    _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                    break;

                case 8: {
                    Type = (global::Envoy.Data.Cluster.V3Alpha.OutlierEjectionType)input.ReadEnum();
                    break;
                }

                case 18: {
                    if (timestamp_ == null)
                    {
                        Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
                    }
                    input.ReadMessage(Timestamp);
                    break;
                }

                case 26: {
                    ulong?value = _single_secsSinceLastAction_codec.Read(input);
                    if (secsSinceLastAction_ == null || value != 0UL)
                    {
                        SecsSinceLastAction = value;
                    }
                    break;
                }

                case 34: {
                    ClusterName = input.ReadString();
                    break;
                }

                case 42: {
                    UpstreamUrl = input.ReadString();
                    break;
                }

                case 48: {
                    Action = (global::Envoy.Data.Cluster.V3Alpha.Action)input.ReadEnum();
                    break;
                }

                case 56: {
                    NumEjections = input.ReadUInt32();
                    break;
                }

                case 64: {
                    Enforced = input.ReadBool();
                    break;
                }

                case 74: {
                    global::Envoy.Data.Cluster.V3Alpha.OutlierEjectSuccessRate subBuilder = new global::Envoy.Data.Cluster.V3Alpha.OutlierEjectSuccessRate();
                    if (eventCase_ == EventOneofCase.EjectSuccessRateEvent)
                    {
                        subBuilder.MergeFrom(EjectSuccessRateEvent);
                    }
                    input.ReadMessage(subBuilder);
                    EjectSuccessRateEvent = subBuilder;
                    break;
                }

                case 82: {
                    global::Envoy.Data.Cluster.V3Alpha.OutlierEjectConsecutive subBuilder = new global::Envoy.Data.Cluster.V3Alpha.OutlierEjectConsecutive();
                    if (eventCase_ == EventOneofCase.EjectConsecutiveEvent)
                    {
                        subBuilder.MergeFrom(EjectConsecutiveEvent);
                    }
                    input.ReadMessage(subBuilder);
                    EjectConsecutiveEvent = subBuilder;
                    break;
                }
                }
            }
        }
        public void MergeFrom(OutlierDetectionEvent other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Type != global::Envoy.Data.Cluster.V3Alpha.OutlierEjectionType.Consecutive5Xx)
            {
                Type = other.Type;
            }
            if (other.timestamp_ != null)
            {
                if (timestamp_ == null)
                {
                    Timestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
                }
                Timestamp.MergeFrom(other.Timestamp);
            }
            if (other.secsSinceLastAction_ != null)
            {
                if (secsSinceLastAction_ == null || other.SecsSinceLastAction != 0UL)
                {
                    SecsSinceLastAction = other.SecsSinceLastAction;
                }
            }
            if (other.ClusterName.Length != 0)
            {
                ClusterName = other.ClusterName;
            }
            if (other.UpstreamUrl.Length != 0)
            {
                UpstreamUrl = other.UpstreamUrl;
            }
            if (other.Action != global::Envoy.Data.Cluster.V3Alpha.Action.Eject)
            {
                Action = other.Action;
            }
            if (other.NumEjections != 0)
            {
                NumEjections = other.NumEjections;
            }
            if (other.Enforced != false)
            {
                Enforced = other.Enforced;
            }
            switch (other.EventCase)
            {
            case EventOneofCase.EjectSuccessRateEvent:
                if (EjectSuccessRateEvent == null)
                {
                    EjectSuccessRateEvent = new global::Envoy.Data.Cluster.V3Alpha.OutlierEjectSuccessRate();
                }
                EjectSuccessRateEvent.MergeFrom(other.EjectSuccessRateEvent);
                break;

            case EventOneofCase.EjectConsecutiveEvent:
                if (EjectConsecutiveEvent == null)
                {
                    EjectConsecutiveEvent = new global::Envoy.Data.Cluster.V3Alpha.OutlierEjectConsecutive();
                }
                EjectConsecutiveEvent.MergeFrom(other.EjectConsecutiveEvent);
                break;
            }

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