anchor.diff:  
     AbstractConstantValue closedOnUint(AbstractConstantValue left,
                                        AbstractConstantValue right) {
  -    if (isDefinitelyUint(left) && isDefinitelyUint(right)) {
  +    if (isDefinitelyUint(left) && isDefinitelyUint(right, allowNull: true)) {
         return nonConstant(typeSystem.uintType);
       }
       return null;
  
positive.code: 
    AbstractConstantValue closedOnInt(AbstractConstantValue left,
                                      AbstractConstantValue right) {
      if (isDefinitelyInt(left) && isDefinitelyInt(right)) {
        return nonConstant(typeSystem.intType);
      }
      return null;
  
negative.code:         foldBinary(constantSystem.bitAnd, left, right);
      if (folded != null) return folded;
      if (isDefinitelyNum(left)) {
        if (isDefinitelyUint31(left) ||
            isDefinitelyUint31(right, allowNull: true)) {
          // Either 31-bit argument will truncate the other.
          return nonConstant(typeSystem.uint31Type);
        }
  