anchor.diff:          if c.Value.MoveLast() then c.Value.Current else invalidOp "Series is empty"
   
       member this.TryFind(k:'K, direction:Lookup, [<Out>] result: byref<KeyValuePair<'K, 'V>>) = 
  -      if c.Value.MoveAt(k, direction) then 
  +      if c.Value.MoveAt(k, direction) then
           result <- c.Value.Current 
           true
         else false
  
positive.code: 
          if not moved then continueMoves <- false
          // must add it back regardless of moves
          discreteKeysSet.Add(KV(ac.CurrentKey, first.Value)) |> ignore
  
        // now all discrete cursors have moved at or ahead of frontier
  
negative.code: 
      // Manual state machine instead of a task computation expression, this is visibly faster
      let doMoveNextDiscreteTask(ct:CancellationToken) : Task<bool> =
        #if PRERELEASE
        Trace.Assert(this.HasValidState)
        #endif
        let mutable tcs = Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Create() //new TaskCompletionSource<_>() //
        let returnTask = tcs.Task // NB! must access this property first
        let mutable firstStep = ref true
  