package jetbrains.mps.lang.smodel.generator.baseLanguage.template.main;

/*Generated by MPS */

import jetbrains.mps.generator.runtime.Generated;
import jetbrains.mps.generator.runtime.MapConfigBase;
import jetbrains.mps.generator.runtime.TemplateMappingConfiguration;
import java.util.Collection;
import jetbrains.mps.generator.runtime.TemplateReductionRule;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.generator.runtime.TemplateModel;
import jetbrains.mps.smodel.SNodePointer;
import jetbrains.mps.generator.runtime.TemplateUtil;
import jetbrains.mps.generator.template.ITemplateGenerator;
import jetbrains.mps.generator.template.TemplateQueryContext;
import jetbrains.mps.generator.runtime.ReductionRuleBase;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.generator.runtime.TemplateContext;
import jetbrains.mps.generator.runtime.GenerationException;
import jetbrains.mps.generator.runtime.TemplateExecutionEnvironment;
import jetbrains.mps.generator.template.BaseMappingRuleContext;
import jetbrains.mps.generator.template.SourceSubstituteMacroNodeContext;
import java.util.Collections;
import jetbrains.mps.generator.runtime.TemplateRuleWithCondition;
import jetbrains.mps.generator.template.ReductionRuleQueryContext;
import jetbrains.mps.generator.template.IfMacroContext;
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.SReferenceLink;
import org.jetbrains.mps.openapi.language.SContainmentLink;

