anchor.diff:          if level > Literals2.blockSizeShift then
               let newchild = this.PopTail(level - Literals2.blockSizeShift, node.Array.[subidx] :?> NodeR)
               if newchild = Unchecked.defaultof<NodeR> && subidx = 0 then Unchecked.defaultof<NodeR> else
  -            let ret = NodeR(root.Thread, Array.copy node.Array);
  +            let ret = NodeR(root.ThreadId, Array.copy node.Array);
               ret.Array.[subidx] <- newchild  :> obj
               ret
   
           elif subidx = 0 then Unchecked.defaultof<NodeR> else
   
  -        let ret = new NodeR(root.Thread, Array.copy node.Array)
  +        let ret = new NodeR(root.ThreadId, Array.copy node.Array)
           ret.Array.[subidx] <- null
           ret
   
  
positive.code:         else raise (System.IndexOutOfRangeException())
  
      member internal this.doAssoc(level,node:NodeR,i,x) =
          let ret = NodeR(root.Thread,Array.copy node.Array)
          if level = 0 then 
              ret.Array.[i &&& Literals2.blockIndexMask] <- x :> obj 
          else
  
negative.code:             RandomAccessList<'T>(count + 1,shift,root,newTail) 
          else
              //full tail, push into tree
              let tailNode = NodeR(root.ThreadId,tail)
              let newShift = shift
  
              //overflow root?
  