@Override
  protected void loadDocument(Element rootElement) throws Exception {
    ClassLoader classLoader = getClass().getClassLoader();

    Map<MetaModel, List<String>> modelToMorphing = new HashMap<>();

    for (Element element : rootElement.getChildren(META)) {
      loadModel(classLoader, element, modelToMorphing);
    }

    for (Element element : rootElement.getChild(PALETTE).getChildren(GROUP)) {
      loadGroup(element);
    }

    Element wrapInElement = rootElement.getChild(WRAP_IN);
    if (wrapInElement != null) {
      for (Element element : wrapInElement.getChildren(ITEM)) {
        myWrapModels.add(myTag2Model.get(element.getAttributeValue("tag")));
      }
    }

    for (Map.Entry<MetaModel, List<String>> entry : modelToMorphing.entrySet()) {
      MetaModel meta = entry.getKey();
      List<MetaModel> morphingModels = new ArrayList<>();

      for (String tag : entry.getValue()) {
        MetaModel morphingModel = myTag2Model.get(tag);
        if (morphingModel != null) {
          morphingModels.add(morphingModel);
        }
      }

      if (!morphingModels.isEmpty()) {
        meta.setMorphingModels(morphingModels);
      }
    }
  }
@Override
  protected void loadDocument(Element rootElement)