anchor.diff:                  if i >= tailOff then
                       let newTail = Array.copy tail
                       newTail.[i &&& blockIndexMask] <- x :> obj
  -                    PersistentVector(count, shift, root, newTail,None)
  +                    PersistentVector(count, shift, root, newTail)
                   else
  -                    PersistentVector(count, shift, this.doAssoc(shift, root, i, x),tail,None)
  +                    PersistentVector(count, shift, this.doAssoc(shift, root, i, x),tail)
               elif i = count then
                   this.cons x
               else raise Exceptions.OutOfBounds
  
positive.code:             if count = 1 then PersistentVector<'a>.Empty() else
  
              //if(tail.length > 1)
              if count - tailOff > 1 then PersistentVector(count - 1, shift, root, tail.[0..(tail.Length-1)],None) else
  
              let newtail = this.ArrayFor(count - 2)
  
  
negative.code:             node.[i &&& blockIndexMask] :?> 'a
  
          member this.cons<'a> (x:'a) =
              if count - tailOff < blockSize then
                  let newTail = Array.append tail [|x:>obj|]
                  PersistentVector<'a>(count + 1,shift,root,newTail)
              else
                  //full tail, push into tree
                  let tailNode = Node(root.Thread,tail)
  