anchor.diff:      // else alloc new path
       //return  nodeToInsert placed in copy of parent
       let subidx = ((vector.Count - 1) >>> level) &&& 0x01f
  -    let ret = Node(Array.copy parent.Array)
  +    let ret = Array.copy parent
   
       let nodeToInsert =
           if level = 5 then tailnode else
   
  -        let child = parent.Array.[subidx]
  +        let child = parent.[subidx]
           if child <> null then
               pushTail(vector,level-5,child :?> Node,tailnode)
           else
               newPath(level-5,tailnode)
   
  -    ret.Array.[subidx] <- nodeToInsert :> obj
  +    ret.[subidx] <- nodeToInsert :> obj
       ret
   
   let inline arrayFor<'a> i (vector:PersistentVector<'a>) =
  
positive.code:             let level = ref vector.Shift
              while !level > 0 do
                  let pos = (i >>> !level) &&& 0x01f
                  node := (!node).Array.[pos] :?> Node
                  level := !level - 5
  
              (!node).Array
      else raise Exceptions.OutOfBounds
  
  let nth<'a> i (vector:PersistentVector<'a>) : 'a =
  
negative.code: 
  open FSharpx
  
  type Node = obj[]
  
  let newNode() = Array.create 32 null    
  
  let emptyNode = newNode()
  
  type PersistentVector<'a> =  {
      Count : int
  