code: @Override
    public Predicate<Cell> apply(Cell deleteMarker) {
      checkArgument(CellUtil.isDelete(deleteMarker), "expecting delete marker cell.");
      switch (KeyValue.Type.codeToType(deleteMarker.getTypeByte())) {
        case Delete:
          // Delete specific column by exact timestamp.
          return Predicates.and(
              new MatchQualifier(deleteMarker), new MatchExactTimestamp(deleteMarker));
        case DeleteFamilyVersion:
          // Delete all column in family by exact timestamp.
          return new MatchExactTimestamp(deleteMarker);
        case DeleteColumn:
          // Delete specific column up to a timestamp
          return Predicates.and(
              new MatchQualifier(deleteMarker), new MatchTimestampRangeByUpperBound(deleteMarker));
        case DeleteFamily:
          // Delete all columns in a family up to a timestamp
          return new MatchTimestampRangeByUpperBound(deleteMarker);
        default: throw new IllegalStateException(
            "Unexpected type byte: " + deleteMarker.getTypeByte());
      }
    }
docs: {@inheritDoc}