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