anchor.diff:          if i >= vector.TailOff then
               let newTail = Array.copy vector.Tail
               newTail.[i &&& 0x01f] <- x :> obj
  -            transientVector(vector.Count, vector.Shift, vector.Root, newTail)
  +            TransientVector(vector.Count, vector.Shift, vector.Root, newTail)
           else
  -            transientVector(vector.Count, vector.Shift, doAssoc(vector.Shift, vector.Root, i, x), vector.Tail)
  +            TransientVector(vector.Count, vector.Shift, doAssoc(vector.Shift, vector.Root, i, x), vector.Tail)
       elif i = vector.Count then
           cons x vector
       else raise Exceptions.OutOfBounds
  
positive.code:             i := !i + 1 
         }
  
  let toSeq vector = rangedIterator 0 vector.Count vector
negative.code: 
  let emptyNode = newNode()
  
  type TransientVector<'a> (count,shift,root,tail) = 
      let tailOff = 
          if count < 32 then 0 else
          ((count - 1) >>> 5) <<< 5
      with
          member this.Count = count
          member internal this.Shift = shift
          member internal this.Root = root
          member internal this.Tail = tail
          member internal this.TailOff = tailOff
  
  let inline count (vector:TransientVector<'a>) = vector.Count
  
  let empty<'a> = TransientVector<'a>(0,5,emptyNode,[||])
  
  let rec newPath(level,node:Node) =
      if level = 0 then node else
  