void (VirtualFile root, Processor<? super VirtualFile> consumer) { VfsUtilCore.visitChildrenRecursively(root, new VirtualFileVisitor<Void>() { @Override public boolean visitFile(@NotNull VirtualFile file) { return (myService.shouldProcess(file) || myProjectFileFilter.test(file)) && consumer.process(file); } @Nullable @Override public Iterable<VirtualFile> getChildrenIterable(@NotNull VirtualFile file) { return file instanceof NewVirtualFile ? ((NewVirtualFile)file).getCachedChildren() : null; } }); }