@Override
  public MatchCode checkColumn(ExtendedCell cell, byte type) throws IOException {
    if (columns == null) {
      return MatchCode.INCLUDE;
    }

    while (!done()) {
      int c =
        CellUtil.compareQualifiers(cell, columns[columnIndex], 0, columns[columnIndex].length);
      if (c < 0) {
        return MatchCode.SEEK_NEXT_COL;
      }

      if (c == 0) {
        // We drop old version in #isDeleted, so here we must return INCLUDE.
        return MatchCode.INCLUDE;
      }

      columnIndex++;
    }
    // No more columns left, we are done with this query
    return MatchCode.SEEK_NEXT_ROW;
  }
This method is not idempotent, we will save some info to judge VERSION_MASKED.
@param cell - current cell to check if deleted by a previously seen delete
@return We don't distinguish DeleteColumn and DeleteFamily. We only return code for column.
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.java