anchor.diff:        Primitive argument = node.dartReceiver;
         AbstractValue value = getValue(argument);
   
  -      if (lattice.isDefinitelyNum(value, allowNull: false)) {
  +      if (lattice.isDefinitelyNum(value, allowNull: true)) {
           String opname = node.selector.name;
           if (opname == '~') {
  -          return replaceWithUnary(BuiltinOperator.NumBitNot, argument);
  +          return makeUnary(BuiltinOperator.NumBitNot,
  +              guard: BuiltinOperator.IsNumber);
           }
           if (opname == 'unary-') {
  -          return replaceWithUnary(BuiltinOperator.NumNegate, argument);
  +          return makeUnary(BuiltinOperator.NumNegate,
  +              guard: BuiltinOperator.IsNumber);
           }
         }
       }
  
positive.code:         // fact that Dart-null corresponds to both JS-null and JS-undefined.
          // Please see documentation for IsFalsy, StrictEq, and LooseEq.
          if (left.isNullConstant || right.isNullConstant) {
            return replaceWithBinary(BuiltinOperator.Identical,
                 leftArg, rightArg);
          }
          // There are several implementations of == that behave like identical.
          // Specialize it if we definitely call one of those.
  
negative.code:         if (node.arguments.length == 2) {
            Primitive arg = node.dartArgument(0);
            AbstractValue argValue = getValue(arg);
            if (lattice.isDefinitelyInt(receiverValue, allowNull: true) &&
                lattice.isDefinitelyInt(argValue) &&
                isIntNotZero(argValue)) {
              return makeBinary(BuiltinOperator.NumRemainder,
                  guard: BuiltinOperator.IsNumber);
            }
          }
        } else if (name == 'codeUnitAt') {
  