anchor.diff:      return index;
     }
   
  -  VNode _vectorNodeFor(int index) {
  +  _VNode _vectorNodeFor(int index) {
       if (index >= _getTailOffset(this._size)) {
         return this._tail;
       }
  
positive.code:     var oldTailOffset = _getTailOffset(oldSize);
      var newTailOffset = _getTailOffset(newSize);
      while (newTailOffset >= 1 << (newLevel + _SHIFT)) {
        newRoot = new VNode(newRoot != null && newRoot.length > 0 ? [newRoot] : [], owner);
        newLevel += _SHIFT;
      }
  
      var oldTail = _tail;
      var newTail = newTailOffset < oldTailOffset ?
        _vectorNodeFor(newSize - 1) :
          newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;
  
      if (newTailOffset > oldTailOffset && oldSize > 0 && oldTail.length > 0) {
        newRoot = newRoot._ensureOwner(owner);
        var node = newRoot;
        for (var level = newLevel; level > _SHIFT; level -= _SHIFT) {
          var idx = (oldTailOffset >> level) & _MASK;
          node._set(idx , node._get(idx) == null ? node._get(idx)._ensureOwner(owner) : new VNode([], owner));
          node = node._get(idx);
        }
        node._set((oldTailOffset >> _SHIFT) & _MASK, oldTail);
  
negative.code:   _ensureOwner(ownerID) {
      if (ownerID != null && ownerID == _ownerID)
        return this;
      return new _VNode(_array.sublist(0), ownerID);
    }
  
    _VNode _update(ownerID, level, index, value, Bool didAlter) {
      var deleted = value == _NOT_SET;
      var node = this;
      var newNode;
  