package jetbrains.mps.lang.descriptor.generator.template.main;

/*Generated by MPS */

import jetbrains.mps.generator.runtime.Generated;
import jetbrains.mps.generator.runtime.TemplateDeclarationBase;
import org.jetbrains.mps.openapi.model.SNodeReference;
import jetbrains.mps.generator.runtime.TemplateContext;
import jetbrains.mps.generator.runtime.ApplySink;
import jetbrains.mps.generator.runtime.GenerationException;
import jetbrains.mps.generator.runtime.TemplateExecutionEnvironment;
import java.util.List;
import org.jetbrains.mps.openapi.model.SNode;
import java.util.ArrayList;
import jetbrains.mps.generator.template.SourceSubstituteMacroNodeContext;
import org.jetbrains.mps.openapi.model.SNodeAccessUtil;
import jetbrains.mps.generator.template.PropertyMacroContext;
import jetbrains.mps.generator.template.SourceSubstituteMacroNodesContext;
import java.util.Collection;
import java.util.Collections;
import jetbrains.mps.generator.template.IfMacroContext;
import jetbrains.mps.generator.runtime.TemplateUtil;
import jetbrains.mps.generator.template.TemplateVarContext;
import jetbrains.mps.smodel.SNodePointer;
import jetbrains.mps.generator.template.InsertMacroContext;
import jetbrains.mps.generator.runtime.MetaObjectContainer;
import org.jetbrains.mps.openapi.language.SConcept;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import org.jetbrains.mps.openapi.language.SProperty;
import org.jetbrains.mps.openapi.language.SReferenceLink;
import org.jetbrains.mps.openapi.language.SContainmentLink;

@Generated
public class Template_InterpretedGeneratorRuntimeDescriptor extends TemplateDeclarationBase {

  public Template_InterpretedGeneratorRuntimeDescriptor() {
    super(new MO());
  }

  public SNodeReference getTemplateNode() {
    return template;
  }

