anchor.diff:                      reader.GetRow(curr, &row)
   
                       if reader.CompareKey(reader.GetKey(&row)) = 0 then
  -                        res.Add(reader.ConvertRow(&row))
  +                        endRid <- curr
                       else
                           fin <- true
   
                       curr <- curr + 1
   
  -        res.ToArray()
       else
  -        let res = ImmutableArray.CreateBuilder()
  -
  -        for i = 1 to numRows do
  -            reader.GetRow(i, &row)
  +        let mutable rid = 1
  +
  +        while rid <= numRows && startRid = -1 do
  +            reader.GetRow(rid, &row)
   
               if reader.CompareKey(reader.GetKey(&row)) = 0 then
  -                res.Add(reader.ConvertRow(&row))
  -
  -        res.ToArray()
  +                startRid <- rid
  +                endRid <- rid
  +
  +            rid <- rid + 1
  +
  +        let mutable fin = false
  +
  +        while rid <= numRows && not fin do
  +            reader.GetRow(rid, &row)
  +
  +            if reader.CompareKey(reader.GetKey(&row)) = 0 then
  +                endRid <- rid
  +            else
  +                fin <- true
  +
  +    startRid, endRid
  +
  +let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader<'RowT, _, _>) =
  +    let startRid, endRid = seekReadIndexedRowsRange numRows binaryChop reader
  +
  +    if startRid <= 0 || endRid < startRid then
  +        [||]
  +    else
  +
  +        Array.init (endRid - startRid + 1) (fun i ->
  +            let mutable row = Unchecked.defaultof<'RowT>
  +            reader.GetRow(startRid + i, &row)
  +            reader.ConvertRow(&row))
   
   [<Struct>]
   type CustomAttributeRow =
  
positive.code:     abstract CompareKey: 'KeyT -> int
      abstract ConvertRow: byref<'RowT> -> 'T
  
  let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader<'RowT, _, _>) =
      let mutable row = Unchecked.defaultof<'RowT>
  
      if binaryChop then
          let mutable low = 0
  
negative.code:                     reader.GetRow(curr, &row)
  
                      if reader.CompareKey(reader.GetKey(&row)) = 0 then
                          startRid <- curr
                      else
                          fin <- true
  
                  curr <- curr - 1
  
              // read forward
              let mutable fin = false
  