boolean (@NotNull VirtualFile root, @Nullable VirtualFileFilter filter, @NotNull ContentIterator iterator, VirtualFileVisitor.Option @NotNull ... options) { VirtualFileVisitor.Result result = visitChildrenRecursively(root, new VirtualFileVisitor<Void>(options) { @Override public @NotNull Result visitFileEx(@NotNull VirtualFile file) { if (filter != null && !filter.accept(file)) return SKIP_CHILDREN; if (!iterator.processFile(file)) return skipTo(root); return CONTINUE; } }); return !Comparing.equal(result.skipToParent, root); }