void (List<? super AbstractTreeNode<?>> container, PsiDirectory dir, @Nullable ModuleFileIndex moduleFileIndex, ViewSettings viewSettings, @Nullable PsiFileSystemItemFilter filter) { final Project project = dir.getProject(); PsiDirectory[] subdirs = dir.getSubdirectories(); for (PsiDirectory subdir : subdirs) { if (skipDirectory(subdir) || filter != null && !filter.shouldShow(subdir)) { continue; } if (moduleFileIndex != null && !moduleFileIndex.isInContent(subdir.getVirtualFile())) { container.add(new PsiDirectoryNode(project, subdir, viewSettings, filter)); continue; } if (viewSettings.isHideEmptyMiddlePackages()) { if (!isEmptyMiddleDirectory(subdir, false, filter)) { container.add(new PsiDirectoryNode(project, subdir, viewSettings, filter)); } } else { container.add(new PsiDirectoryNode(project, subdir, viewSettings, filter)); } addAllSubpackages(container, subdir, moduleFileIndex, viewSettings, filter); } }