code: private List<Cell> preprocessDeleteMarkers(List<Cell> cells) {
      List<Cell> resultCells = Lists.newArrayList();
  
      // Group cells by column family, since DeleteMarkers do not apply across families.
      Map<String, Collection<Cell>> dataCellsByFamilyMap =
          Multimaps.index(
              Iterables.filter(cells, Predicates.not(IS_DELETE_MARKER_FILTER)),
              COLUMN_FAMILY_EXTRACTOR).asMap();
      Map<String, Collection<Cell>> deleteMarkersByFamilyMap =
          Multimaps.index(
              Iterables.filter(cells, IS_DELETE_MARKER_FILTER), COLUMN_FAMILY_EXTRACTOR).asMap();
      for (Map.Entry<String, Collection<Cell>> e : dataCellsByFamilyMap.entrySet()) {
        processOneColumnFamily(resultCells, e.getValue(), deleteMarkersByFamilyMap.get(e.getKey()));
      }
      return resultCells;
    }
docs: Process