class ProcFdWalker extends SimpleFileVisitor<Path> {

        private final Set<String> openFiles = new HashSet<>();

        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {<FILL_FUNCTION_BODY>}

        @Override
        public FileVisitResult visitFileFailed(Path file, IOException exc) {
            // we definitely won't be able to access all the files, and it's common for a file to go missing mid-traversal
            // so don't log when one of those things happens
            if (!((exc instanceof AccessDeniedException) || (exc instanceof NoSuchFileException))) {
                Jvm.warn().on(ProcFdWalker.class, "Error visiting file", exc);
            }
            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
            if (!dir.toAbsolutePath().toString().matches("/proc(/\\d+(/fd)?)?")) {
                return FileVisitResult.SKIP_SUBTREE;
            }
            return FileVisitResult.CONTINUE;
        }
    }

            if (file.toAbsolutePath().toString().matches("/proc/\\d+/fd/\\d+")) {
                try {
                    final String e = file.toRealPath().toAbsolutePath().toString();
                    openFiles.add(e);
                } catch (NoSuchFileException | AccessDeniedException e) {
                    // Ignore, sometimes they disappear & we can't access all the files
                } catch (IOException e) {
                    Jvm.warn().on(ProcFdWalker.class, "Error resolving " + file, e);
                }
            }
            return FileVisitResult.CONTINUE;
        
<no_super_class>