class CellSkipFilter extends FilterBase {

  @Override
  public ReturnCode filterKeyValue(Cell cell) throws IOException {
    if (skipCellVersion(cell)) {
      return ReturnCode.NEXT_COL;
    }

    ReturnCode code = filter.filterKeyValue(cell);
    if (code == ReturnCode.NEXT_COL || code == ReturnCode.INCLUDE_AND_NEXT_COL) {
      // only store the reference to the keyvalue if we are returning NEXT_COL or INCLUDE_AND_NEXT_COL
      skipColumn = KeyValueUtil.createFirstOnRow(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),
                                                   cell.getFamilyArray(), cell.getFamilyOffset(),
                                                   cell.getFamilyLength(), cell.getQualifierArray(),
                                                   cell.getQualifierOffset(), cell.getQualifierLength());
    } else {
      skipColumn = null;
    }
    return code;
  }

  public  CellSkipFilter(Filter filter);

}