anchor.diff:              tail.[count &&& Literals2.blockIndexMask] <- x :> obj
           else
               //full tail, push into tree
  -            let tailNode = NodeR(root.Thread,tail)
  +            let tailNode = NodeR(root.ThreadId,tail)
               let newShift = shift
               let newTail = Array.create Literals2.blockSize null
               newTail.[0] <- x :> obj
  
positive.code: open System.Threading
  #if FX_NO_THREAD
  #else
  type NodeR(thread,array:obj[]) =
      let mutable thread = thread
      new() = NodeR(null,Array.create Literals2.blockSize null)
      static member InCurrentThread() = NodeR(Thread.CurrentThread,Array.create Literals2.blockSize null)
      member this.Array = array
      member this.Thread = thread
      member this.SetThread t = thread <- t
  
  type internal TransientVect<'T> (count,shift:int,root:NodeR,tail:obj[]) =
      let mutable count = count
  
negative.code:         // else alloc new path
          //return  nodeToInsert placed in copy of parent
          let subidx = ((count - 1) >>> level) &&& Literals2.blockIndexMask
          let ret = NodeR(parent.ThreadId,Array.copy parent.Array)
  
          let nodeToInsert =
              if level = Literals2.blockSizeShift then tailnode else
  