public void readClasspath(JpsModule model,
                            final String testPattern,
                            Element classpathElement, JpsMacroExpander expander) throws IOException {
    LOG.debug("start loading classpath for " + model.getName());
    final HashSet<String> libs = new HashSet<>();
    for (Element o : classpathElement.getChildren(EclipseXml.CLASSPATHENTRY_TAG)) {
      try {
        readClasspathEntry(model, new ArrayList<>(), new ArrayList<>(), new HashSet<>(),
                           testPattern, o, 0, null, expander.getExpandMacroMap(), libs);
      }
      catch (ConversionException e) {
        throw new IOException(e);
      }
    }
    boolean foundSdkDependency = false;
    JpsDependenciesList dependenciesList = model.getDependenciesList();
    for (JpsDependencyElement element : dependenciesList.getDependencies()) {
      if (element instanceof JpsSdkDependency) {
        foundSdkDependency = true;
        break;
      }
    }
    if (!foundSdkDependency) {
      dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
    }
    if (LOG.isDebugEnabled()) {
      String name = model.getName();
      LOG.debug("finished loading classpath for " + name + " (" + dependenciesList.getDependencies().size() + " items):");
      for (JpsDependencyElement element : dependenciesList.getDependencies()) {
        LOG.debug(" [" + name + "]:" + element.toString());
      }
    }
  }
public void readClasspath(JpsModule model,
                            final String testPattern,
                            Element classpathElement, JpsMacroExpander expander)