anchor.diff:  }
   
   _getBranch(hash, depth){
  -  return (hash >> ((5-depth)*branchingBits)) & branchingMask;
  +  return (hash >> (depth*branchingBits)) & branchingMask;
   }
   
   
  
positive.code:     int childLength = child.length;
      // need to remember child length as this may modify
      // the child (if working with transient)
      _Node<K, V> newChild = child._delete(owner, key, hash, depth + 1, missingOk);
      int newLength = this.length + (newChild.length - childLength);
      if (identical(child, newChild)) {
        this._length = newLength;
  
negative.code:   V _get(K key, int hash, int depth) {
      int branch = _getBranch(hash, depth);
      _Node<K, V> map = _array[branch];
      return map._get(key, hash, depth - 1);
    }
  
    _Node<K, V> _insertOneWith(_Owner owner, key, val, hash, int depth, [update]) {
      int branch = _getBranch(hash, depth);
      _Node<K, V> m = _array[branch];
      int oldSize = m.length;
      _Node<K, V> newM = m._insertOneWith(owner, key, val, hash, depth - 1, update);
      if(identical(m, newM)) {
        if(oldSize != m.length) this._length += m.length - oldSize;
        return this;
  