anchor.diff:  dynamic _convertToJS(dynamic o) {
     if (o == null) {
       return null;
  -  } else if (o is String || o is num || o is bool
  -      || o is Blob || o is Event || o is KeyRange || o is ImageData
  +  } else if (o is String || o is num || o is bool) {
  +    return o;
  +  } else if (o is Blob || o is Event || o is KeyRange || o is ImageData
         || o is Node || o is TypedData || o is Window) {
       return o;
     } else if (o is DateTime) {
  
positive.code:     }
    }
  
    _checkRange(int start, int end) {
      if (start < 0 || start > this.length) {
        throw new RangeError.range(start, 0, this.length);
      }
      if (end < start || end > this.length) {
        throw new RangeError.range(end, start, this.length);
      }
    }
  
  
negative.code:   }
  
    void removeRange(int start, int end) {
      _checkRange(start, end, length);
      callMethod('splice', [start, end - start]);
    }
  
    void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
      _checkRange(start, end, length);
      int length = end - start;
      if (length == 0) return;
      if (skipCount < 0) throw new ArgumentError(skipCount);
  