@Override
  public Element getState() {
    Element root = new Element("EclipseModuleSettings");

    for (String eclipseUrl : myEclipseUrls) {
      root.addContent(new Element(LIBELEMENT).setAttribute(VALUE_ATTR, eclipseUrl));
    }

    for (String var : myEclipseVariablePaths.keySet()) {
      Element varElement = new Element(VARELEMENT);
      if (var.startsWith(SRC_PREFIX)) {
        varElement.setAttribute(VAR_ATTRIBUTE, StringUtil.trimStart(var, SRC_PREFIX));
        varElement.setAttribute(PREFIX_ATTR, SRC_PREFIX);
      }
      else if (var.startsWith(SRC_LINK_PREFIX)) {
        varElement.setAttribute(VAR_ATTRIBUTE, StringUtil.trimStart(var, SRC_LINK_PREFIX));
        varElement.setAttribute(PREFIX_ATTR, SRC_LINK_PREFIX);
      }
      else if (var.startsWith(LINK_PREFIX)) {
        varElement.setAttribute(VAR_ATTRIBUTE, StringUtil.trimStart(var, LINK_PREFIX));
        varElement.setAttribute(PREFIX_ATTR, LINK_PREFIX);
      }
      else {
        varElement.setAttribute(VAR_ATTRIBUTE, var);
      }
      varElement.setAttribute(VALUE_ATTR, myEclipseVariablePaths.get(var));
      root.addContent(varElement);
    }

    for (String unknownCon : myUnknownCons) {
      root.addContent(new Element(CONELEMENT).setAttribute(VALUE_ATTR, unknownCon));
    }

    if (myForceConfigureJDK) {
      root.setAttribute(FORCED_JDK, String.valueOf(true));
    }

    Element srcDescriptionElement = new Element(SRC_DESCRIPTION);
    srcDescriptionElement.setAttribute(EXPECTED_POSITION, String.valueOf(myExpectedModuleSourcePlace));
    for (String srcUrl : mySrcPlace.keySet()) {
      Element srcFolder = new Element(SRC_FOLDER);
      srcFolder.setAttribute(VALUE_ATTR, srcUrl);
      srcFolder.setAttribute(EXPECTED_POSITION, mySrcPlace.get(srcUrl).toString());
      srcDescriptionElement.addContent(srcFolder);
    }
    root.addContent(srcDescriptionElement);

    return root;
  }
@Override
  public Element getState()