void (@NotNull Element parentNode) { myState = XmlSerializer.deserialize(parentNode, State.class); if (!myProject.isDefault()) { for (Element option : parentNode.getChildren("option")) { if ("DEFAULT_COMPILER".equals(option.getAttributeValue("name"))) { break; } } } final Element notNullAssertions = parentNode.getChild(JpsJavaCompilerConfigurationSerializer.ADD_NOTNULL_ASSERTIONS); if (notNullAssertions != null) { myAddNotNullAssertions = Boolean.parseBoolean(notNullAssertions.getAttributeValue(JpsJavaCompilerConfigurationSerializer.ENABLED, "true")); } Element node = parentNode.getChild(JpsJavaCompilerConfigurationSerializer.EXCLUDE_FROM_COMPILE); if (node != null) { myExcludesConfiguration.readExternal(node); } try { removeRegexpPatterns(); node = parentNode.getChild(JpsJavaCompilerConfigurationSerializer.RESOURCE_EXTENSIONS); if (node != null) { for (final Element element : node.getChildren(JpsJavaCompilerConfigurationSerializer.ENTRY)) { String pattern = element.getAttributeValue(JpsJavaCompilerConfigurationSerializer.NAME); if (!StringUtil.isEmpty(pattern)) { addRegexpPattern(pattern); } } } node = parentNode.getChild(JpsJavaCompilerConfigurationSerializer.WILDCARD_RESOURCE_PATTERNS); if (node != null) { myWildcardPatternsInitialized = true; removeWildcardPatterns(); for (Element element : node.getChildren(JpsJavaCompilerConfigurationSerializer.ENTRY)) { String pattern = element.getAttributeValue(JpsJavaCompilerConfigurationSerializer.NAME); if (!StringUtil.isEmpty(pattern)) { addWildcardResourcePattern(pattern); } } } } catch (MalformedPatternException e) { LOG.error(e); } myModuleProcessorProfiles.clear(); myProcessorsProfilesMap = null; final Element annotationProcessingSettings = parentNode.getChild(JpsJavaCompilerConfigurationSerializer.ANNOTATION_PROCESSING); if (annotationProcessingSettings != null) { final List profiles = annotationProcessingSettings.getChildren("profile"); if (!profiles.isEmpty()) { for (Object elem : profiles) { final Element profileElement = (Element)elem; final boolean isDefault = "true".equals(profileElement.getAttributeValue("default")); if (isDefault) { AnnotationProcessorProfileSerializer.readExternal(myDefaultProcessorsProfile, profileElement); } else { final ProcessorConfigProfile profile = new ProcessorConfigProfileImpl(""); AnnotationProcessorProfileSerializer.readExternal(profile, profileElement); myModuleProcessorProfiles.add(profile); } } } else { // assuming older format loadProfilesFromOldFormat(annotationProcessingSettings); } } myBytecodeTargetLevel = null; myModuleBytecodeTarget.clear(); Element bytecodeTargetElement = parentNode.getChild(JpsJavaCompilerConfigurationSerializer.BYTECODE_TARGET_LEVEL); if (bytecodeTargetElement != null) { myBytecodeTargetLevel = bytecodeTargetElement.getAttributeValue(JpsJavaCompilerConfigurationSerializer.TARGET_ATTRIBUTE); readByteTargetLevel(parentNode, myModuleBytecodeTarget); } loadStateFromExternalStorage(); }