public bool Equals(S other)
        {
            if (other == null)
            {
                return(false);
            }

            return(Value.Equals(other.Value) && QualifyingValue.Equals(other.QualifyingValue));
        }
        public override bool Equals(Object obj)
        {
            //Check for null and compare run-time types.
            if ((obj == null) || (!(obj is S)))
            {
                return(false);
            }

            return((Value.Equals(((S)obj).Value)) &&
                   (QualifyingValue.Equals(((S)obj).QualifyingValue)));
        }
 public override int GetHashCode()
 {
     return(Value.GetHashCode() + QualifyingValue.GetHashCode());
 }