private void loadModules(Element root) {
   Element componentRoot = findComponent(root, "ProjectModuleManager");
   if (componentRoot == null) return;
   final Element modules = componentRoot.getChild("modules");
   for (Element moduleElement : JDOMUtil.getChildren(modules, "module")) {
     final String path = moduleElement.getAttributeValue("filepath");
     JpsModule module = loadModule(path);
     myProject.addModule(module);
   }
 }
  protected <T extends JpsElement> JpsModule addModule(
      String moduleName,
      String[] srcPaths,
      @Nullable String outputPath,
      @Nullable String testOutputPath,
      JpsSdk<T> sdk) {
    JpsModule module = myProject.addModule(moduleName, JpsJavaModuleType.INSTANCE);
    final JpsSdkType<T> sdkType = sdk.getSdkType();
    final JpsSdkReferencesTable sdkTable = module.getSdkReferencesTable();
    sdkTable.setSdkReference(sdkType, sdk.createReference());

    if (sdkType instanceof JpsJavaSdkTypeWrapper) {
      final JpsSdkReference<T> wrapperRef = sdk.createReference();
      sdkTable.setSdkReference(
          JpsJavaSdkType.INSTANCE,
          JpsJavaExtensionService.getInstance()
              .createWrappedJavaSdkReference((JpsJavaSdkTypeWrapper) sdkType, wrapperRef));
    }
    module.getDependenciesList().addSdkDependency(sdkType);
    if (srcPaths.length > 0 || outputPath != null) {
      for (String srcPath : srcPaths) {
        module.getContentRootsList().addUrl(JpsPathUtil.pathToUrl(srcPath));
        module.addSourceRoot(JpsPathUtil.pathToUrl(srcPath), JavaSourceRootType.SOURCE);
      }
      JpsJavaModuleExtension extension =
          JpsJavaExtensionService.getInstance().getOrCreateModuleExtension(module);
      if (outputPath != null) {
        extension.setOutputUrl(JpsPathUtil.pathToUrl(outputPath));
        if (!StringUtil.isEmpty(testOutputPath)) {
          extension.setTestOutputUrl(JpsPathUtil.pathToUrl(testOutputPath));
        } else {
          extension.setTestOutputUrl(extension.getOutputUrl());
        }
      } else {
        extension.setInheritOutput(true);
      }
    }
    return module;
  }