private void seekOrSkipToNextRow(ExtendedCell cell) throws IOException {
    // If it is a Get Scan, then we know that we are done with this row; there are no more
    // rows beyond the current one: don't try to optimize.
    if (!get) {
      if (trySkipToNextRow(cell)) {
        return;
      }
    }
    seekToNextRow(cell);
  }
If the top cell won't be flushed into disk, the new top cell may be changed after
#reopenAfterFlush. Because the older top cell only exist in the memstore scanner but the
memstore scanner is replaced by hfile scanner after #reopenAfterFlush. If the row of top cell
is changed, we should return the current cells. Otherwise, we may return the cells across
different rows.
@return null is the top cell doesn't change. Otherwise, the NextState to return
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java