anchor.diff:  open Spreads.Collections
   
   
  -
  -
   /// Range from start to end key. 
   //[<DebuggerTypeProxy(typeof<SeriesDebuggerProxy<_,_>>)>]
   type RangeCursor<'K,'V>(cursorFactory:Func<ICursor<'K,'V>>, startKey:'K option, endKey:'K option, startLookup: Lookup option, endLookup:Lookup option) =
  
positive.code:       else false
        
      member this.MoveFirst(): bool = 
        if hasValues && this.InputCursor.MoveAt(first, firstLookup) then
          started <- true
          true
        else false
      
      member this.MoveLast(): bool = 
        if hasValues && this.InputCursor.MoveAt(last, lastLookup) then
          started <- true
          true
        else false
  
      member this.MovePrevious(): bool = 
        if started then
          if this.InputCursor.MovePrevious() && this.InputCursor.Comparer.Compare(this.InputCursor.CurrentKey, first) >= 0 then
            true
          else false
        else (this :> ICursor<'K,'V>).MoveLast()
  
negative.code:     member this.Reset() = this.Reset()
      member this.MoveNext(): bool =
        if started then
          if this.InputCursor.MoveNext() && endOk this.InputCursor.CurrentKey then
            true
          else false
        else (this :> ICursor<'K,'V>).MoveFirst()
  