@Override
  public void loadExtension(@NotNull JpsProject project, @NotNull Element componentTag) {
    JpsJavaCompilerConfiguration configuration = JpsJavaExtensionService.getInstance().getCompilerConfiguration(project);
    Element addNotNullTag = componentTag.getChild(ADD_NOTNULL_ASSERTIONS);
    if (addNotNullTag != null) {
      configuration.setAddNotNullAssertions(Boolean.parseBoolean(addNotNullTag.getAttributeValue(ENABLED, "true")));
    }

    readExcludes(componentTag.getChild(EXCLUDE_FROM_COMPILE), configuration.getCompilerExcludes());

    Element resourcePatternsTag = componentTag.getChild(WILDCARD_RESOURCE_PATTERNS);
    if (resourcePatternsTag == null) {
      for (String pattern : DEFAULT_WILDCARD_PATTERNS) {
        configuration.addResourcePattern(pattern);
      }
    }
    else {
      for (Element entry : resourcePatternsTag.getChildren(ENTRY)) {
        String pattern = entry.getAttributeValue(NAME);
        if (!StringUtil.isEmpty(pattern)) {
          configuration.addResourcePattern(pattern);
        }
      }
    }

    Element annotationProcessingTag = componentTag.getChild(ANNOTATION_PROCESSING);
    if (annotationProcessingTag != null) {
      List<Element> profiles = JDOMUtil.getChildren(annotationProcessingTag, "profile");
      for (Element profileTag : profiles) {
        boolean isDefault = Boolean.parseBoolean(profileTag.getAttributeValue("default"));
        if (isDefault) {
          AnnotationProcessorProfileSerializer.readExternal(configuration.getDefaultAnnotationProcessingProfile(), profileTag);
        }
        else {
          AnnotationProcessorProfileSerializer.readExternal(configuration.addAnnotationProcessingProfile(), profileTag);
        }
      }
    }

    Element targetLevelTag = componentTag.getChild(BYTECODE_TARGET_LEVEL);
    if (targetLevelTag != null) {
      configuration.setProjectByteCodeTargetLevel(targetLevelTag.getAttributeValue(TARGET_ATTRIBUTE));
      for (Element moduleTag : JDOMUtil.getChildren(targetLevelTag, MODULE)) {
        String moduleName = moduleTag.getAttributeValue(NAME);
        String level = moduleTag.getAttributeValue(TARGET_ATTRIBUTE);
        if (moduleName != null && level != null) {
          configuration.setModuleByteCodeTargetLevel(moduleName, level);
        }
      }
    }
    String compilerId = JDOMExternalizerUtil.readField(componentTag, "DEFAULT_COMPILER");
    if (compilerId != null) {
      configuration.setJavaCompilerId(compilerId);
    }

    String useReleaseOption = JDOMExternalizerUtil.readField(componentTag, "USE_RELEASE_OPTION");
    if (useReleaseOption != null) {
      configuration.setUseReleaseOption(Boolean.parseBoolean(useReleaseOption));
    }
  }
@Override
  public void loadExtension(@NotNull JpsProject project, @NotNull Element componentTag)