  @Override
  public void apply(TemplateContext context, ApplySink sink) throws GenerationException {
    final TemplateExecutionEnvironment environment = context.getEnvironment();
    final List<SNode> tlist1 = new ArrayList<SNode>();
    final SNode sourceNode1 = QueriesGenerated.sourceNodeQuery_7_0(new SourceSubstituteMacroNodeContext(context, mapsrcMacroRef));
    TemplateContext context1 = context.subContext(null, sourceNode1);
    if (sourceNode1 != null) {
      final SNode tnode2 = environment.createOutputNode(myConcepts[0]);
      {
        environment.nodeCopied(context1, tnode2, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715734036");
        SNodeAccessUtil.setPropertyValue(tnode2, myProperties[0], QueriesGenerated.propertyMacro_GetValue_7_7(new PropertyMacroContext(context1, "InterpretedGeneratorRuntimeDescriptor", propertyMacro)));
        TemplateContext context2 = context1.subContext();
        {
          final SNode tnode3 = environment.createOutputNode(myConcepts[1]);
          environment.aggregate(tnode2, myAggregationLinks[0], tnode3);
        }
        {
          final SNode tnode4 = environment.createOutputNode(myConcepts[2]);
          {
            TemplateContext context3 = context2.subContext();
            {
              final SNode tnode5 = environment.createOutputNode(myConcepts[3]);
              {
                environment.nodeCopied(context3, tnode5, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715817394");
                tnode5.setProperty(myProperties[0], "languageRegistry");
                TemplateContext context4 = context3.subContext();
                {
                  final SNode tnode6 = environment.createOutputNode(myConcepts[4]);
                  environment.associate(tnode6, myAssociationLinks[0], "6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.smodel.language(MPS.Core/)", "~LanguageRegistry");
                  environment.aggregate(tnode5, myAggregationLinks[1], tnode6);
                }
              }
              environment.aggregate(tnode4, myAggregationLinks[2], tnode5);
            }
            {
              final SNode tnode7 = environment.createOutputNode(myConcepts[3]);
              {
                environment.nodeCopied(context3, tnode7, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715817396");
                tnode7.setProperty(myProperties[0], "sourceLanguage");
                TemplateContext context5 = context3.subContext();
                {
                  final SNode tnode8 = environment.createOutputNode(myConcepts[4]);
                  environment.associate(tnode8, myAssociationLinks[0], "6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.smodel.language(MPS.Core/)", "~LanguageRuntime");
                  environment.aggregate(tnode7, myAggregationLinks[1], tnode8);
                }
              }
              environment.aggregate(tnode4, myAggregationLinks[2], tnode7);
            }
            {
              final SNode tnode9 = environment.createOutputNode(myConcepts[3]);
              {
                environment.nodeCopied(context3, tnode9, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715817418");
                tnode9.setProperty(myProperties[0], "generator");
                TemplateContext context6 = context3.subContext();
                {
                  final SNode tnode10 = environment.createOutputNode(myConcepts[4]);
                  environment.associate(tnode10, myAssociationLinks[0], "6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.smodel(MPS.Core/)", "~Generator");
                  environment.aggregate(tnode9, myAggregationLinks[1], tnode10);
                }
              }
              environment.aggregate(tnode4, myAggregationLinks[2], tnode9);
            }
            {
              final SNode tnode11 = environment.createOutputNode(myConcepts[5]);
              environment.aggregate(tnode4, myAggregationLinks[3], tnode11);
            }
            {
              final SNode tnode12 = environment.createOutputNode(myConcepts[6]);
              environment.aggregate(tnode4, myAggregationLinks[4], tnode12);
            }
            {
              final SNode tnode13 = environment.createOutputNode(myConcepts[7]);
              {
                TemplateContext context7 = context3.subContext();
                {
                  final SNode tnode14 = environment.createOutputNode(myConcepts[8]);
                  {
                    environment.associate(tnode14, myAssociationLinks[1], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateModuleInterpreted2.<init>(jetbrains.mps.smodel.language.LanguageRegistry,jetbrains.mps.smodel.language.LanguageRuntime,jetbrains.mps.smodel.Generator)");
                    TemplateContext context8 = context7.subContext();
                    {
                      final SNode tnode15 = environment.createOutputNode(myConcepts[9]);
                      environment.resolveInTemplateLater(tnode15, myAssociationLinks[2], templateNode, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715817394", "languageRegistry", context8);
                      environment.aggregate(tnode14, myAggregationLinks[5], tnode15);
                    }
                    {
                      final SNode tnode16 = environment.createOutputNode(myConcepts[9]);
                      environment.resolveInTemplateLater(tnode16, myAssociationLinks[2], templateNode1, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715817396", "sourceLanguage", context8);
                      environment.aggregate(tnode14, myAggregationLinks[5], tnode16);
                    }
                    {
                      final SNode tnode17 = environment.createOutputNode(myConcepts[9]);
                      environment.resolveInTemplateLater(tnode17, myAssociationLinks[2], templateNode2, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715817418", "generator", context8);
                      environment.aggregate(tnode14, myAggregationLinks[5], tnode17);
                    }
                  }
                  environment.aggregate(tnode13, myAggregationLinks[6], tnode14);
                }
              }
              environment.aggregate(tnode4, myAggregationLinks[7], tnode13);
            }
          }
          environment.aggregate(tnode2, myAggregationLinks[0], tnode4);
        }
        {
          final SNode tnode18 = environment.createOutputNode(myConcepts[1]);
          environment.aggregate(tnode2, myAggregationLinks[0], tnode18);
        }
        {
          final SNode tnode19 = environment.createOutputNode(myConcepts[10]);
          {
            tnode19.setProperty(myProperties[1], "false");
            tnode19.setProperty(myProperties[0], "getModuleReference");
            tnode19.setProperty(myProperties[2], "false");
            tnode19.setProperty(myProperties[3], "false");
            TemplateContext context9 = context2.subContext();
            {
              final SNode tnode20 = environment.createOutputNode(myConcepts[6]);
              environment.aggregate(tnode19, myAggregationLinks[4], tnode20);
            }
            {
              final SNode tnode21 = environment.createOutputNode(myConcepts[11]);
              environment.associate(tnode21, myAssociationLinks[3], "3f233e7f-b8a6-46d2-a57f-795d56775243/java:org.jetbrains.annotations(Annotations/)", "~NotNull");
              environment.aggregate(tnode19, myAggregationLinks[8], tnode21);
            }
            {
              final SNode tnode22 = environment.createOutputNode(myConcepts[4]);
              environment.associate(tnode22, myAssociationLinks[0], "8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.module(MPS.OpenAPI/)", "~SModuleReference");
              environment.aggregate(tnode19, myAggregationLinks[3], tnode22);
            }
            {
              final SNode tnode23 = environment.createOutputNode(myConcepts[7]);
              {
                TemplateContext context10 = context9.subContext();
                {
                  final SNode tnode24 = environment.createOutputNode(myConcepts[12]);
                  {
                    TemplateContext context11 = context10.subContext();
                    {
                      final SNode tnode25 = environment.createOutputNode(myConcepts[13]);
                      {
                        TemplateContext context12 = context11.subContext();
                        {
                          final SNode tnode26 = environment.createOutputNode(myConcepts[14]);
                          environment.associate(tnode26, myAssociationLinks[1], "8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.persistence(MPS.OpenAPI/)", "~PersistenceFacade.getInstance()");
                          environment.associate(tnode26, myAssociationLinks[4], "8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.persistence(MPS.OpenAPI/)", "~PersistenceFacade");
                          environment.aggregate(tnode25, myAggregationLinks[9], tnode26);
                        }
                        {
                          final SNode tnode27 = environment.createOutputNode(myConcepts[15]);
                          {
                            environment.associate(tnode27, myAssociationLinks[1], "8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.persistence(MPS.OpenAPI/)", "~PersistenceFacade.createModuleReference(java.lang.String)");
                            TemplateContext context13 = context12.subContext();
                            {
                              final SNode tnode28 = environment.createOutputNode(myConcepts[16]);
                              SNodeAccessUtil.setPropertyValue(tnode28, myProperties[4], QueriesGenerated.propertyMacro_GetValue_7_0(new PropertyMacroContext(context13, "module.reference", propertyMacro1)));
                              environment.aggregate(tnode27, myAggregationLinks[5], tnode28);
                            }
                          }
                          environment.aggregate(tnode25, myAggregationLinks[10], tnode27);
                        }
                      }
                      environment.aggregate(tnode24, myAggregationLinks[11], tnode25);
                    }
                  }
                  environment.aggregate(tnode23, myAggregationLinks[6], tnode24);
                }
              }
              environment.aggregate(tnode19, myAggregationLinks[7], tnode23);
            }
            {
              final SNode tnode29 = environment.createOutputNode(myConcepts[11]);
              environment.associate(tnode29, myAssociationLinks[3], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)", "~Override");
              environment.aggregate(tnode19, myAggregationLinks[8], tnode29);
            }
          }
          environment.aggregate(tnode2, myAggregationLinks[0], tnode19);
        }
        {
          final SNode tnode30 = environment.createOutputNode(myConcepts[1]);
          environment.aggregate(tnode2, myAggregationLinks[0], tnode30);
        }
        {
          final SNode tnode31 = environment.createOutputNode(myConcepts[10]);
          {
            tnode31.setProperty(myProperties[1], "false");
            tnode31.setProperty(myProperties[0], "fillTemplateModels");
            tnode31.setProperty(myProperties[2], "false");
            tnode31.setProperty(myProperties[3], "false");
            TemplateContext context14 = context2.subContext();
            {
              final SNode tnode32 = environment.createOutputNode(myConcepts[17]);
              environment.aggregate(tnode31, myAggregationLinks[4], tnode32);
            }
            {
              final SNode tnode33 = environment.createOutputNode(myConcepts[5]);
              environment.aggregate(tnode31, myAggregationLinks[3], tnode33);
            }
            {
              final SNode tnode34 = environment.createOutputNode(myConcepts[3]);
              {
                environment.nodeCopied(context14, tnode34, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716136382");
                tnode34.setProperty(myProperties[0], "models");
                TemplateContext context15 = context14.subContext();
                {
                  final SNode tnode35 = environment.createOutputNode(myConcepts[4]);
                  environment.associate(tnode35, myAssociationLinks[0], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateModuleInterpreted2$TemplateModels");
                  environment.aggregate(tnode34, myAggregationLinks[1], tnode35);
                }
              }
              environment.aggregate(tnode31, myAggregationLinks[2], tnode34);
            }
            {
              final SNode tnode36 = environment.createOutputNode(myConcepts[7]);
              {
                TemplateContext context16 = context14.subContext();
                {
                  final List<SNode> tlist37 = new ArrayList<SNode>();
                  final Iterable<SNode> loopList37 = QueriesGenerated.sourceNodesQuery_7_0(new SourceSubstituteMacroNodesContext(context16, loopMacroRef));
                  for (SNode itnode37 : loopList37) {
                    if (itnode37 == null) {
                      continue;
                    }
                    TemplateContext context17 = context16.subContext(itnode37);
                    final SNode tnode38 = environment.createOutputNode(myConcepts[18]);
                    {
                      TemplateContext context18 = context17.subContext();
                      {
                        final SNode tnode39 = environment.createOutputNode(myConcepts[13]);
                        {
                          TemplateContext context19 = context18.subContext();
                          {
                            final SNode tnode40 = environment.createOutputNode(myConcepts[9]);
                            environment.resolveInTemplateLater(tnode40, myAssociationLinks[2], templateNode3, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716136382", "models", context19);
                            environment.aggregate(tnode39, myAggregationLinks[9], tnode40);
                          }
                          {
                            final SNode tnode41 = environment.createOutputNode(myConcepts[15]);
                            {
                              environment.associate(tnode41, myAssociationLinks[1], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateModuleInterpreted2$TemplateModels.templates(java.lang.String,java.lang.Class)");
                              TemplateContext context20 = context19.subContext();
                              {
                                final SNode tnode42 = environment.createOutputNode(myConcepts[16]);
                                SNodeAccessUtil.setPropertyValue(tnode42, myProperties[4], QueriesGenerated.propertyMacro_GetValue_7_1(new PropertyMacroContext(context20, "model-id", propertyMacro2)));
                                environment.aggregate(tnode41, myAggregationLinks[5], tnode42);
                              }
                              {
                                final SNode tnode43 = environment.createOutputNode(myConcepts[19]);
                                {
                                  TemplateContext context21 = context20.subContext();
                                  {
                                    final SNode tnode44 = environment.createOutputNode(myConcepts[20]);
                                    SNodeAccessUtil.setPropertyValue(tnode44, myProperties[5], QueriesGenerated.propertyMacro_GetValue_7_2(new PropertyMacroContext(context21, "QueriesGenerated", propertyMacro3)));
                                    environment.associate(tnode44, myAssociationLinks[0], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.impl.query(MPS.Generator/)", "~GeneratorQueryProvider");
                                    environment.aggregate(tnode43, myAggregationLinks[12], tnode44);
                                  }
                                }
                                environment.aggregate(tnode41, myAggregationLinks[5], tnode43);
                              }
                            }
                            environment.aggregate(tnode39, myAggregationLinks[10], tnode41);
                          }
                        }
                        environment.aggregate(tnode38, myAggregationLinks[13], tnode39);
                      }
                    }
                    tlist37.add(tnode38);
                  }
                  environment.aggregate(tnode36, myAggregationLinks[6], tlist37);
                }
              }
              environment.aggregate(tnode31, myAggregationLinks[7], tnode36);
            }
            {
              final SNode tnode45 = environment.createOutputNode(myConcepts[11]);
              environment.associate(tnode45, myAssociationLinks[3], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)", "~Override");
              environment.aggregate(tnode31, myAggregationLinks[8], tnode45);
            }
          }
          environment.aggregate(tnode2, myAggregationLinks[0], tnode31);
        }
        {
          final SNode tnode46 = environment.createOutputNode(myConcepts[1]);
          environment.aggregate(tnode2, myAggregationLinks[0], tnode46);
        }
        {
          Collection<SNode> tlist47 = Collections.emptyList();
          if (QueriesGenerated.ifMacro_Condition_7_0(new IfMacroContext(context2, ifMacroRef))) {
            final SNode tnode48 = environment.createOutputNode(myConcepts[10]);
            {
              tnode48.setProperty(myProperties[1], "false");
              tnode48.setProperty(myProperties[0], "fillReferencedGenerators");
              tnode48.setProperty(myProperties[2], "false");
              tnode48.setProperty(myProperties[3], "false");
              TemplateContext context22 = context2.subContext();
              {
                final SNode tnode49 = environment.createOutputNode(myConcepts[17]);
                environment.aggregate(tnode48, myAggregationLinks[4], tnode49);
              }
              {
                final SNode tnode50 = environment.createOutputNode(myConcepts[5]);
                environment.aggregate(tnode48, myAggregationLinks[3], tnode50);
              }
              {
                final SNode tnode51 = environment.createOutputNode(myConcepts[3]);
                {
                  environment.nodeCopied(context22, tnode51, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716048444");
                  tnode51.setProperty(myProperties[0], "referencedGenerators");
                  TemplateContext context23 = context22.subContext();
                  {
                    final SNode tnode52 = environment.createOutputNode(myConcepts[4]);
                    environment.associate(tnode52, myAssociationLinks[0], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateModuleBase$ReferencedGenerators");
                    environment.aggregate(tnode51, myAggregationLinks[1], tnode52);
                  }
                }
                environment.aggregate(tnode48, myAggregationLinks[2], tnode51);
              }
              {
                final SNode tnode53 = environment.createOutputNode(myConcepts[7]);
                {
                  TemplateContext context24 = context22.subContext();
                  {
                    final List<SNode> tlist54 = new ArrayList<SNode>();
                    final Iterable<SNode> loopList54 = QueriesGenerated.sourceNodesQuery_7_1(new SourceSubstituteMacroNodesContext(context24, loopMacroRef1));
                    for (SNode itnode54 : loopList54) {
                      if (itnode54 == null) {
                        continue;
                      }
                      TemplateContext context25 = context24.subContext(itnode54);
                      final SNode tnode55 = environment.createOutputNode(myConcepts[18]);
                      {
                        TemplateContext context26 = context25.subContext();
                        {
                          final SNode tnode56 = environment.createOutputNode(myConcepts[13]);
                          {
                            TemplateContext context27 = context26.subContext();
                            {
                              final SNode tnode57 = environment.createOutputNode(myConcepts[9]);
                              environment.resolveInTemplateLater(tnode57, myAssociationLinks[2], templateNode4, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716048444", "referencedGenerators", context27);
                              environment.aggregate(tnode56, myAggregationLinks[9], tnode57);
                            }
                            {
                              final SNode tnode58 = environment.createOutputNode(myConcepts[15]);
                              {
                                environment.associate(tnode58, myAssociationLinks[1], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateModuleBase$ReferencedGenerators.extended(java.lang.String)");
                                TemplateContext context28 = context27.subContext();
                                {
                                  final SNode tnode59 = environment.createOutputNode(myConcepts[16]);
                                  SNodeAccessUtil.setPropertyValue(tnode59, myProperties[4], QueriesGenerated.propertyMacro_GetValue_7_3(new PropertyMacroContext(context28, "", propertyMacro4)));
                                  environment.aggregate(tnode58, myAggregationLinks[5], tnode59);
                                }
                              }
                              environment.aggregate(tnode56, myAggregationLinks[10], tnode58);
                            }
                          }
                          environment.aggregate(tnode55, myAggregationLinks[13], tnode56);
                        }
                      }
                      tlist54.add(tnode55);
                    }
                    environment.aggregate(tnode53, myAggregationLinks[6], tlist54);
                  }
                  {
                    final List<SNode> tlist60 = new ArrayList<SNode>();
                    final Iterable<SNode> loopList60 = QueriesGenerated.sourceNodesQuery_7_2(new SourceSubstituteMacroNodesContext(context24, loopMacroRef2));
                    for (SNode itnode60 : loopList60) {
                      if (itnode60 == null) {
                        continue;
                      }
                      TemplateContext context29 = context24.subContext(itnode60);
                      final SNode tnode61 = environment.createOutputNode(myConcepts[18]);
                      {
                        TemplateContext context30 = context29.subContext();
                        {
                          final SNode tnode62 = environment.createOutputNode(myConcepts[13]);
                          {
                            TemplateContext context31 = context30.subContext();
                            {
                              final SNode tnode63 = environment.createOutputNode(myConcepts[9]);
                              environment.resolveInTemplateLater(tnode63, myAssociationLinks[2], templateNode5, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716048444", "referencedGenerators", context31);
                              environment.aggregate(tnode62, myAggregationLinks[9], tnode63);
                            }
                            {
                              final SNode tnode64 = environment.createOutputNode(myConcepts[15]);
                              {
                                environment.associate(tnode64, myAssociationLinks[1], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateModuleBase$ReferencedGenerators.employed(java.lang.String)");
                                TemplateContext context32 = context31.subContext();
                                {
                                  final SNode tnode65 = environment.createOutputNode(myConcepts[16]);
                                  SNodeAccessUtil.setPropertyValue(tnode65, myProperties[4], QueriesGenerated.propertyMacro_GetValue_7_4(new PropertyMacroContext(context32, "", propertyMacro5)));
                                  environment.aggregate(tnode64, myAggregationLinks[5], tnode65);
                                }
                              }
                              environment.aggregate(tnode62, myAggregationLinks[10], tnode64);
                            }
                          }
                          environment.aggregate(tnode61, myAggregationLinks[13], tnode62);
                        }
                      }
                      tlist60.add(tnode61);
                    }
                    environment.aggregate(tnode53, myAggregationLinks[6], tlist60);
                  }
                }
                environment.aggregate(tnode48, myAggregationLinks[7], tnode53);
              }
              {
                final SNode tnode66 = environment.createOutputNode(myConcepts[11]);
                environment.associate(tnode66, myAssociationLinks[3], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)", "~Override");
                environment.aggregate(tnode48, myAggregationLinks[8], tnode66);
              }
            }
            tlist47 = TemplateUtil.singletonList(tnode48);
          }
          environment.aggregate(tnode2, myAggregationLinks[0], tlist47);
        }
        {
          final SNode tnode67 = environment.createOutputNode(myConcepts[1]);
          environment.aggregate(tnode2, myAggregationLinks[0], tnode67);
        }
        {
          Collection<SNode> tlist68 = null;
          TemplateContext context33 = context2;
          context33 = context33.withVariable("var:targetLanguages", QueriesGenerated.varMacro_Value_7_0(new TemplateVarContext(context33, new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "2409421742521902666"))));
          final SNode tnode69 = environment.createOutputNode(myConcepts[10]);
          {
            tnode69.setProperty(myProperties[1], "false");
            tnode69.setProperty(myProperties[0], "getTargetLanguages");
            tnode69.setProperty(myProperties[2], "false");
            tnode69.setProperty(myProperties[3], "false");
            TemplateContext context34 = context33.subContext();
            {
              final SNode tnode70 = environment.createOutputNode(myConcepts[6]);
              environment.aggregate(tnode69, myAggregationLinks[4], tnode70);
            }
            {
              final SNode tnode71 = environment.createOutputNode(myConcepts[4]);
              {
                environment.associate(tnode71, myAssociationLinks[0], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util(JDK/)", "~Collection");
                TemplateContext context35 = context34.subContext();
                {
                  final SNode tnode72 = environment.createOutputNode(myConcepts[4]);
                  environment.associate(tnode72, myAssociationLinks[0], "8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.language(MPS.OpenAPI/)", "~SLanguage");
                  environment.aggregate(tnode71, myAggregationLinks[14], tnode72);
                }
              }
              environment.aggregate(tnode69, myAggregationLinks[3], tnode71);
            }
            {
              final SNode tnode73 = environment.createOutputNode(myConcepts[7]);
              {
                TemplateContext context36 = context34.subContext();
                {
                  final SNode tnode74 = environment.createOutputNode(myConcepts[21]);
                  {
                    TemplateContext context37 = context36.subContext();
                    {
                      final SNode tnode75 = environment.createOutputNode(myConcepts[22]);
                      {
                        environment.nodeCopied(context37, tnode75, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716010747");
                        tnode75.setProperty(myProperties[0], "rv");
                        TemplateContext context38 = context37.subContext();
                        {
                          final SNode tnode76 = environment.createOutputNode(myConcepts[23]);
                          {
                            TemplateContext context39 = context38.subContext();
                            {
                              final SNode tnode77 = environment.createOutputNode(myConcepts[4]);
                              environment.associate(tnode77, myAssociationLinks[0], "8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.language(MPS.OpenAPI/)", "~SLanguage");
                              environment.aggregate(tnode76, myAggregationLinks[15], tnode77);
                            }
                          }
                          environment.aggregate(tnode75, myAggregationLinks[1], tnode76);
                        }
                        {
                          final SNode tnode78 = environment.createOutputNode(myConcepts[24]);
                          {
                            TemplateContext context40 = context38.subContext();
                            {
                              final SNode tnode79 = environment.createOutputNode(myConcepts[25]);
                              {
                                TemplateContext context41 = context40.subContext();
                                {
                                  final SNode tnode80 = environment.createOutputNode(myConcepts[26]);
                                  {
                                    TemplateContext context42 = context41.subContext();
                                    {
                                      final SNode tnode81 = environment.createOutputNode(myConcepts[27]);
                                      SNodeAccessUtil.setPropertyValue(tnode81, myProperties[6], QueriesGenerated.propertyMacro_GetValue_7_5(new PropertyMacroContext(context42, "0", propertyMacro6)));
                                      environment.aggregate(tnode80, myAggregationLinks[16], tnode81);
                                    }
                                  }
                                  environment.aggregate(tnode79, myAggregationLinks[17], tnode80);
                                }
                                {
                                  final SNode tnode82 = environment.createOutputNode(myConcepts[4]);
                                  environment.associate(tnode82, myAssociationLinks[0], "8865b7a8-5271-43d3-884c-6fd1d9cfdd34/java:org.jetbrains.mps.openapi.language(MPS.OpenAPI/)", "~SLanguage");
                                  environment.aggregate(tnode79, myAggregationLinks[18], tnode82);
                                }
                              }
                              environment.aggregate(tnode78, myAggregationLinks[19], tnode79);
                            }
                          }
                          environment.aggregate(tnode75, myAggregationLinks[20], tnode78);
                        }
                      }
                      environment.aggregate(tnode74, myAggregationLinks[21], tnode75);
                    }
                  }
                  environment.aggregate(tnode73, myAggregationLinks[6], tnode74);
                }
                {
                  final List<SNode> tlist83 = new ArrayList<SNode>();
                  final Iterable<SNode> loopList83 = QueriesGenerated.sourceNodesQuery_7_3(new SourceSubstituteMacroNodesContext(context36, loopMacroRef3));
                  int loopIndex_83 = 0;
                  for (SNode itnode83 : loopList83) {
                    if (itnode83 == null) {
                      continue;
                    }
                    TemplateContext context43 = context36.subContext(itnode83);
                    context43 = context43.withVariable("loop:index", loopIndex_83);
                    loopIndex_83++;
                    final SNode tnode84 = environment.createOutputNode(myConcepts[18]);
                    {
                      TemplateContext context44 = context43.subContext();
                      {
                        final SNode tnode85 = environment.createOutputNode(myConcepts[28]);
                        {
                          TemplateContext context45 = context44.subContext();
                          {
                            final SNode tnode86 = environment.createOutputNode(myConcepts[29]);
                            {
                              TemplateContext context46 = context45.subContext();
                              {
                                final SNode tnode87 = environment.createOutputNode(myConcepts[27]);
                                SNodeAccessUtil.setPropertyValue(tnode87, myProperties[6], QueriesGenerated.propertyMacro_GetValue_7_6(new PropertyMacroContext(context46, "0", propertyMacro7)));
                                environment.aggregate(tnode86, myAggregationLinks[22], tnode87);
                              }
                              {
                                final SNode tnode88 = environment.createOutputNode(myConcepts[9]);
                                environment.resolveInTemplateLater(tnode88, myAssociationLinks[2], templateNode6, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716010747", "rv", context46);
                                environment.aggregate(tnode86, myAggregationLinks[23], tnode88);
                              }
                            }
                            environment.aggregate(tnode85, myAggregationLinks[24], tnode86);
                          }
                          {
                            final SNode tnode89 = environment.createOutputNode(myConcepts[30]);
                            {
                              TemplateContext context47 = context45.subContext();
                              {
                                Collection<SNode> tlist90 = Collections.emptyList();
                                final SNode insertInput90 = QueriesGenerated.insertMacro_Query_7_0(new InsertMacroContext(context47, insertMacro));
                                if (insertInput90 != null) {
                                  tlist90 = Collections.singletonList(environment.insertNode(insertInput90, insertMacro, context47));
                                }
                                environment.aggregate(tnode89, myAggregationLinks[25], tlist90);
                              }
                            }
                            environment.aggregate(tnode85, myAggregationLinks[26], tnode89);
                          }
                        }
                        environment.aggregate(tnode84, myAggregationLinks[13], tnode85);
                      }
                    }
                    tlist83.add(tnode84);
                  }
                  environment.aggregate(tnode73, myAggregationLinks[6], tlist83);
                }
                {
                  final SNode tnode91 = environment.createOutputNode(myConcepts[12]);
                  {
                    TemplateContext context48 = context36.subContext();
                    {
                      final SNode tnode92 = environment.createOutputNode(myConcepts[14]);
                      {
                        environment.associate(tnode92, myAssociationLinks[4], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util(JDK/)", "~Arrays");
                        environment.associate(tnode92, myAssociationLinks[1], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util(JDK/)", "~Arrays.asList(java.lang.Object...)");
                        TemplateContext context49 = context48.subContext();
                        {
                          final SNode tnode93 = environment.createOutputNode(myConcepts[9]);
                          environment.resolveInTemplateLater(tnode93, myAssociationLinks[2], templateNode7, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152716010747", "rv", context49);
                          environment.aggregate(tnode92, myAggregationLinks[5], tnode93);
                        }
                      }
                      environment.aggregate(tnode91, myAggregationLinks[11], tnode92);
                    }
                  }
                  environment.aggregate(tnode73, myAggregationLinks[6], tnode91);
                }
              }
              environment.aggregate(tnode69, myAggregationLinks[7], tnode73);
            }
            {
              final SNode tnode94 = environment.createOutputNode(myConcepts[11]);
              environment.associate(tnode94, myAssociationLinks[3], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)", "~Override");
              environment.aggregate(tnode69, myAggregationLinks[8], tnode94);
            }
          }
          tlist68 = TemplateUtil.singletonList(tnode69);
          environment.aggregate(tnode2, myAggregationLinks[0], tlist68);
        }
        {
          final SNode tnode95 = environment.createOutputNode(myConcepts[1]);
          environment.aggregate(tnode2, myAggregationLinks[0], tnode95);
        }
        {
          Collection<SNode> tlist96 = Collections.emptyList();
          if (QueriesGenerated.ifMacro_Condition_7_1(new IfMacroContext(context2, ifMacroRef1))) {
            final SNode tnode97 = environment.createOutputNode(myConcepts[10]);
            {
              tnode97.setProperty(myProperties[1], "false");
              tnode97.setProperty(myProperties[0], "getPriorities");
              tnode97.setProperty(myProperties[2], "false");
              tnode97.setProperty(myProperties[3], "false");
              TemplateContext context50 = context2.subContext();
              {
                final SNode tnode98 = environment.createOutputNode(myConcepts[6]);
                environment.aggregate(tnode97, myAggregationLinks[4], tnode98);
              }
              {
                final SNode tnode99 = environment.createOutputNode(myConcepts[4]);
                {
                  environment.associate(tnode99, myAssociationLinks[0], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.util(JDK/)", "~Collection");
                  TemplateContext context51 = context50.subContext();
                  {
                    final SNode tnode100 = environment.createOutputNode(myConcepts[4]);
                    environment.associate(tnode100, myAssociationLinks[0], "6ed54515-acc8-4d1e-a16c-9fd6cfe951ea/java:jetbrains.mps.generator.runtime(MPS.Core/)", "~TemplateMappingPriorityRule");
                    environment.aggregate(tnode99, myAggregationLinks[14], tnode100);
                  }
                }
                environment.aggregate(tnode97, myAggregationLinks[3], tnode99);
              }
              {
                final SNode tnode101 = environment.createOutputNode(myConcepts[7]);
                {
                  TemplateContext context52 = context50.subContext();
                  {
                    final SNode tnode102 = environment.createOutputNode(myConcepts[12]);
                    {
                      TemplateContext context53 = context52.subContext();
                      {
                        final SNode tnode103 = environment.createOutputNode(myConcepts[14]);
                        {
                          environment.associate(tnode103, myAssociationLinks[4], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateUtil");
                          environment.associate(tnode103, myAssociationLinks[1], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateUtil.asCollection(java.lang.Object...)");
                          TemplateContext context54 = context53.subContext();
                          {
                            Collection<SNode> tlist104 = null;
                            final Iterable<SNode> copyListInput104 = QueriesGenerated.sourceNodesQuery_7_4(new SourceSubstituteMacroNodesContext(context54, copySrcListMacro));
                            tlist104 = environment.copyNodes(copyListInput104, copySrcListMacro, "tpl/r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508/1066600152715942257", context54);
                            environment.aggregate(tnode103, myAggregationLinks[5], tlist104);
                          }
                        }
                        environment.aggregate(tnode102, myAggregationLinks[11], tnode103);
                      }
                    }
                    environment.aggregate(tnode101, myAggregationLinks[6], tnode102);
                  }
                }
                environment.aggregate(tnode97, myAggregationLinks[7], tnode101);
              }
              {
                final SNode tnode105 = environment.createOutputNode(myConcepts[11]);
                environment.associate(tnode105, myAssociationLinks[3], "6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)", "~Override");
                environment.aggregate(tnode97, myAggregationLinks[8], tnode105);
              }
            }
            tlist96 = TemplateUtil.singletonList(tnode97);
          }
          environment.aggregate(tnode2, myAggregationLinks[0], tlist96);
        }
        {
          final SNode tnode106 = environment.createOutputNode(myConcepts[6]);
          environment.aggregate(tnode2, myAggregationLinks[4], tnode106);
        }
        {
          final SNode tnode107 = environment.createOutputNode(myConcepts[4]);
          environment.associate(tnode107, myAssociationLinks[0], "215c4c45-ba99-49f5-9ab7-4b6901a63cfd/java:jetbrains.mps.generator.runtime(MPS.Generator/)", "~TemplateModuleInterpreted2");
          environment.aggregate(tnode2, myAggregationLinks[27], tnode107);
        }
      }
      tlist1.add(tnode2);
    }
    sink.add(null, tlist1);
  }

  /*package*/ static final class MO implements MetaObjectContainer {
    @Override
    public SConcept[] concepts() {
      SConcept[] rv = new SConcept[31];
      rv[0] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8c108ca66L, "ClassConcept");
      rv[1] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x1458378889e6d166L, "PlaceholderMember");
      rv[2] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc56b204L, "ConstructorDeclaration");
      rv[3] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8c77f1e94L, "ParameterDeclaration");
      rv[4] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x101de48bf9eL, "ClassifierType");
      rv[5] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc6bf96dL, "VoidType");
      rv[6] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x10af9581ff1L, "PublicVisibility");
      rv[7] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc56b200L, "StatementList");
      rv[8] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf93d512e1eL, "SuperConstructorInvocation");
      rv[9] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8c77f1e98L, "VariableReference");
      rv[10] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc56b21dL, "InstanceMethodDeclaration");
      rv[11] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x114a6b4ccabL, "AnnotationInstance");
      rv[12] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7feL, "ReturnStatement");
      rv[13] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x116b46a08c4L, "DotExpression");
      rv[14] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xfbbebabf09L, "StaticMethodCall");
      rv[15] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x118154a6332L, "InstanceMethodCallOperation");
      rv[16] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf93d565d10L, "StringLiteral");
      rv[17] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x10af958b686L, "ProtectedVisibility");
      rv[18] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc56b213L, "ExpressionStatement");
      rv[19] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xdf345b11b8c74213L, 0xac6648d2a9b75d88L, "jetbrains.mps.baseLanguageInternal"), 0x1117461827dL, "InternalClassExpression");
      rv[20] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xdf345b11b8c74213L, 0xac6648d2a9b75d88L, "jetbrains.mps.baseLanguageInternal"), 0x1118e558c6dL, "InternalClassifierType");
      rv[21] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement");
      rv[22] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7efL, "LocalVariableDeclaration");
      rv[23] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf940d819f7L, "ArrayType");
      rv[24] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x10ab8473cc5L, "GenericNewExpression");
      rv[25] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x113e4952f12L, "ArrayCreator");
      rv[26] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x113e4b2dfdaL, "DimensionExpression");
      rv[27] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc59b314L, "IntegerConstant");
      rv[28] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8c77f1e96L, "AssignmentExpression");
      rv[29] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x11126b40c25L, "ArrayAccessExpression");
      rv[30] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0x7866978ea0f04cc7L, 0x81bc4d213d9375e1L, "jetbrains.mps.lang.smodel"), 0x3e6a40ba27dd70f3L, "LanguageRefExpression");
      return rv;
    }

    @Override
    public SProperty[] properties() {
      SProperty[] rv = new SProperty[7];
      rv[0] = MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name");
      rv[1] = MetaAdapterFactory.getProperty(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b21dL, 0x1126a8d157dL, "isAbstract");
      rv[2] = MetaAdapterFactory.getProperty(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, 0x113294bffd2L, "isFinal");
      rv[3] = MetaAdapterFactory.getProperty(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, 0x3b576cda23612c7aL, "isSynchronized");
      rv[4] = MetaAdapterFactory.getProperty(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf93d565d10L, 0xf93d565d11L, "value");
      rv[5] = MetaAdapterFactory.getProperty(0xdf345b11b8c74213L, 0xac6648d2a9b75d88L, 0x1118e558c6dL, 0x1118e56212bL, "fqClassName");
      rv[6] = MetaAdapterFactory.getProperty(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc59b314L, 0xf8cc59b315L, "value");
      return rv;
    }

    @Override
    public SReferenceLink[] associations() {
      SReferenceLink[] rv = new SReferenceLink[5];
      rv[0] = MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101de48bf9eL, 0x101de490babL, "classifier");
      rv[1] = MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11857355952L, 0xf8c78301adL, "baseMethodDeclaration");
      rv[2] = MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c77f1e98L, 0xf8cc6bf960L, "variableDeclaration");
      rv[3] = MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6b4ccabL, 0x114a6b85d40L, "annotation");
      rv[4] = MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xfbbebabf09L, 0x10a7588b546L, "classConcept");
      return rv;
    }

    @Override
    public SContainmentLink[] aggregations() {
      SContainmentLink[] rv = new SContainmentLink[28];
      rv[0] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, 0x4a9a46de59132803L, "member");
      rv[1] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x450368d90ce15bc3L, 0x4ed4d318133c80ceL, "type");
      rv[2] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, 0xf8cc56b1feL, "parameter");
      rv[3] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, 0xf8cc56b1fdL, "returnType");
      rv[4] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x112670d273fL, 0x112670d886aL, "visibility");
      rv[5] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11857355952L, 0xf8c78301aeL, "actualArgument");
      rv[6] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b200L, 0xf8cc6bf961L, "statement");
      rv[7] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, 0xf8cc56b1ffL, "body");
      rv[8] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6be947aL, 0x114a6beb0bdL, "annotation");
      rv[9] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x116b46a08c4L, 0x116b46a4416L, "operand");
      rv[10] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x116b46a08c4L, 0x116b46b36c4L, "operation");
      rv[11] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc67c7feL, 0xf8cc6bf96cL, "expression");
      rv[12] = MetaAdapterFactory.getContainmentLink(0xdf345b11b8c74213L, 0xac6648d2a9b75d88L, 0x1117461827dL, 0x11174623062L, "type");
      rv[13] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b213L, 0xf8cc56b214L, "expression");
      rv[14] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101de48bf9eL, 0x102419671abL, "parameter");
      rv[15] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf940d819f7L, 0xf940d819f8L, "componentType");
      rv[16] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x113e4b2dfdaL, 0x113e4b846d4L, "expression");
      rv[17] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x113e4952f12L, 0x113e4b36742L, "dimensionExpression");
      rv[18] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x113e4952f12L, 0x113e49578edL, "componentType");
      rv[19] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x10ab8473cc5L, 0x10ab847b486L, "creator");
      rv[20] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c37a7f6eL, 0xf8c37f506eL, "initializer");
      rv[21] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc67c7f0L, 0xf8cc67c7f1L, "localVariableDeclaration");
      rv[22] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11126b40c25L, 0x11126b6ac89L, "index");
      rv[23] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11126b40c25L, 0x11126b6de5aL, "array");
      rv[24] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11b0d00332cL, 0xf8c77f1e97L, "lValue");
      rv[25] = MetaAdapterFactory.getContainmentLink(0x7866978ea0f04cc7L, 0x81bc4d213d9375e1L, 0x3e6a40ba27dd70f3L, 0x312abca18ab995e2L, "languageId");
      rv[26] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11b0d00332cL, 0xf8c77f1e99L, "rValue");
      rv[27] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c108ca66L, 0x10f6353296dL, "superclass");
      return rv;
    }
  }
  private static final SNodePointer template = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715734036");
  private static final SNodePointer mapsrcMacroRef = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715796758");
  private static final SNodePointer propertyMacro = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715793846");
  private static final SNodePointer templateNode = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715817887");
  private static final SNodePointer templateNode1 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715818049");
  private static final SNodePointer templateNode2 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715818204");
  private static final SNodePointer propertyMacro1 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715954424");
  private static final SNodePointer loopMacroRef = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716334131");
  private static final SNodePointer templateNode3 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716149123");
  private static final SNodePointer propertyMacro2 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "8286763721182966666");
  private static final SNodePointer propertyMacro3 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716324934");
  private static final SNodePointer loopMacroRef1 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716048459");
  private static final SNodePointer templateNode4 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716048449");
  private static final SNodePointer propertyMacro4 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716048452");
  private static final SNodePointer loopMacroRef2 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716048480");
  private static final SNodePointer templateNode5 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716048468");
  private static final SNodePointer propertyMacro5 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716048471");
  private static final SNodePointer ifMacroRef = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716048505");
  private static final SNodePointer propertyMacro6 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716010754");
  private static final SNodePointer loopMacroRef3 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716010783");
  private static final SNodePointer propertyMacro7 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716010768");
  private static final SNodePointer templateNode6 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716010775");
  private static final SNodePointer insertMacro = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716010778");
  private static final SNodePointer templateNode7 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152716010792");
  private static final SNodePointer copySrcListMacro = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715942260");
  private static final SNodePointer ifMacroRef1 = new SNodePointer("r:1dfaf07d-c77a-451e-91d3-b6f80f0f8508(jetbrains.mps.lang.descriptor.generator.template.main@generator)", "1066600152715890876");
}