@Generated
public class Mapping_mc_attribute_access extends MapConfigBase implements TemplateMappingConfiguration {
  private final Collection<TemplateReductionRule> rules;
  public Mapping_mc_attribute_access(@NotNull TemplateModel model) {
    super(new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583038100"), "mc_attribute_access", model, false, new MO());
    rules = TemplateUtil.<TemplateReductionRule>asCollection(new ReductionRule0(), new ReductionRule1(), new ReductionRule2(), new ReductionRule3(), new ReductionRule4());
  }
  @Override
  public boolean isApplicable(@NotNull ITemplateGenerator generator) {
    return QueriesGenerated.mc_Condition_55(new TemplateQueryContext(getMappingNode(), generator));
  }
  @Override
  public Collection<TemplateReductionRule> getReductionRules() {
    return rules;
  }
  /*package*/ final class ReductionRule0 extends ReductionRuleBase {
    public ReductionRule0() {
      super(new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583038101"), CONCEPTS.AttributeAccess$xD, false);
    }
    @Override
    public Collection<SNode> apply(@NotNull final TemplateContext context) throws GenerationException {
      final TemplateExecutionEnvironment environment = context.getEnvironment();
      Collection<SNode> tlist1 = null;
      if (QueriesGenerated.rule_Condition_55_0(new BaseMappingRuleContext(context, rule))) {
        final SNode tnode2 = environment.createOutputNode(myConcepts[0]);
        {
          TemplateContext context1 = context.subContext();
          {
            Collection<SNode> tlist3 = null;
            {
              final SNode switchInput3 = QueriesGenerated.sourceNodeQuery_55_0(new SourceSubstituteMacroNodeContext(context1, switchMacroRef));
              if (switchInput3 == null) {
                tlist3 = Collections.emptyList();
              } else {
                TemplateContext switchContext3 = context1;
                switchContext3 = switchContext3.subContext(null, switchInput3);
                tlist3 = environment.trySwitch(templateSwitchNode, switchContext3);
                if (tlist3 == null) {
                  final SNode tnode4 = environment.createOutputNode(myConcepts[1]);
                  {
                    TemplateContext context2 = context1.subContext();
                    {
                      final SNode tnode5 = environment.createOutputNode(myConcepts[2]);
                      environment.associate(tnode5, myAssociationLinks[0], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "6407023681583030432");
                      environment.aggregate(tnode4, myAggregationLinks[0], tnode5);
                    }
                  }
                  tlist3 = TemplateUtil.singletonList(tnode4);
                }
              }
            }
            environment.aggregate(tnode2, myAggregationLinks[1], tlist3);
          }
          {
            final SNode tnode6 = environment.createOutputNode(myConcepts[3]);
            {
              environment.associate(tnode6, myAssociationLinks[1], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "1658934038159837197");
              TemplateContext context3 = context1.subContext();
              {
                Collection<SNode> tlist7 = null;
                final SNode copySrcInput7 = QueriesGenerated.sourceNodeQuery_55_1(new SourceSubstituteMacroNodeContext(context3, copySrcMacro));
                tlist7 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput7), copySrcMacro, "tpl/r:00000000-0000-4000-0000-011c89590303/1955134432343435969", context3);
                environment.aggregate(tnode6, myAggregationLinks[2], tlist7);
              }
            }
            environment.aggregate(tnode2, myAggregationLinks[3], tnode6);
          }
        }
        tlist1 = TemplateUtil.singletonList(tnode2);
      } else {
        final SNode tnode8 = environment.createOutputNode(myConcepts[0]);
        {
          TemplateContext context4 = context.subContext();
          {
            Collection<SNode> tlist9 = null;
            {
              final SNode switchInput9 = QueriesGenerated.sourceNodeQuery_55_2(new SourceSubstituteMacroNodeContext(context4, switchMacroRef1));
              if (switchInput9 == null) {
                tlist9 = Collections.emptyList();
              } else {
                TemplateContext switchContext9 = context4;
                switchContext9 = switchContext9.subContext(null, switchInput9);
                tlist9 = environment.trySwitch(templateSwitchNode1, switchContext9);
                if (tlist9 == null) {
                  final SNode tnode10 = environment.createOutputNode(myConcepts[1]);
                  {
                    TemplateContext context5 = context4.subContext();
                    {
                      final SNode tnode11 = environment.createOutputNode(myConcepts[2]);
                      environment.associate(tnode11, myAssociationLinks[0], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "6407023681583030432");
                      environment.aggregate(tnode10, myAggregationLinks[0], tnode11);
                    }
                  }
                  tlist9 = TemplateUtil.singletonList(tnode10);
                }
              }
            }
            environment.aggregate(tnode8, myAggregationLinks[1], tlist9);
          }
          {
            final SNode tnode12 = environment.createOutputNode(myConcepts[3]);
            {
              environment.associate(tnode12, myAssociationLinks[1], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "1658934038159823676");
              TemplateContext context6 = context4.subContext();
              {
                Collection<SNode> tlist13 = null;
                final SNode copySrcInput13 = QueriesGenerated.sourceNodeQuery_55_3(new SourceSubstituteMacroNodeContext(context6, copySrcMacro1));
                tlist13 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput13), copySrcMacro1, "tpl/r:00000000-0000-4000-0000-011c89590303/1955134432343453730", context6);
                environment.aggregate(tnode12, myAggregationLinks[2], tlist13);
              }
            }
            environment.aggregate(tnode8, myAggregationLinks[3], tnode12);
          }
        }
        tlist1 = TemplateUtil.singletonList(tnode8);
      }
      return tlist1;
    }
  }
  /*package*/ final class ReductionRule1 extends ReductionRuleBase implements TemplateRuleWithCondition {
    public ReductionRule1() {
      super(new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583065535"), CONCEPTS.AssignmentExpression$SE, false);
    }
    @Override
    public boolean isApplicable(@NotNull TemplateContext context) throws GenerationException {
      return QueriesGenerated.rule_Condition_55_1(new ReductionRuleQueryContext(context, getRuleNode()));
    }
    @Override
    public Collection<SNode> apply(@NotNull final TemplateContext context) throws GenerationException {
      final TemplateExecutionEnvironment environment = context.getEnvironment();
      final SNode tnode1 = environment.createOutputNode(myConcepts[0]);
      {
        TemplateContext context1 = context.subContext();
        {
          Collection<SNode> tlist2 = null;
          {
            final SNode switchInput2 = QueriesGenerated.sourceNodeQuery_55_4(new SourceSubstituteMacroNodeContext(context1, switchMacroRef2));
            if (switchInput2 == null) {
              tlist2 = Collections.emptyList();
            } else {
              TemplateContext switchContext2 = context1;
              switchContext2 = switchContext2.subContext(null, switchInput2);
              tlist2 = environment.trySwitch(templateSwitchNode2, switchContext2);
              if (tlist2 == null) {
                final SNode tnode3 = environment.createOutputNode(myConcepts[1]);
                {
                  TemplateContext context2 = context1.subContext();
                  {
                    final SNode tnode4 = environment.createOutputNode(myConcepts[2]);
                    environment.associate(tnode4, myAssociationLinks[0], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "6407023681583030432");
                    environment.aggregate(tnode3, myAggregationLinks[0], tnode4);
                  }
                }
                tlist2 = TemplateUtil.singletonList(tnode3);
              }
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[1], tlist2);
        }
        {
          final SNode tnode5 = environment.createOutputNode(myConcepts[3]);
          {
            environment.associate(tnode5, myAssociationLinks[1], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "1114049336866800799");
            TemplateContext context3 = context1.subContext();
            {
              Collection<SNode> tlist6 = null;
              final SNode copySrcInput6 = QueriesGenerated.sourceNodeQuery_55_5(new SourceSubstituteMacroNodeContext(context3, copySrcMacro2));
              tlist6 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput6), copySrcMacro2, "tpl/r:00000000-0000-4000-0000-011c89590303/6407023681583065564", context3);
              environment.aggregate(tnode5, myAggregationLinks[2], tlist6);
            }
            {
              Collection<SNode> tlist7 = null;
              final SNode copySrcInput7 = QueriesGenerated.sourceNodeQuery_55_6(new SourceSubstituteMacroNodeContext(context3, copySrcMacro3));
              tlist7 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput7), copySrcMacro3, "tpl/r:00000000-0000-4000-0000-011c89590303/6407023681583065568", context3);
              environment.aggregate(tnode5, myAggregationLinks[2], tlist7);
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[3], tnode5);
        }
      }
      return TemplateUtil.singletonList(tnode1);
    }
  }
  /*package*/ final class ReductionRule2 extends ReductionRuleBase implements TemplateRuleWithCondition {
    public ReductionRule2() {
      super(new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583065569"), CONCEPTS.Link_SetTargetOperation$Mn, false);
    }
    @Override
    public boolean isApplicable(@NotNull TemplateContext context) throws GenerationException {
      return QueriesGenerated.rule_Condition_55_2(new ReductionRuleQueryContext(context, getRuleNode()));
    }
    @Override
    public Collection<SNode> apply(@NotNull final TemplateContext context) throws GenerationException {
      final TemplateExecutionEnvironment environment = context.getEnvironment();
      final SNode tnode1 = environment.createOutputNode(myConcepts[0]);
      {
        TemplateContext context1 = context.subContext();
        {
          Collection<SNode> tlist2 = null;
          {
            final SNode switchInput2 = QueriesGenerated.sourceNodeQuery_55_7(new SourceSubstituteMacroNodeContext(context1, switchMacroRef3));
            if (switchInput2 == null) {
              tlist2 = Collections.emptyList();
            } else {
              TemplateContext switchContext2 = context1;
              switchContext2 = switchContext2.subContext(null, switchInput2);
              tlist2 = environment.trySwitch(templateSwitchNode3, switchContext2);
              if (tlist2 == null) {
                final SNode tnode3 = environment.createOutputNode(myConcepts[1]);
                {
                  TemplateContext context2 = context1.subContext();
                  {
                    final SNode tnode4 = environment.createOutputNode(myConcepts[2]);
                    environment.associate(tnode4, myAssociationLinks[0], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "6407023681583030432");
                    environment.aggregate(tnode3, myAggregationLinks[0], tnode4);
                  }
                }
                tlist2 = TemplateUtil.singletonList(tnode3);
              }
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[1], tlist2);
        }
        {
          final SNode tnode5 = environment.createOutputNode(myConcepts[3]);
          {
            environment.associate(tnode5, myAssociationLinks[1], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "1114049336866800799");
            TemplateContext context3 = context1.subContext();
            {
              Collection<SNode> tlist6 = null;
              final SNode copySrcInput6 = QueriesGenerated.sourceNodeQuery_55_8(new SourceSubstituteMacroNodeContext(context3, copySrcMacro4));
              tlist6 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput6), copySrcMacro4, "tpl/r:00000000-0000-4000-0000-011c89590303/1658934038147711176", context3);
              environment.aggregate(tnode5, myAggregationLinks[2], tlist6);
            }
            {
              Collection<SNode> tlist7 = null;
              final SNode copySrcInput7 = QueriesGenerated.sourceNodeQuery_55_9(new SourceSubstituteMacroNodeContext(context3, copySrcMacro5));
              tlist7 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput7), copySrcMacro5, "tpl/r:00000000-0000-4000-0000-011c89590303/6407023681583065598", context3);
              environment.aggregate(tnode5, myAggregationLinks[2], tlist7);
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[3], tnode5);
        }
      }
      return TemplateUtil.singletonList(tnode1);
    }
  }
  /*package*/ final class ReductionRule3 extends ReductionRuleBase implements TemplateRuleWithCondition {
    public ReductionRule3() {
      super(new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583065591"), CONCEPTS.Link_SetNewChildOperation$J_, false);
    }
    @Override
    public boolean isApplicable(@NotNull TemplateContext context) throws GenerationException {
      return QueriesGenerated.rule_Condition_55_3(new ReductionRuleQueryContext(context, getRuleNode()));
    }
    @Override
    public Collection<SNode> apply(@NotNull final TemplateContext context) throws GenerationException {
      final TemplateExecutionEnvironment environment = context.getEnvironment();
      final SNode tnode1 = environment.createOutputNode(myConcepts[0]);
      {
        TemplateContext context1 = context.subContext();
        {
          Collection<SNode> tlist2 = null;
          {
            final SNode switchInput2 = QueriesGenerated.sourceNodeQuery_55_10(new SourceSubstituteMacroNodeContext(context1, switchMacroRef4));
            if (switchInput2 == null) {
              tlist2 = Collections.emptyList();
            } else {
              TemplateContext switchContext2 = context1;
              switchContext2 = switchContext2.subContext(null, switchInput2);
              tlist2 = environment.trySwitch(templateSwitchNode4, switchContext2);
              if (tlist2 == null) {
                final SNode tnode3 = environment.createOutputNode(myConcepts[1]);
                {
                  TemplateContext context2 = context1.subContext();
                  {
                    final SNode tnode4 = environment.createOutputNode(myConcepts[2]);
                    environment.associate(tnode4, myAssociationLinks[0], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "6407023681583030432");
                    environment.aggregate(tnode3, myAggregationLinks[0], tnode4);
                  }
                }
                tlist2 = TemplateUtil.singletonList(tnode3);
              }
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[1], tlist2);
        }
        {
          final SNode tnode5 = environment.createOutputNode(myConcepts[3]);
          {
            environment.associate(tnode5, myAssociationLinks[1], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "3377580122682531448");
            TemplateContext context3 = context1.subContext();
            {
              Collection<SNode> tlist6 = null;
              final SNode copySrcInput6 = QueriesGenerated.sourceNodeQuery_55_11(new SourceSubstituteMacroNodeContext(context3, copySrcMacro6));
              tlist6 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput6), copySrcMacro6, "tpl/r:00000000-0000-4000-0000-011c89590303/2213306337134427362", context3);
              environment.aggregate(tnode5, myAggregationLinks[2], tlist6);
            }
            {
              Collection<SNode> tlist7 = Collections.emptyList();
              if (QueriesGenerated.ifMacro_Condition_55_0(new IfMacroContext(context3, ifMacroRef))) {
                Collection<SNode> tlist8 = null;
                SNode callInputNode8 = QueriesGenerated.sourceNodeQuery_55_12(new SourceSubstituteMacroNodeContext(context3, callMacro));
                TemplateContext context4 = context3;
                context4 = context4.subContext(null, callInputNode8);
                if (callInputNode8 != null) {
                  tlist8 = environment.callSite(new Template_reduce_ConceptDeclaration2SAbstractConcept(), new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134427371")).apply(context4);
                } else {
                  tlist8 = Collections.emptyList();
                }
                tlist7 = tlist8;
              }
              environment.aggregate(tnode5, myAggregationLinks[2], tlist7);
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[3], tnode5);
        }
      }
      return TemplateUtil.singletonList(tnode1);
    }
  }
  /*package*/ final class ReductionRule4 extends ReductionRuleBase implements TemplateRuleWithCondition {
    public ReductionRule4() {
      super(new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6960953357954106633"), CONCEPTS.LinkList_AddNewChildOperation$cY, false);
    }
    @Override
    public boolean isApplicable(@NotNull TemplateContext context) throws GenerationException {
      return QueriesGenerated.rule_Condition_55_4(new ReductionRuleQueryContext(context, getRuleNode()));
    }
    @Override
    public Collection<SNode> apply(@NotNull final TemplateContext context) throws GenerationException {
      final TemplateExecutionEnvironment environment = context.getEnvironment();
      final SNode tnode1 = environment.createOutputNode(myConcepts[0]);
      {
        TemplateContext context1 = context.subContext();
        {
          Collection<SNode> tlist2 = null;
          {
            final SNode switchInput2 = QueriesGenerated.sourceNodeQuery_55_13(new SourceSubstituteMacroNodeContext(context1, switchMacroRef5));
            if (switchInput2 == null) {
              tlist2 = Collections.emptyList();
            } else {
              TemplateContext switchContext2 = context1;
              switchContext2 = switchContext2.subContext(null, switchInput2);
              tlist2 = environment.trySwitch(templateSwitchNode5, switchContext2);
              if (tlist2 == null) {
                final SNode tnode3 = environment.createOutputNode(myConcepts[1]);
                {
                  TemplateContext context2 = context1.subContext();
                  {
                    final SNode tnode4 = environment.createOutputNode(myConcepts[2]);
                    environment.associate(tnode4, myAssociationLinks[0], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "6407023681583030432");
                    environment.aggregate(tnode3, myAggregationLinks[0], tnode4);
                  }
                }
                tlist2 = TemplateUtil.singletonList(tnode3);
              }
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[1], tlist2);
        }
        {
          final SNode tnode5 = environment.createOutputNode(myConcepts[3]);
          {
            environment.associate(tnode5, myAssociationLinks[1], "r:c3548bac-30eb-4a2a-937c-0111d5697309(jetbrains.mps.lang.smodel.generator.smodelAdapter)", "3377580122682540840");
            TemplateContext context3 = context1.subContext();
            {
              Collection<SNode> tlist6 = null;
              final SNode copySrcInput6 = QueriesGenerated.sourceNodeQuery_55_14(new SourceSubstituteMacroNodeContext(context3, copySrcMacro7));
              tlist6 = environment.copyNodes(TemplateUtil.singletonList(copySrcInput6), copySrcMacro7, "tpl/r:00000000-0000-4000-0000-011c89590303/3878331446150797048", context3);
              environment.aggregate(tnode5, myAggregationLinks[2], tlist6);
            }
            {
              Collection<SNode> tlist7 = Collections.emptyList();
              if (QueriesGenerated.ifMacro_Condition_55_1(new IfMacroContext(context3, ifMacroRef1))) {
                Collection<SNode> tlist8 = null;
                SNode callInputNode8 = QueriesGenerated.sourceNodeQuery_55_15(new SourceSubstituteMacroNodeContext(context3, callMacro1));
                TemplateContext context4 = context3;
                context4 = context4.subContext(null, callInputNode8);
                if (callInputNode8 != null) {
                  tlist8 = environment.callSite(new Template_reduce_ConceptDeclaration2SAbstractConcept(), new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "633481135935145322")).apply(context4);
                } else {
                  tlist8 = Collections.emptyList();
                }
                tlist7 = tlist8;
              }
              environment.aggregate(tnode5, myAggregationLinks[2], tlist7);
            }
          }
          environment.aggregate(tnode1, myAggregationLinks[3], tnode5);
        }
      }
      return TemplateUtil.singletonList(tnode1);
    }
  }

  /*package*/ static final class MO implements MetaObjectContainer {
    @Override
    public SConcept[] concepts() {
      SConcept[] rv = new SConcept[4];
      rv[0] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x116b46a08c4L, "DotExpression");
      rv[1] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x10ab8473cc5L, "GenericNewExpression");
      rv[2] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x2724644c0ac833a5L, "DefaultClassCreator");
      rv[3] = MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x118154a6332L, "InstanceMethodCallOperation");
      return rv;
    }


    @Override
    public SReferenceLink[] associations() {
      SReferenceLink[] rv = new SReferenceLink[2];
      rv[0] = MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x2724644c0ac833a5L, 0x2724644c0ac833a6L, "classifier");
      rv[1] = MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11857355952L, 0xf8c78301adL, "baseMethodDeclaration");
      return rv;
    }

    @Override
    public SContainmentLink[] aggregations() {
      SContainmentLink[] rv = new SContainmentLink[4];
      rv[0] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x10ab8473cc5L, 0x10ab847b486L, "creator");
      rv[1] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x116b46a08c4L, 0x116b46a4416L, "operand");
      rv[2] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x11857355952L, 0xf8c78301aeL, "actualArgument");
      rv[3] = MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x116b46a08c4L, 0x116b46b36c4L, "operation");
      return rv;
    }
  }
  private static final SNodePointer rule = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583038101");
  private static final SNodePointer switchMacroRef = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "1955134432343435953");
  private static final SNodePointer templateSwitchNode = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134414221");
  private static final SNodePointer copySrcMacro = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "1955134432343435970");
  private static final SNodePointer switchMacroRef1 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "1955134432343453722");
  private static final SNodePointer templateSwitchNode1 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134414221");
  private static final SNodePointer copySrcMacro1 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "1955134432343453731");
  private static final SNodePointer switchMacroRef2 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "1658934038147734303");
  private static final SNodePointer templateSwitchNode2 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134414221");
  private static final SNodePointer copySrcMacro2 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583065937");
  private static final SNodePointer copySrcMacro3 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583066422");
  private static final SNodePointer switchMacroRef3 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "1658934038147711164");
  private static final SNodePointer templateSwitchNode3 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134414221");
  private static final SNodePointer copySrcMacro4 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "1658934038147711177");
  private static final SNodePointer copySrcMacro5 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "6407023681583065927");
  private static final SNodePointer switchMacroRef4 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134427350");
  private static final SNodePointer templateSwitchNode4 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134414221");
  private static final SNodePointer copySrcMacro6 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134427363");
  private static final SNodePointer callMacro = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134427371");
  private static final SNodePointer ifMacroRef = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134432263");
  private static final SNodePointer switchMacroRef5 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134416365");
  private static final SNodePointer templateSwitchNode5 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134414221");
  private static final SNodePointer copySrcMacro7 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "3878331446150797049");
  private static final SNodePointer callMacro1 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "633481135935145322");
  private static final SNodePointer ifMacroRef1 = new SNodePointer("r:00000000-0000-4000-0000-011c89590303(jetbrains.mps.lang.smodel.generator.baseLanguage.template.main@generator)", "2213306337134446700");

  private static final class CONCEPTS {
    /*package*/ static final SConcept AttributeAccess$xD = MetaAdapterFactory.getConcept(0x7866978ea0f04cc7L, 0x81bc4d213d9375e1L, 0x58ea5217b045a3b2L, "jetbrains.mps.lang.smodel.structure.AttributeAccess");
    /*package*/ static final SConcept AssignmentExpression$SE = MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c77f1e96L, "jetbrains.mps.baseLanguage.structure.AssignmentExpression");
    /*package*/ static final SConcept Link_SetTargetOperation$Mn = MetaAdapterFactory.getConcept(0x7866978ea0f04cc7L, 0x81bc4d213d9375e1L, 0x1099887af60L, "jetbrains.mps.lang.smodel.structure.Link_SetTargetOperation");
    /*package*/ static final SConcept Link_SetNewChildOperation$J_ = MetaAdapterFactory.getConcept(0x7866978ea0f04cc7L, 0x81bc4d213d9375e1L, 0x109233dbca1L, "jetbrains.mps.lang.smodel.structure.Link_SetNewChildOperation");
    /*package*/ static final SConcept LinkList_AddNewChildOperation$cY = MetaAdapterFactory.getConcept(0x7866978ea0f04cc7L, 0x81bc4d213d9375e1L, 0x1093caead54L, "jetbrains.mps.lang.smodel.structure.LinkList_AddNewChildOperation");
  }
}
