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

            if (Type != global::Envoy.Data.Cluster.V3Alpha.OutlierEjectionType.Consecutive5Xx)
            {
                hash ^= Type.GetHashCode();
            }
            if (timestamp_ != null)
            {
                hash ^= Timestamp.GetHashCode();
            }
            if (secsSinceLastAction_ != null)
            {
                hash ^= SecsSinceLastAction.GetHashCode();
            }
            if (ClusterName.Length != 0)
            {
                hash ^= ClusterName.GetHashCode();
            }
            if (UpstreamUrl.Length != 0)
            {
                hash ^= UpstreamUrl.GetHashCode();
            }
            if (Action != global::Envoy.Data.Cluster.V3Alpha.Action.Eject)
            {
                hash ^= Action.GetHashCode();
            }
            if (NumEjections != 0)
            {
                hash ^= NumEjections.GetHashCode();
            }
            if (Enforced != false)
            {
                hash ^= Enforced.GetHashCode();
            }
            if (eventCase_ == EventOneofCase.EjectSuccessRateEvent)
            {
                hash ^= EjectSuccessRateEvent.GetHashCode();
            }
            if (eventCase_ == EventOneofCase.EjectConsecutiveEvent)
            {
                hash ^= EjectConsecutiveEvent.GetHashCode();
            }
            hash ^= (int)eventCase_;
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
        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);
        }