boolean (List<Module> scopeModules) { final List<Chunk<ModuleSourceSet>> chunks = ModuleCompilerUtil.getCyclicDependencies(myProject, scopeModules); for (final Chunk<ModuleSourceSet> chunk : chunks) { final Set<ModuleSourceSet> sourceSets = chunk.getNodes(); if (sourceSets.size() <= 1) { continue; // no need to check one-module chunks } Sdk jdk = null; LanguageLevel languageLevel = null; for (final ModuleSourceSet sourceSet : sourceSets) { Module module = sourceSet.getModule(); final Sdk moduleJdk = ModuleRootManager.getInstance(module).getSdk(); if (jdk == null) { jdk = moduleJdk; } else { if (!jdk.equals(moduleJdk)) { showCyclicModulesErrorNotification("error.chunk.modules.must.have.same.jdk", ModuleSourceSet.getModules(sourceSets)); return false; } } LanguageLevel moduleLanguageLevel = LanguageLevelUtil.getEffectiveLanguageLevel(module); if (languageLevel == null) { languageLevel = moduleLanguageLevel; } else { if (!languageLevel.equals(moduleLanguageLevel)) { showCyclicModulesErrorNotification("error.chunk.modules.must.have.same.language.level", ModuleSourceSet.getModules(sourceSets)); return false; } } } } return true; }