void (final ModuleDescriptor mainModule, final ModuleDescriptor module) { for (File contentRoot : module.getContentRoots()) { final File _contentRoot = appendContentRoot(mainModule, contentRoot); final Collection<DetectedSourceRoot> sources = module.getSourceRoots(contentRoot); for (DetectedSourceRoot source : sources) { mainModule.addSourceRoot(_contentRoot, source); } } for (File jar : module.getLibraryFiles()) { mainModule.addLibraryFile(jar); } // fix forward dependencies for (ModuleDescriptor dependency : module.getDependencies()) { if (!mainModule.equals(dependency)) { // avoid self-dependencies mainModule.addDependencyOn(dependency); } } myModules.remove(module); // fix back dependencies for (ModuleDescriptor moduleDescr : myModules) { if (moduleDescr.getDependencies().contains(module)) { moduleDescr.removeDependencyOn(module); if (!moduleDescr.equals(mainModule)) { // avoid self-dependencies moduleDescr.addDependencyOn(mainModule); } } } }