public FileSetLimiter removeOlderFiles() throws IOException {
    if (!Files.exists(directory) || !Files.isDirectory(directory)) {
      return this; //no house to keep
    }
    // find files matching fileNameFormat, extract dates of creation, and remove the oldest files
    try (final Stream<Path> children = Files.list(directory)) {
      final Comparator<Pair<Path, Date>> byDateOfCreation = comparing(pair -> pair.second);
      final List<Path> excessiveFilesToRemove = children.map(this::tryParsePath)
        .filter(pair -> pair.second != null)
        .sorted(byDateOfCreation.reversed())
        .skip(maxFilesToKeep)
        .map(pair -> pair.first)
        .collect(toList());

      filesDeleter.accept(excessiveFilesToRemove);
    }
    return this;
  }
public FileSetLimiter removeOlderFiles()