anchor.diff:  
   tdiv(var a, var b) {
     if (checkNumbers(a, b)) {
  -    // TODO(floitsch): Find cleaner way of forcing the type.
  -    a = JS('num', '#', a);
  -    b = JS('num', '#', b);
  -    return (a / b).truncate();
  +    return (JS('num', @'# / #', a, b)).truncate();
     }
     return UNINTERCEPTED(a ~/ b);
   }
  
positive.code:     int result = JS('num', @'# % #', a, b);
      if (result == 0) return 0;  // Make sure we don't return -0.0.
      if (result > 0) return result;
      // TODO(floitsch): Find cleaner way of forcing the type.
      b = JS('num', '#', b);
      if (b < 0) {
        return result - b;
      } else {
        return result + b;
      }
    }
    return UNINTERCEPTED(a % b);
  
negative.code:     // For negative numbers we just clamp the shift-by amount. 'a' could be
      // negative but not have its 31st bit set. The ">>" would then shift in
      // 0s instead of 1s. Therefore we cannot simply return 0xFFFFFFFF.
      if (JS('num', '#', b) > 31) b = 31;
      return JS('num', @'(# >> #) >>> 0', a, b);
    }
    return UNINTERCEPTED(a >> b);
  