anchor.diff:          ret.persistent()
   
       override this.GetHashCode() =
  -        match !hashCode with
  +        match hashCode with
           | None ->
               let mutable hash = 1
               for x in this.rangedIterator(0,count) do
                   hash <- 31 * hash + Unchecked.hash x
  -            hashCode := Some hash
  +            hashCode <- Some hash
               hash
           | Some hash -> hash
   
  
positive.code:         if count = 1 then RandomAccessList<'T>.Empty() else
  
          if count - tailOff > 1 then 
              let mutable newroot = NodeR(ref Thread.CurrentThread, root.Array.Clone() :?> obj[])
              let mutable ret = TransientVect(count - 1, shift, newroot, tail.[0..(tail.Length-1)])
              ret.persistent() 
          else
  
negative.code:         ((count - 1) >>> Literals2.blockSizeShift) <<< Literals2.blockSizeShift
          
  and RandomAccessList<'T> (count,shift:int,root:NodeR,tail:obj[])  =
      let mutable hashCode = None
      let tailOff = 
          if count < Literals2.blockSize then 0 else
          ((count - 1) >>> Literals2.blockSizeShift) <<< Literals2.blockSizeShift
  