anchor.diff:      }
     }
   
  -  _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);
  +  static _checkRange(int start, int end, int length) {
  +    if (start < 0 || start > length) {
  +      throw new RangeError.range(start, 0, length);
  +    }
  +    if (end < start || end > length) {
  +      throw new RangeError.range(end, start, length);
       }
     }
   
  
positive.code: 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
        || o is Node || o is TypedData || o is Window) {
      return o;
    } else if (o is DateTime) {
  
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);
  