anchor.diff:                  let idx = this.findIndex(key)
                   if idx = -1 then this :> INode else
                   if this.count = 1 then Unchecked.defaultof<INode> else
  -                HashCollisionNode(ref null, hashKey, this.count - 1, NodeHelpers.removePair(this.array, idx/2)) :> INode
  -
  -            member this.nodeSeq() = NodeHelpers.createNodeSeq this.array
  +                HashCollisionNode(ref null, hashKey, this.count - 1, removePair(this.array, idx/2)) :> INode
  +
  +            member this.nodeSeq() = createNodeSeq this.array
   
               member this.without(thread, shift, hashKey, key, removedLeaf) =
                   let idx = this.findIndex(key)
  
positive.code:                     if this.count <= 8 then // shrink
                          this.pack(ref null, idx) :> INode
                      else
                          ArrayNode(ref null, this.count - 1, NodeHelpers.cloneAndSet(this.array, idx, n)) :> INode
                  else
                      ArrayNode(ref null, this.count, NodeHelpers.cloneAndSet(this.array, idx, n)) :> INode
  
              member this.without(thread1, shift, hashKey, key, removedLeaf) =
                  let idx = BitCount.mask(hashKey, shift)
                  let node = this.array.[idx]
                  if node = Unchecked.defaultof<INode> then this :> INode else
                  let n = node.without(thread1, shift + 5, hashKey, key, removedLeaf)
  
negative.code:     with
          member this.ensureEditable(thread1) =
              if !thread = !thread1 then this else
              let n = NumberOfSetBits(this.bitmap)
              let newArray = Array.create (if n >= 0 then 2*(n+1) else 4) null // make room for next assoc
              System.Array.Copy(this.array, 0, newArray, 0, 2*n)
              BitmapIndexedNode(thread1, this.bitmap, newArray)
  