anchor.diff:  shl(var a, var b) {
     // TODO(floitsch): inputs must be integers.
     if (checkNumbers(a, b)) {
  +    // TODO(floitsch): Find cleaner way of forcing the type.
  +    a = JS('num', '#', a);
  +    b = JS('num', '#', b);
       if (b < 0) throw new IllegalArgumentException(b);
       // JavaScript only looks at the last 5 bits of the shift-amount. Shifting
       // by 33 is hence equivalent to a shift by 1.
  
positive.code: shr(var a, var b) {
    // TODO(floitsch): inputs must be integers.
    if (checkNumbers(a, b)) {
      if (b < 0) throw new IllegalArgumentException(b);
      // JavaScript only looks at the last 5 bits of the shift-amount. Shifting
      // by 33 is hence equivalent to a shift by 1.
  
negative.code: 
  void indexSet(var a, var index, var value) {
    if (isJsArray(a)) {
      if (index is !int) {
        throw new IllegalArgumentException(index);
      }
      if (index < 0 || index >= a.length) {
  