anchor.diff:                      ArrayNode(ref null, this.count, NodeHelpers.cloneAndSet(this.array, idx, n)) :> INode
   
               member this.assoc(thread1, shift, hashKey, key, value, addedLeaf) : INode = 
  -                let idx = NodeHelpers.mask(hashKey, shift)
  +                let idx = BitCount.mask(hashKey, shift)
                   let node = this.array.[idx]
                   if node = Unchecked.defaultof<INode> then
                       let editable = this.editAndSet(thread1, idx, (BitmapIndexedNode() :> INode).assoc(thread1, shift + 5, hashKey, key, value, addedLeaf))
  
positive.code:                             this.ensureEditable(thread1, this.count + 1, newArray) :> INode
                  else
                      // nest it in a bitmap node
                      (BitmapIndexedNode(thread1, NodeHelpers.bitpos(hashCollisionKey, shift), [| null; this; null; null |]) :> INode)
                          .assoc(thread1, shift, hashKey, key, value, addedLeaf);
  
              member this.find(shift, hash, key) =
  
negative.code:                     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)
  