<?xml version="1.0" encoding="UTF-8"?>
<genmodel:GenModel xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipselabs.mscript.language/src"
    editDirectory="/org.eclipselabs.mscript.language.edit/src" editorDirectory="/org.eclipselabs.mscript.language.editor/src"
    modelPluginID="org.eclipselabs.mscript.language" forceOverwrite="true" modelName="Mscript"
    updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
    importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false"
    editPluginID="org.eclipselabs.mscript.language.edit" editorPluginID="org.eclipselabs.mscript.language.editor"
    usedGenPackages="../../org.eclipselabs.mscript.typesystem/model/TypeSystem.genmodel#//typesystem">
  <foreignModel>Mscript.ecore</foreignModel>
  <genPackages prefix="Ast" basePackage="org.eclipselabs.mscript.language" disposableProviderFactory="true"
      ecorePackage="Mscript.ecore#/">
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//FunctionKind">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//FunctionKind/Stateless"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//FunctionKind/Stateful"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//FunctionKind/Continuous"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//AssertionStatusKind">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//AssertionStatusKind/Info"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//AssertionStatusKind/Warning"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//AssertionStatusKind/Error"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//AssertionStatusKind/Fatal"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//EqualityOperator">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//EqualityOperator/EqualTo"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//EqualityOperator/NotEqualTo"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//RelationalOperator">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//RelationalOperator/LessThan"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//RelationalOperator/LessThanOrEqualTo"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//RelationalOperator/GreaterThan"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//RelationalOperator/GreaterThanOrEqualTo"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//AdditiveOperator">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//AdditiveOperator/Add"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//AdditiveOperator/Subtract"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//MultiplicativeOperator">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//MultiplicativeOperator/Multiply"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//MultiplicativeOperator/Divide"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//MultiplicativeOperator/ElementWiseMultiply"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//MultiplicativeOperator/ElementWiseDivide"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//PowerOperator">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//PowerOperator/Power"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//PowerOperator/ElementWisePower"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//UnaryOperator">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//UnaryOperator/Negate"/>
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//UnaryOperator/LogicalNot"/>
    </genEnums>
    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Mscript.ecore#//PostfixOperator">
      <genEnumLiterals ecoreEnumLiteral="Mscript.ecore#//PostfixOperator/Transpose"/>
    </genEnums>
    <genClasses ecoreClass="Mscript.ecore#//Module">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Module/definitions"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//Definition">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//Definition/name"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//DataTypeDefinition"/>
    <genClasses ecoreClass="Mscript.ecore#//EnumerationDefinition">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//EnumerationDefinition/literalDeclarations"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//EnumerationLiteralDeclaration">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//EnumerationLiteralDeclaration/name"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//TypeAliasDefinition">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//TypeAliasDefinition/type"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//RecordDefinition">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//RecordDefinition/fieldDeclarations"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//RecordFieldDeclaration">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//RecordFieldDeclaration/name"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//RecordFieldDeclaration/type"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//FunctionDefinition">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//FunctionDefinition/kind"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/templateParameterDeclarations"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/inputParameterDeclarations"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/outputParameterDeclarations"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/checks"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/assertions"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/functionObjectDeclarations"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/stateVariableDeclarations"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionDefinition/equations"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//Check">
      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Mscript.ecore#//Check/function"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Check/templateArguments"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Check/inputParameterTypes"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Check/outputParameterTypes"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//CallableElement">
      <genOperations ecoreOperation="Mscript.ecore#//CallableElement/getName"/>
      <genOperations ecoreOperation="Mscript.ecore#//CallableElement/getQualifiedName"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ParameterDeclaration">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//ParameterDeclaration/name"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//TemplateParameterDeclaration"/>
    <genClasses ecoreClass="Mscript.ecore#//InputParameterDeclaration"/>
    <genClasses ecoreClass="Mscript.ecore#//OutputParameterDeclaration"/>
    <genClasses ecoreClass="Mscript.ecore#//Assertion">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//Assertion/static"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Assertion/condition"/>
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//Assertion/statusKind"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Assertion/message"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//StateVariableDeclaration">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//StateVariableDeclaration/name"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//FunctionObjectDeclaration">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//FunctionObjectDeclaration/name"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionObjectDeclaration/functionName"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionObjectDeclaration/templateArguments"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//Equation">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//Equation/initial"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Equation/leftHandSide"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Equation/rightHandSide"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//DataTypeSpecifier">
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Mscript.ecore#//DataTypeSpecifier/type"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//DataTypeSpecifier/definedType"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//LetExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LetExpression/variableDeclarations"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LetExpression/targetExpression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//LetExpressionVariableDeclaration">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LetExpressionVariableDeclaration/parts"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LetExpressionVariableDeclaration/assignedExpression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//LetExpressionVariableDeclarationPart">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//LetExpressionVariableDeclarationPart/name"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//IfExpression">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//IfExpression/static"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IfExpression/condition"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IfExpression/thenExpression"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IfExpression/elseExpression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//SwitchExpression">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//SwitchExpression/static"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//SwitchExpression/controlExpression"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//SwitchExpression/cases"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//SwitchExpression/defaultExpression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//SwitchCase">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//SwitchCase/caseExpression"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//SwitchCase/resultExpression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ArrayElementAccess">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ArrayElementAccess/array"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ArrayElementAccess/subscripts"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ArraySubscript">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//ArraySubscript/slice"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ArraySubscript/expression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//IterationCall">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IterationCall/target"/>
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//IterationCall/identifier"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IterationCall/variables"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IterationCall/accumulator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IterationCall/breakCondition"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IterationCall/expression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//IterationVariable">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//IterationVariable/name"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//IterationAccumulator">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//IterationAccumulator/name"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IterationAccumulator/initializer"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//DerivativeOperator">
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Mscript.ecore#//DerivativeOperator/variable"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ArrayConstructionOperator">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ArrayConstructionOperator/expressions"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ArrayConstructionOperator/iterationClauses"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ArrayConstructionIterationClause">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//ArrayConstructionIterationClause/variableName"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ArrayConstructionIterationClause/collectionExpression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ArrayConcatenationOperator">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ArrayConcatenationOperator/rows"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ExpressionList">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ExpressionList/expressions"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//UnitConstructionOperator">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//UnitConstructionOperator/unit"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ParenthesizedExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ParenthesizedExpression/expressions"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//EndExpression"/>
    <genClasses ecoreClass="Mscript.ecore#//RangeExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//RangeExpression/operands"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ImpliesExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ImpliesExpression/leftOperand"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ImpliesExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//LogicalOrExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LogicalOrExpression/leftOperand"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LogicalOrExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//LogicalAndExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LogicalAndExpression/leftOperand"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//LogicalAndExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//EqualityExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//EqualityExpression/leftOperand"/>
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//EqualityExpression/operator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//EqualityExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//RelationalExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//RelationalExpression/leftOperand"/>
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//RelationalExpression/operator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//RelationalExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//TypeTestExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//TypeTestExpression/expression"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//TypeTestExpression/type"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//AdditiveExpression">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//AdditiveExpression/operator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//AdditiveExpression/leftOperand"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//AdditiveExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//MultiplicativeExpression">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//MultiplicativeExpression/operator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//MultiplicativeExpression/leftOperand"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//MultiplicativeExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//PowerExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//PowerExpression/operand"/>
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//PowerExpression/operator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//PowerExpression/exponent"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//UnaryExpression">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//UnaryExpression/operator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//UnaryExpression/operand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//PostfixExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//PostfixExpression/operand"/>
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//PostfixExpression/operator"/>
    </genClasses>
    <genClasses image="false" ecoreClass="Mscript.ecore#//FeatureCall">
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Mscript.ecore#//FeatureCall/feature"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//VariableAccess">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//VariableAccess/stepExpression"/>
      <genOperations ecoreOperation="Mscript.ecore#//VariableAccess/isInitial"/>
    </genClasses>
    <genClasses image="false" ecoreClass="Mscript.ecore#//StepExpression"/>
    <genClasses ecoreClass="Mscript.ecore#//RangeStepExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//RangeStepExpression/start"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//RangeStepExpression/end"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//AdditiveStepExpression">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//AdditiveStepExpression/operator"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//AdditiveStepExpression/leftOperand"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//AdditiveStepExpression/rightOperand"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//NegateStepExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//NegateStepExpression/operand"/>
    </genClasses>
    <genClasses image="false" ecoreClass="Mscript.ecore#//PrimitiveStepExpression"/>
    <genClasses ecoreClass="Mscript.ecore#//StepLiteral">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//StepLiteral/value"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//StepN"/>
    <genClasses ecoreClass="Mscript.ecore#//FunctionCall">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//FunctionCall/arguments"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//MemberVariableAccess">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//MemberVariableAccess/target"/>
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Mscript.ecore#//MemberVariableAccess/memberVariable"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//AlgorithmExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//AlgorithmExpression/body"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//Compound">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Compound/statements"/>
    </genClasses>
    <genClasses image="false" ecoreClass="Mscript.ecore#//Statement"/>
    <genClasses ecoreClass="Mscript.ecore#//Assignment">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Assignment/target"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//Assignment/expression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//VariableDeclaration">
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Mscript.ecore#//VariableDeclaration/name"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//VariableDeclaration/initializer"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//IfStatement">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IfStatement/condition"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IfStatement/thenStatement"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//IfStatement/elseStatement"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//WhileStatement">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//WhileStatement/condition"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//WhileStatement/body"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//DoWhileStatement">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//DoWhileStatement/condition"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//DoWhileStatement/body"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ForStatement">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ForStatement/iterationVariable"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ForStatement/collectionExpression"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ForStatement/body"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//ContinueStatement"/>
    <genClasses ecoreClass="Mscript.ecore#//BreakStatement"/>
    <genClasses ecoreClass="Mscript.ecore#//ReturnStatement">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Mscript.ecore#//ReturnStatement/expression"/>
    </genClasses>
    <genClasses ecoreClass="Mscript.ecore#//BuiltinDefinition"/>
    <genClasses ecoreClass="Mscript.ecore#//BuiltinFunction"/>
    <genClasses ecoreClass="Mscript.ecore#//BuiltinVariable"/>
  </genPackages>
</genmodel:GenModel>
