void (@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); } } }