public void setLevel(
     @NotNull HighlightDisplayLevel level, @Nullable String scopeName, Project project) {
   if (scopeName == null) {
     myDefaultState.setLevel(level);
   } else {
     if (myTools == null) {
       return;
     }
     ScopeToolState scopeToolState = null;
     int index = -1;
     for (int i = 0; i < myTools.size(); i++) {
       ScopeToolState tool = myTools.get(i);
       if (scopeName.equals(tool.getScopeName())) {
         scopeToolState = tool;
         myTools.remove(tool);
         index = i;
         break;
       }
     }
     if (index < 0) {
       throw new IllegalStateException("Scope " + scopeName + " not found");
     }
     final InspectionToolWrapper toolWrapper = scopeToolState.getTool();
     final NamedScope scope = scopeToolState.getScope(project);
     if (scope != null) {
       myTools.add(
           index, new ScopeToolState(scope, toolWrapper, scopeToolState.isEnabled(), level));
     } else {
       myTools.add(
           index,
           new ScopeToolState(
               scopeToolState.getScopeName(), toolWrapper, scopeToolState.isEnabled(), level));
     }
   }
 }
 public void setDefaultState(
     @NotNull InspectionToolWrapper toolWrapper,
     boolean enabled,
     @NotNull HighlightDisplayLevel level) {
   myDefaultState.setTool(toolWrapper);
   myDefaultState.setLevel(level);
   myDefaultState.setEnabled(enabled);
 }
 public void setLevel(@NotNull HighlightDisplayLevel level) {
   myDefaultState.setLevel(level);
 }
  void readExternal(
      @NotNull Element toolElement,
      @NotNull InspectionProfile profile,
      Map<String, List<String>> dependencies)
      throws InvalidDataException {
    final String levelName = toolElement.getAttributeValue(LEVEL_ATTRIBUTE);
    final ProfileManager profileManager = profile.getProfileManager();
    final SeverityRegistrar registrar =
        ((SeverityProvider) profileManager).getOwnSeverityRegistrar();
    HighlightDisplayLevel level =
        levelName != null ? HighlightDisplayLevel.find(registrar.getSeverity(levelName)) : null;
    if (level == null) {
      level = HighlightDisplayLevel.WARNING;
    }
    myDefaultState.setLevel(level);
    final String enabled = toolElement.getAttributeValue(ENABLED_ATTRIBUTE);
    final boolean isEnabled = enabled != null && Boolean.parseBoolean(enabled);

    final String enabledTool = toolElement.getAttributeValue(ENABLED_BY_DEFAULT_ATTRIBUTE);
    myDefaultState.setEnabled(enabledTool != null ? Boolean.parseBoolean(enabledTool) : isEnabled);
    final InspectionToolWrapper toolWrapper = myDefaultState.getTool();

    final List scopeElements = toolElement.getChildren(ProfileEx.SCOPE);
    final List<String> scopeNames = new ArrayList<String>();
    for (Object sO : scopeElements) {
      final Element scopeElement = (Element) sO;
      final String scopeName = scopeElement.getAttributeValue(ProfileEx.NAME);
      if (scopeName == null) {
        continue;
      }
      final NamedScopesHolder scopesHolder = profileManager.getScopesManager();
      NamedScope namedScope = null;
      if (scopesHolder != null) {
        namedScope = scopesHolder.getScope(scopeName);
      }
      final String errorLevel = scopeElement.getAttributeValue(LEVEL_ATTRIBUTE);
      final String enabledInScope = scopeElement.getAttributeValue(ENABLED_ATTRIBUTE);
      final InspectionToolWrapper copyToolWrapper = toolWrapper.createCopy();
      // check if unknown children exists
      if (scopeElement.getAttributes().size() > 3 || !scopeElement.getChildren().isEmpty()) {
        copyToolWrapper.getTool().readSettings(scopeElement);
      }
      HighlightDisplayLevel scopeLevel =
          errorLevel != null ? HighlightDisplayLevel.find(registrar.getSeverity(errorLevel)) : null;
      if (scopeLevel == null) {
        scopeLevel = level;
      }
      if (namedScope != null) {
        addTool(
            namedScope,
            copyToolWrapper,
            enabledInScope != null && Boolean.parseBoolean(enabledInScope),
            scopeLevel);
      } else {
        addTool(
            scopeName,
            copyToolWrapper,
            enabledInScope != null && Boolean.parseBoolean(enabledInScope),
            scopeLevel);
      }

      scopeNames.add(scopeName);
    }

    for (int i = 0; i < scopeNames.size(); i++) {
      String scopeName = scopeNames.get(i);
      List<String> order = dependencies.get(scopeName);
      if (order == null) {
        order = new ArrayList<String>();
        dependencies.put(scopeName, order);
      }
      for (int j = i + 1; j < scopeNames.size(); j++) {
        order.add(scopeNames.get(j));
      }
    }

    // check if unknown children exists
    if (toolElement.getAttributes().size() > 4
        || toolElement.getChildren().size() > scopeElements.size()) {
      toolWrapper.getTool().readSettings(toolElement);
    }

    myEnabled = isEnabled;
  }