void (@NotNull MavenProject rootProject, @NotNull CompilerConfigurationImpl compilerConfiguration, @Nullable ProcessorConfigProfile moduleProfile, boolean isDefault, @NotNull Module module) { List<ProcessorConfigProfile> profiles = new ArrayList<>(compilerConfiguration.getModuleProcessorProfiles()); for (ProcessorConfigProfile p : profiles) { if (p != moduleProfile) { p.removeModuleName(module.getName()); if (p.getModuleNames().isEmpty() && p.getName().startsWith(PROFILE_PREFIX)) { compilerConfiguration.removeModuleProcessorProfile(p); } } if (!isDefault && moduleProfile != null && isSimilarProfiles(p, moduleProfile)) { moduleProfile.setEnabled(p.isEnabled()); final String mavenProjectRootProfileName = getModuleProfileName(rootProject.getDisplayName()); ProcessorConfigProfile mergedProfile = compilerConfiguration.findModuleProcessorProfile(mavenProjectRootProfileName); if (mergedProfile == null) { mergedProfile = new ProcessorConfigProfileImpl(moduleProfile); mergedProfile.setName(mavenProjectRootProfileName); compilerConfiguration.addModuleProcessorProfile(mergedProfile); mergedProfile.addModuleNames(p.getModuleNames()); p.clearModuleNames(); compilerConfiguration.removeModuleProcessorProfile(p); moduleProfile.clearModuleNames(); compilerConfiguration.removeModuleProcessorProfile(moduleProfile); } else if (p == mergedProfile || isSimilarProfiles(mergedProfile, moduleProfile)) { if (moduleProfile != mergedProfile) { mergedProfile.addModuleNames(moduleProfile.getModuleNames()); moduleProfile.clearModuleNames(); compilerConfiguration.removeModuleProcessorProfile(moduleProfile); } if (p != mergedProfile) { mergedProfile.addModuleNames(p.getModuleNames()); p.clearModuleNames(); compilerConfiguration.removeModuleProcessorProfile(p); } } } } }