private void loadState(@NotNull Element state) {
    for (Element classElement : state.getChildren("class")) {
      final String className = LwXmlReader.getRequiredString(classElement, "name");

      // Read "expert" properties
      final Element expertPropertiesElement = classElement.getChild("expert-properties");
      if (expertPropertiesElement != null) {
        Set<String> expertProperties = new HashSet<>();
        for (Element e : expertPropertiesElement.getChildren("property")) {
          expertProperties.add(LwXmlReader.getRequiredString(e, "name"));
        }

        myClass2ExpertProperties.put(className, expertProperties);
      }

      // Read "inplace" property. This property is optional
      final Element inplacePropertyElement = classElement.getChild("inplace-property");
      if (inplacePropertyElement != null) {
        myClass2InplaceProperty.put(className, LwXmlReader.getRequiredString(inplacePropertyElement, "name"));
      }

      final Element enumPropertyElement = classElement.getChild("enum-properties");
      if (enumPropertyElement != null) {
        loadEnumProperties(className, enumPropertyElement);
      }
    }
  }
private void loadState(@NotNull Element state)