@Override
 protected void setUpModuleJdk(
     ModifiableRootModel rootModel,
     Collection<String> unknownJdks,
     EclipseModuleManager eclipseModuleManager,
     String jdkName) {
   if (jdkName == null) {
     rootModel.inheritSdk();
   } else {
     final Sdk moduleJdk = ProjectJdkTable.getInstance().findJdk(jdkName);
     if (moduleJdk != null) {
       rootModel.setSdk(moduleJdk);
     } else {
       rootModel.setInvalidSdk(jdkName, IdeaXml.JAVA_SDK_TYPE);
       eclipseModuleManager.setInvalidJdk(jdkName);
       unknownJdks.add(jdkName);
     }
   }
   rearrangeOrderEntryOfType(rootModel, JdkOrderEntry.class);
 }
 public void readClasspath(
     ModifiableRootModel model,
     final Collection<String> unknownLibraries,
     Collection<String> unknownJdks,
     final Set<String> usedVariables,
     Set<String> refsToModules,
     final String testPattern,
     Element classpathElement)
     throws IOException, ConversionException {
   for (OrderEntry orderEntry : model.getOrderEntries()) {
     if (!(orderEntry instanceof ModuleSourceOrderEntry)) {
       model.removeOrderEntry(orderEntry);
     }
   }
   int idx = 0;
   for (Object o : classpathElement.getChildren(EclipseXml.CLASSPATHENTRY_TAG)) {
     try {
       readClasspathEntry(
           model,
           unknownLibraries,
           unknownJdks,
           usedVariables,
           refsToModules,
           testPattern,
           (Element) o,
           idx++,
           EclipseModuleManagerImpl.getInstance(model.getModule()),
           ((BasePathMacroManager) PathMacroManager.getInstance(model.getModule()))
               .getExpandMacroMap());
     } catch (ConversionException e) {
       ErrorLog.rethrow(ErrorLog.Level.Warning, null, EclipseXml.CLASSPATH_FILE, e);
     }
   }
   if (!model.isSdkInherited() && model.getSdkName() == null) {
     EclipseModuleManagerImpl.getInstance(model.getModule()).setForceConfigureJDK();
     model.inheritSdk();
   }
 }