public OpTypesPair(VCExprOp op, List <Type /*!*/> /*!*/ types)
 {
     Contract.Requires(op != null);
     Contract.Requires(cce.NonNullElements(types));
     this.Op       = op;
     this.Types    = types;
     this.HashCode = HFNS.PolyHash(op.GetHashCode(), 17, types);
 }
            public override bool Equals(object that)
            {
                if (that is OpTypesPair)
                {
                    OpTypesPair thatPair = (OpTypesPair)that;
                    return(this.Op.Equals(thatPair.Op) &&
                           HFNS.SameElements(this.Types, thatPair.Types));
                }

                return(false);
            }