public override int GetHashCode()
        {
            const int prime  = 31;
            int       result = 1;

            result = prime * result + ((Field == null) ? 0 : Field.GetHashCode());
            result = prime
                     * result
                     + ((PhrasedQueryStringContents == null) ? 0
                        : PhrasedQueryStringContents.GetHashCode());
            result = prime * result + SlopFactor;
            return(result);
        }
        public override Boolean Equals(Object obj)
        {
            if (this == obj)
            {
                return(true);
            }
            if (obj == null)
            {
                return(false);
            }
            if (GetType() != obj.GetType())
            {
                return(false);
            }
            ComplexPhraseQuery other = (ComplexPhraseQuery)obj;

            if (Field == null)
            {
                if (other.Field != null)
                {
                    return(false);
                }
            }
            else if (!Field.Equals(other.Field))
            {
                return(false);
            }
            if (PhrasedQueryStringContents == null)
            {
                if (other.PhrasedQueryStringContents != null)
                {
                    return(false);
                }
            }
            else if (!PhrasedQueryStringContents
                     .Equals(other.PhrasedQueryStringContents))
            {
                return(false);
            }
            if (SlopFactor != other.SlopFactor)
            {
                return(false);
            }
            return(true);
        }