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