boolean (@NotNull ContentIterator processor, @Nullable VirtualFileFilter filter, @NotNull Collection<VirtualFile> topLevelRecursiveRoots, @NotNull Collection<VirtualFile> nonRecursiveRoots) { ContentIteratorEx processorEx = toContentIteratorEx(processor); for (VirtualFile root : topLevelRecursiveRoots) { if (!iterateContentUnderDirectory(root, processorEx, filter)) { return false; } } for (VirtualFile root : nonRecursiveRoots) { if ((filter == null || filter.accept(root)) && processorEx.processFileEx(root) == TreeNodeProcessingResult.STOP) { return false; } } return true; }