anchor.diff:    return UNINTERCEPTED(a + b);
   }
   
  -div(var a, var b) {
  +div$slow(var a, var b) {
     if (checkNumbers(a, b)) {
       return JS('num', @'# / #', a, b);
     }
     return UNINTERCEPTED(a / b);
   }
   
  -mul(var a, var b) {
  +mul$slow(var a, var b) {
     if (checkNumbers(a, b)) {
       return JS('num', @'# * #', a, b);
     }
     return UNINTERCEPTED(a * b);
   }
   
  -sub(var a, var b) {
  +sub$slow(var a, var b) {
     if (checkNumbers(a, b)) {
       return JS('num', @'# - #', a, b);
     }
  
positive.code:   return UNINTERCEPTED(a[index]);
  }
  
  void indexSet(var a, var index, var value) {
    if (isJsArray(a)) {
      if (index is !int) {
        throw new IllegalArgumentException(index);
  
negative.code: #source('native_helper.dart');
  #source('regexp_helper.dart');
  #source('string_helper.dart');
  
  // Performance critical helper methods.
  add(var a, var b) => (a is num && b is num)
      ? JS('num', @'# + #', a, b)
      : add$slow(a, b);
  
  sub(var a, var b) => (a is num && b is num)
      ? JS('num', @'# - #', a, b)
      : sub$slow(a, b);
  
  div(var a, var b) => (a is num && b is num)
      ? JS('num', @'# / #', a, b)
      : div$slow(a, b);
  
  mul(var a, var b) => (a is num && b is num)
      ? JS('num', @'# * #', a, b)
      : mul$slow(a, b);
  
  index(var a, var index) {
    // The type test may cause a NullPointerException to be thrown but
    // that matches the specification of what the indexing operator is
    // supposed to do.
    bool isJsArrayOrString = JS('bool',
        @'typeof # == "string" || #.constructor === Array',
        a, a);
    if (isJsArrayOrString) {
      var key = JS('int', '# >>> 0', index);
      if (key === index && key < JS('int', @'#.length', a)) {
        return JS('var', @'#[#]', a, key);
      }
    }
    return index$slow(a, index);
  }
  
  indexSet(var a, var index, var value) {
    // The type test may cause a NullPointerException to be thrown but
    // that matches the specification of what the indexing operator is
    // supposed to do.
    bool isMutableJsArray = JS('bool',
        @'#.constructor === Array && !#.immutable$list',
        a, a);
    if (isMutableJsArray) {
      var key = JS('int', '# >>> 0', index);
      if (key === index && key < JS('int', @'#.length', a)) {
        JS('void', @'#[#] = #', a, key, value);
        return;
      }
    }
    indexSet$slow(a, index, value);
  }
  
  /**
   * Returns true if both arguments are numbers.
  