void (@NotNull Module module, @NotNull Set<? super Module> result) { if (!result.add(module)) { return; } ModuleManager moduleManager = ModuleManager.getInstance(module.getProject()); List<Module> dependentModules = moduleManager.getModuleDependentModules(module); for (Module dependentModule : dependentModules) { OrderEntry[] orderEntries = ModuleRootManager.getInstance(dependentModule).getOrderEntries(); for (OrderEntry o : orderEntries) { if (o instanceof ModuleOrderEntry orderEntry) { if (orderEntry.getModule() == module) { if (orderEntry.isExported()) { collectModulesDependsOn(dependentModule, result); } else { result.add(dependentModule); } break; } } } } }