private static void processSubfolders(@Nullable Path dir, Consumer<? super Path> processor) {
    if (dir == null || !Files.isDirectory(dir) || Files.isSymbolicLink(dir)) { return; }
    try (Stream<Path> files = Files.list(dir)) {
      files.forEach(candidate -> {
        if (Files.isDirectory(candidate)) {
          processor.accept(candidate);
        }
      });
    } catch (IOException ignore) {}
  }
private static void processSubfolders(@Nullable Path dir, Consumer<? super Path> processor)