Collection<PsiJavaModule> (Collection<PsiJavaModule> modules, String moduleName, GlobalSearchScope scope) { if (modules.size() > 1 && PsiJavaModule.UPGRADEABLE.contains(moduleName) && scope instanceof ModuleWithDependenciesScope) { Module module = ((ModuleWithDependenciesScope)scope).getModule(); boolean isModular = Stream.of(ModuleRootManager.getInstance(module).getSourceRoots(true)) .filter(scope::contains) .anyMatch(root -> root.findChild(PsiJavaModule.MODULE_INFO_FILE) != null); if (isModular) { List<PsiJavaModule> list = new ArrayList<>(modules); ModuleFileIndex index = ModuleRootManager.getInstance(module).getFileIndex(); for (ListIterator<PsiJavaModule> i = list.listIterator(); i.hasNext(); ) { PsiJavaModule candidate = i.next(); if (index.getOrderEntryForFile(PsiImplUtil.getModuleVirtualFile(candidate)) instanceof JdkOrderEntry) { if (i.previousIndex() > 0) { i.remove(); // not at the top -> is upgraded } else { list = Collections.singletonList(candidate); // shadows subsequent modules break; } } } if (list.size() != modules.size()) { modules = list; } } } return modules; }