public void MergeFrom(StringMatcher other)
        {
            if (other == null)
            {
                return;
            }
            switch (other.MatchPatternCase)
            {
            case MatchPatternOneofCase.Exact:
                Exact = other.Exact;
                break;

            case MatchPatternOneofCase.Prefix:
                Prefix = other.Prefix;
                break;

            case MatchPatternOneofCase.Suffix:
                Suffix = other.Suffix;
                break;

            case MatchPatternOneofCase.Regex:
                Regex = other.Regex;
                break;

            case MatchPatternOneofCase.SafeRegex:
                if (SafeRegex == null)
                {
                    SafeRegex = new global::Envoy.Type.Matcher.RegexMatcher();
                }
                SafeRegex.MergeFrom(other.SafeRegex);
                break;
            }

            _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }
        public override int GetHashCode()
        {
            int hash = 1;

            if (matchPatternCase_ == MatchPatternOneofCase.Exact)
            {
                hash ^= Exact.GetHashCode();
            }
            if (matchPatternCase_ == MatchPatternOneofCase.Prefix)
            {
                hash ^= Prefix.GetHashCode();
            }
            if (matchPatternCase_ == MatchPatternOneofCase.Suffix)
            {
                hash ^= Suffix.GetHashCode();
            }
            if (matchPatternCase_ == MatchPatternOneofCase.Regex)
            {
                hash ^= Regex.GetHashCode();
            }
            if (matchPatternCase_ == MatchPatternOneofCase.SafeRegex)
            {
                hash ^= SafeRegex.GetHashCode();
            }
            hash ^= (int)matchPatternCase_;
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }