anchor.diff:  
   open FSharpx
   
  -type Node(array: obj[])=
  -    new() = Node(Array.create 32 null)
  -    member this.Array = array
  +type Node = obj[]
   
  -let emptyNode = Node()
  +let newNode() = Array.create 32 null    
  +
  +let emptyNode = newNode()
   
   type PersistentVector<'a> =  {
       Count : int
  
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:         persistentVector<'a>(vector.Count + 1,vector.Shift,vector.Root,newTail)
      else
          //full tail, push into tree
          let tailNode = vector.Tail
          let newShift = vector.Shift
  
          //overflow root?
          if (vector.Count >>> 5) > (1 <<< vector.Shift) then
              let newRoot = newNode()
              newRoot.[0] <- vector.Root :> obj
              newRoot.[1] <- newPath(vector.Shift,tailNode) :> obj
              persistentVector<'a>(vector.Count + 1,vector.Shift + 5,newRoot,[| x |])
          else
              let newRoot = pushTail(vector,vector.Shift,vector.Root,tailNode)
  