anchor.diff:                  Seq.forall2 (Unchecked.equals) this y
               | _ -> false
   
  +        member internal this.SetHash hash = hashCode := hash; this
  +
           member internal this.NewPath(level,node:Node) =
               if level = 0 then node else
               let ret = Node(root.Thread,Array.create blockSize null)
  
positive.code:             member this.Count() = this.EnsureEditable(); count
              member this.AssocN(i,x) = this.assocN(i,x) :> IVector<'a>
  
  and PersistentVector<[<EqualityConditionalOn>]'a> (count,shift:int,root:Node,tail:obj[])  =
      let hashCode = ref None
      let tailOff = 
          if count < blockSize then 0 else
          ((count - 1) >>> blockSizeShift) <<< blockSizeShift
  
      with
          static member Empty() = PersistentVector<'a>(0,blockSizeShift,Node(),[||])
  
          static member ofSeq(items:'a seq) =
              let mutable ret = TransientVector()
  
negative.code:                 newroot <- newroot.Array.[0] :?> Node
                  newshift <- newshift - blockSizeShift
  
              PersistentVector(count - 1, newshift, newroot, newtail,None)
  
          member this.rangedIterator<'a>(startIndex,endIndex) : 'a seq =
              let i = ref startIndex
  