anchor.diff:      ret.[0] <- newPath(level - 5,node) :> obj
       ret
   
  -let rec pushTail(vector,level,parent:Node,tailnode) =
  +let rec pushTail(vector:PersistentVector<'a>,level,parent:Node,tailnode) =
       //if parent is leaf, insert node,
       // else does it map to an existing child? -> nodeToInsert = pushNode one more level
       // else alloc new path
  
positive.code: let cons<'a> (x:'a) (vector:PersistentVector<'a>) =
      if vector.Count - vector.TailOff < 32 then
          let newTail = Array.append vector.Tail [|x:>obj|]
          persistentVector<'a>(vector.Count + 1,vector.Shift,vector.Root,newTail)
      else
          //full tail, push into tree
          let tailNode = vector.Tail
  
negative.code:     ret.[subidx] <- nodeToInsert :> obj
      ret
  
  let inline internal arrayFor<'a> i (vector:PersistentVector<'a>) =
      if i >= 0 && i < vector.Count then
          if i >= vector.TailOff then vector.Tail else
              let node = ref vector.Root
  