@Nullable
  @Override
  public ArrangementSettings deserialize(@NotNull Element element) {
    final Set<StdArrangementRuleAliasToken> tokensDefinition = deserializeTokensDefinition(element, myDefaultSettings);
    final List<ArrangementGroupingRule> groupingRules = deserializeGropings(element, myDefaultSettings);
    final Element rulesElement = element.getChild(RULES_ELEMENT_NAME);
    final List<ArrangementSectionRule> sectionRules = new ArrayList<>();
    if(rulesElement == null) {
      sectionRules.addAll(myDefaultSettings.getSections());
    }
    else {
      sectionRules.addAll(deserializeSectionRules(rulesElement, tokensDefinition));
      if (sectionRules.isEmpty()) {
        // for backward compatibility
        final List<StdArrangementMatchRule> rules = deserializeRules(rulesElement, tokensDefinition);
        return StdArrangementSettings.createByMatchRules(groupingRules, rules);
      }
    }

    if (tokensDefinition == null) {
      return new StdArrangementSettings(groupingRules, sectionRules);
    }
    return new StdArrangementExtendableSettings(groupingRules, sectionRules, tokensDefinition);
  }
@Nullable
  @Override
  public ArrangementSettings deserialize(@NotNull Element element)