TemplateGroup (@NotNull Element element, boolean isDefault, boolean registerTemplate, TemplateGroup parsedGroup) { TemplateGroup result = new TemplateGroup(parsedGroup.getName(), element.getAttributeValue("REPLACE")); Map<String, TemplateImpl> created = new LinkedHashMap<>(); for (TemplateImpl template : parsedGroup.getElements()) { if (isDefault) { myDefaultTemplates.put(TemplateKey.keyOf(template), template); } TemplateImpl existing = getTemplate(template.getKey(), template.getGroupName()); boolean defaultTemplateModified = isDefault && (myState.deletedKeys.contains(TemplateKey.keyOf(template)) || myTemplatesById.containsKey(template.getId()) || existing != null); if(!defaultTemplateModified) { created.put(template.getKey(), template); } if (isDefault && existing != null) { existing.getTemplateContext().setDefaultContext(template.getTemplateContext()); } } if (registerTemplate) { TemplateGroup existingScheme = mySchemeManager.findSchemeByName(result.getName()); if (existingScheme != null) { result = existingScheme; } } for (TemplateImpl template : created.values()) { if (registerTemplate) { clearPreviouslyRegistered(template); addTemplateImpl(template); } addTemplateById(template); result.addElement(template); } if (registerTemplate) { TemplateGroup existingScheme = mySchemeManager.findSchemeByName(result.getName()); if (existingScheme == null && !result.isEmpty()) { mySchemeManager.addScheme(result, false); } } return result.isEmpty() ? null : result; }