anchor.diff:    // TODO(?) replace with a mutable struct, like in SCG.SortedList<T>, there are too many virtual calls and reference cells in the most critical paths like MoveNext
     // NB Object expression with ref cells are surprisingly fast compared to a custom class or even a struct
     member internal this.GetCursor(index:int,cursorVersion:int,currentKey:'K, currentValue:'V) =
  -    let index = ref index
  -    let cursorVersion = ref cursorVersion
  -    let currentKey : 'K ref = ref currentKey
  -    let currentValue : 'V ref = ref currentValue
  -    let isBatch = ref false
  +    let mutable index = index
  +    let mutable cursorVersion = cursorVersion
  +    let mutable currentKey : 'K = currentKey
  +    let mutable currentValue : 'V = currentValue
  +    let mutable isBatch = false
   
       let observerStarted = ref false
       let mutable semaphore : SemaphoreSlim = Unchecked.defaultof<_>
  
positive.code:           let entered = enterLockIf syncRoot  isSynchronized
            try
              if this.size > 0 then
                index := 0
                currentKey := this.GetKeyByIndex(index.Value)
                currentValue := this.values.[index.Value]
                true
              else
                p.Reset()
  
negative.code:           let entered = enterLockIf syncRoot  isSynchronized
            try
              if this.size > 0 then
                index <- this.size - 1
                currentKey <- this.GetKeyByIndex(index)
                currentValue <- this.values.[index]
                true
              else
                p.Reset()
  