int IEqualityComparer <UnordererPair <T> > .GetHashCode(UnordererPair <T> obj)
 {
     return(obj.Item1.GetHashCode() + obj.Item2.GetHashCode());
 }
 bool IEquatable <UnordererPair <T> > .Equals(UnordererPair <T> other)
 {
     return
         ((Item1.Equals(other.Item1) && Item2.Equals(other.Item2)) ||
          (Item1.Equals(other.Item2) && Item2.Equals(other.Item1)));
 }
 bool IEqualityComparer <UnordererPair <T> > .Equals(UnordererPair <T> x, UnordererPair <T> y)
 {
     return(((IEquatable <UnordererPair <T> >)x).Equals(y));
 }