anchor.diff:                  newroot <- newroot.Array.[0] :?> Node
                   newshift <- newshift - blockSizeShift
   
  -            PersistentVector(count - 1, newshift, newroot, newtail,None)
  +            PersistentVector(count - 1, newshift, newroot, newtail)
   
           member this.rangedIterator<'a>(startIndex,endIndex) : 'a seq =
               let i = ref startIndex
  
positive.code:             node.[i &&& blockIndexMask] :?> 'a
  
          member this.cons<'a> (x:'a) =
              let newHash = Some(31 * Unchecked.hash this + Unchecked.hash x)
              if count - tailOff < blockSize then
                  let newTail = Array.append tail [|x:>obj|]
                  PersistentVector<'a>(count + 1,shift,root,newTail,newHash )
              else
                  //full tail, push into tree
                  let tailNode = Node(root.Thread,tail)
  
negative.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)]) else
  
              let newtail = this.ArrayFor(count - 2)
  
  