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

            if (delay_ != null)
            {
                hash ^= Delay.GetHashCode();
            }
            if (abort_ != null)
            {
                hash ^= Abort.GetHashCode();
            }
            if (UpstreamCluster.Length != 0)
            {
                hash ^= UpstreamCluster.GetHashCode();
            }
            hash ^= headers_.GetHashCode();
            hash ^= downstreamNodes_.GetHashCode();
            if (maxActiveFaults_ != null)
            {
                hash ^= MaxActiveFaults.GetHashCode();
            }
            if (responseRateLimit_ != null)
            {
                hash ^= ResponseRateLimit.GetHashCode();
            }
            if (DelayPercentRuntime.Length != 0)
            {
                hash ^= DelayPercentRuntime.GetHashCode();
            }
            if (AbortPercentRuntime.Length != 0)
            {
                hash ^= AbortPercentRuntime.GetHashCode();
            }
            if (DelayDurationRuntime.Length != 0)
            {
                hash ^= DelayDurationRuntime.GetHashCode();
            }
            if (AbortHttpStatusRuntime.Length != 0)
            {
                hash ^= AbortHttpStatusRuntime.GetHashCode();
            }
            if (MaxActiveFaultsRuntime.Length != 0)
            {
                hash ^= MaxActiveFaultsRuntime.GetHashCode();
            }
            if (ResponseRateLimitPercentRuntime.Length != 0)
            {
                hash ^= ResponseRateLimitPercentRuntime.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
 public void MergeFrom(HTTPFault other) {
   if (other == null) {
     return;
   }
   if (other.delay_ != null) {
     if (delay_ == null) {
       Delay = new global::Envoy.Config.Filter.Fault.V3Alpha.FaultDelay();
     }
     Delay.MergeFrom(other.Delay);
   }
   if (other.abort_ != null) {
     if (abort_ == null) {
       Abort = new global::Envoy.Config.Filter.Http.Fault.V3Alpha.FaultAbort();
     }
     Abort.MergeFrom(other.Abort);
   }
   if (other.UpstreamCluster.Length != 0) {
     UpstreamCluster = other.UpstreamCluster;
   }
   headers_.Add(other.headers_);
   downstreamNodes_.Add(other.downstreamNodes_);
   if (other.maxActiveFaults_ != null) {
     if (maxActiveFaults_ == null || other.MaxActiveFaults != 0) {
       MaxActiveFaults = other.MaxActiveFaults;
     }
   }
   if (other.responseRateLimit_ != null) {
     if (responseRateLimit_ == null) {
       ResponseRateLimit = new global::Envoy.Config.Filter.Fault.V3Alpha.FaultRateLimit();
     }
     ResponseRateLimit.MergeFrom(other.ResponseRateLimit);
   }
   if (other.DelayPercentRuntime.Length != 0) {
     DelayPercentRuntime = other.DelayPercentRuntime;
   }
   if (other.AbortPercentRuntime.Length != 0) {
     AbortPercentRuntime = other.AbortPercentRuntime;
   }
   if (other.DelayDurationRuntime.Length != 0) {
     DelayDurationRuntime = other.DelayDurationRuntime;
   }
   if (other.AbortHttpStatusRuntime.Length != 0) {
     AbortHttpStatusRuntime = other.AbortHttpStatusRuntime;
   }
   if (other.MaxActiveFaultsRuntime.Length != 0) {
     MaxActiveFaultsRuntime = other.MaxActiveFaultsRuntime;
   }
   if (other.ResponseRateLimitPercentRuntime.Length != 0) {
     ResponseRateLimitPercentRuntime = other.ResponseRateLimitPercentRuntime;
   }
   _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
 }