anchor.diff:      int removeLength = end - start;
       int insertLength = newContents.length;
       if (removeLength >= insertLength) {
  +      int delta = removeLength - insertLength;
         int insertEnd = start + insertLength;
  +      int newLength = this.length - delta;
         this.setRange(start, insertEnd, newContents);
  -      if (removeLength > insertLength) {
  -        _closeGap(insertEnd, end);
  +      if (delta != 0) {
  +        this.setRange(insertEnd, newLength, this, end);
  +        this.length = newLength;
         }
       } else {
         int delta = insertLength - removeLength;
  
positive.code: 
    E removeAt(int index) {
      E result = this[index];
      _closeGap(index, index + 1);
      return result;
    }
  
  
negative.code: 
    void removeRange(int start, int end) {
      RangeError.checkValidRange(start, end, this.length);
      int length = end - start;
      setRange(start, this.length - length, this, end);
      this.length -= length;
    }
  
    void fillRange(int start, int end, [E fill]) {
  