void (final ContentEntry contentEntry, final Set<? extends VirtualFile> included) { if (included.isEmpty()) return; final Set<VirtualFile> parents = new HashSet<>(); for (VirtualFile file : included) { if (Comparing.equal(file, contentEntry.getFile())) return; final VirtualFile parent = file.getParent(); if (parent == null || parents.contains(parent)) continue; parents.add(parent); for (VirtualFile toExclude : parent.getChildren()) { // if it will ever dead-loop on symlink blame anna.kozlova boolean toExcludeSibling = true; for (VirtualFile includeRoot : included) { if (VfsUtilCore.isAncestor(toExclude, includeRoot, false)) { toExcludeSibling = false; break; } } if (toExcludeSibling) { contentEntry.addExcludeFolder(toExclude); } } } processIncluded(contentEntry, parents); }