protected void convertSubSystemsAndRoot(
      String rootElement, MontiArcStringBuilder builder, boolean instantiate) {
    String simpleName = matlab.doGetSimpleNameLimiterBased(rootElement);

    if (getDeltaOperationForElement(rootElement) == DeltaOperation.REPLACE) {
      simpleName =
          simpleName.substring(
              simpleName.indexOf(DeltaSimulinkKeyWords.REPLACE_WITH)
                  + DeltaSimulinkKeyWords.REPLACE_WITH.length());
    }
    simpleName = simpleName.trim();
    if (instantiate) {
      builder.startCreateInnerComponent(simpleName, simpleName);
    } else {
      builder.startCreateComponent(simpleName);
    }
    convertPorts(rootElement, builder);

    convertSubSystems(rootElement, builder);

    convertModelReferences(rootElement, builder);

    convertSignals(rootElement, builder);

    builder.endCreateInnerComponent();
  }
  protected void convertSubSystems(String rootElement, MontiArcStringBuilder builder) {
    List<String> qualifiedSubSystems = loadSubSystems(rootElement);

    for (String qualifiedSubSystem : qualifiedSubSystems) {

      String unqualifiedSubSystem = getSimpleName(qualifiedSubSystem);

      builder.startCreateInnerComponent(unqualifiedSubSystem, unqualifiedSubSystem);
      convertPorts(qualifiedSubSystem, builder);

      convertSubSystems(qualifiedSubSystem, builder);

      convertModelReferences(qualifiedSubSystem, builder);

      convertSignals(qualifiedSubSystem, builder);

      builder.endCreateInnerComponent();
    }
  }