@Override
  public ReturnCode filterCell(final Cell c) {
    final int startIndex = Math.max(lastFoundIndex, 0);
    final int size = fuzzyKeysData.size();
    for (int i = startIndex; i < size + startIndex; i++) {
      final int index = i % size;
      Pair<byte[], byte[]> fuzzyData = fuzzyKeysData.get(index);
      // This shift is idempotent - always end up with 0 and -1 as mask values.
      for (int j = 0; j < fuzzyData.getSecond().length; j++) {
        fuzzyData.getSecond()[j] >>= 2;
      }
      SatisfiesCode satisfiesCode = satisfies(isReversed(), c.getRowArray(), c.getRowOffset(),
        c.getRowLength(), fuzzyData.getFirst(), fuzzyData.getSecond());
      if (satisfiesCode == SatisfiesCode.YES) {
        lastFoundIndex = index;
        return ReturnCode.INCLUDE;
      }
    }
    // NOT FOUND -> seek next using hint
    lastFoundIndex = -1;
    filterRow = true;
    return ReturnCode.SEEK_NEXT_USING_HINT;

  }
Returns the Fuzzy keys in the format expected by the constructor.
@return the Fuzzy keys in the format expected by the constructor
hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FuzzyRowFilter.java