// Obtain other dependent packages
StatementsPackage theStatementsPackage = (StatementsPackage)EPackage.Registry.INSTANCE.getEPackage(StatementsPackage.eNS_URI);
ArraysPackage theArraysPackage = (ArraysPackage)EPackage.Registry.INSTANCE.getEPackage(ArraysPackage.eNS_URI);
AnnotationsPackage theAnnotationsPackage = (AnnotationsPackage)EPackage.Registry.INSTANCE.getEPackage(AnnotationsPackage.eNS_URI);
TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
OperatorsPackage theOperatorsPackage = (OperatorsPackage)EPackage.Registry.INSTANCE.getEPackage(OperatorsPackage.eNS_URI);
CorePackage theCorePackage = (CorePackage)EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
ReferencesPackage theReferencesPackage = (ReferencesPackage)EPackage.Registry.INSTANCE.getEPackage(ReferencesPackage.eNS_URI);
// Create type parameters
// Set bounds for type parameters
// Add supertypes to classes
expressionListEClass.getESuperTypes().add(theStatementsPackage.getForLoopInitializer());
expressionEClass.getESuperTypes().add(theArraysPackage.getArrayInitializationValue());
expressionEClass.getESuperTypes().add(theAnnotationsPackage.getAnnotationValue());
assignmentExpressionEClass.getESuperTypes().add(this.getDefaultExpression());
assignmentExpressionChildEClass.getESuperTypes().add(this.getExpression());
conditionalExpressionEClass.getESuperTypes().add(this.getAssignmentExpressionChild());
conditionalExpressionChildEClass.getESuperTypes().add(this.getAssignmentExpressionChild());
conditionalOrExpressionEClass.getESuperTypes().add(this.getConditionalExpressionChild());
conditionalOrExpressionChildEClass.getESuperTypes().add(this.getConditionalExpressionChild());
conditionalAndExpressionEClass.getESuperTypes().add(this.getConditionalOrExpressionChild());
conditionalAndExpressionChildEClass.getESuperTypes().add(this.getConditionalOrExpressionChild());
inclusiveOrExpressionEClass.getESuperTypes().add(this.getConditionalAndExpressionChild());
inclusiveOrExpressionChildEClass.getESuperTypes().add(this.getConditionalAndExpressionChild());
exclusiveOrExpressionEClass.getESuperTypes().add(this.getInclusiveOrExpressionChild());
exclusiveOrExpressionChildEClass.getESuperTypes().add(this.getInclusiveOrExpressionChild());
andExpressionEClass.getESuperTypes().add(this.getExclusiveOrExpressionChild());
andExpressionChildEClass.getESuperTypes().add(this.getExclusiveOrExpressionChild());
equalityExpressionEClass.getESuperTypes().add(this.getAndExpressionChild());
equalityExpressionChildEClass.getESuperTypes().add(this.getAndExpressionChild());
relationExpressionEClass.getESuperTypes().add(this.getEqualityExpressionChild());
relationExpressionChildEClass.getESuperTypes().add(this.getEqualityExpressionChild());
shiftExpressionEClass.getESuperTypes().add(this.getRelationExpressionChild());
shiftExpressionChildEClass.getESuperTypes().add(this.getRelationExpressionChild());
connectionExpressionEClass.getESuperTypes().add(this.getDefaultExpression());
connectionExpressionChildEClass.getESuperTypes().add(this.getExpression());
defaultExpressionEClass.getESuperTypes().add(this.getExpression());
additiveExpressionEClass.getESuperTypes().add(this.getShiftExpressionChild());
additiveExpressionChildEClass.getESuperTypes().add(this.getShiftExpressionChild());
multiplicativeExpressionEClass.getESuperTypes().add(this.getAdditiveExpressionChild());
multiplicativeExpressionChildEClass.getESuperTypes().add(this.getAdditiveExpressionChild());
unaryExpressionEClass.getESuperTypes().add(this.getMultiplicativeExpressionChild());
unaryExpressionChildEClass.getESuperTypes().add(this.getMultiplicativeExpressionChild());
unaryModificationExpressionEClass.getESuperTypes().add(this.getUnaryExpressionChild());
unaryModificationExpressionChildEClass.getESuperTypes().add(this.getUnaryExpressionChild());
prefixUnaryModificationExpressionEClass.getESuperTypes().add(this.getUnaryModificationExpression());
suffixUnaryModificationExpressionEClass.getESuperTypes().add(this.getUnaryModificationExpression());
primaryExpressionEClass.getESuperTypes().add(this.getUnaryModificationExpressionChild());
nestedExpressionEClass.getESuperTypes().add(theReferencesPackage.getReference());
repeatOfExpressionEClass.getESuperTypes().add(this.getExpression());
// Initialize classes and features; add operations and parameters
initEClass(expressionListEClass, ExpressionList.class, "ExpressionList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getExpressionList_Expressions(), this.getExpression(), null, "expressions", null, 0, -1, ExpressionList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(expressionEClass, Expression.class, "Expression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(expressionEClass, theTypesPackage.getType(), "getType", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(expressionEClass, theTypesPackage.getType(), "getAlternativeType", 0, 1, IS_UNIQUE, IS_ORDERED);
EOperation op = addEOperation(expressionEClass, theTypesPackage.getType(), "getOneType", 0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, ecorePackage.getEBoolean(), "alternative", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(expressionEClass, ecorePackage.getELong(), "getArrayDimension", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(assignmentExpressionEClass, AssignmentExpression.class, "AssignmentExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getAssignmentExpression_Child(), this.getAssignmentExpressionChild(), null, "child", null, 1, 1, AssignmentExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getAssignmentExpression_AssignmentOperator(), theOperatorsPackage.getAssignmentOperator(), null, "assignmentOperator", null, 1, 1, AssignmentExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getAssignmentExpression_Value(), this.getExpression(), null, "value", null, 1, 1, AssignmentExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(assignmentExpressionChildEClass, AssignmentExpressionChild.class, "AssignmentExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(conditionalExpressionEClass, ConditionalExpression.class, "ConditionalExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getConditionalExpression_Child(), this.getConditionalExpressionChild(), null, "child", null, 0, 1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getConditionalExpression_ExpressionIf(), this.getExpression(), null, "expressionIf", null, 1, 1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getConditionalExpression_ExpressionElse(), this.getAssignmentExpressionChild(), null, "expressionElse", null, 1, 1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(conditionalExpressionChildEClass, ConditionalExpressionChild.class, "ConditionalExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(conditionalOrExpressionEClass, ConditionalOrExpression.class, "ConditionalOrExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getConditionalOrExpression_Children(), this.getConditionalOrExpressionChild(), null, "children", null, 1, -1, ConditionalOrExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(conditionalOrExpressionChildEClass, ConditionalOrExpressionChild.class, "ConditionalOrExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(conditionalAndExpressionEClass, ConditionalAndExpression.class, "ConditionalAndExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getConditionalAndExpression_Children(), this.getConditionalAndExpressionChild(), null, "children", null, 1, -1, ConditionalAndExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(conditionalAndExpressionChildEClass, ConditionalAndExpressionChild.class, "ConditionalAndExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(inclusiveOrExpressionEClass, InclusiveOrExpression.class, "InclusiveOrExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getInclusiveOrExpression_Children(), this.getInclusiveOrExpressionChild(), null, "children", null, 1, -1, InclusiveOrExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(inclusiveOrExpressionChildEClass, InclusiveOrExpressionChild.class, "InclusiveOrExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(exclusiveOrExpressionEClass, ExclusiveOrExpression.class, "ExclusiveOrExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getExclusiveOrExpression_Children(), this.getExclusiveOrExpressionChild(), null, "children", null, 1, -1, ExclusiveOrExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(exclusiveOrExpressionChildEClass, ExclusiveOrExpressionChild.class, "ExclusiveOrExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(andExpressionEClass, AndExpression.class, "AndExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getAndExpression_Children(), this.getAndExpressionChild(), null, "children", null, 1, -1, AndExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(andExpressionChildEClass, AndExpressionChild.class, "AndExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(equalityExpressionEClass, EqualityExpression.class, "EqualityExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getEqualityExpression_Children(), this.getEqualityExpressionChild(), null, "children", null, 1, -1, EqualityExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getEqualityExpression_EqualityOperators(), theOperatorsPackage.getEqualityOperator(), null, "equalityOperators", null, 1, -1, EqualityExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(equalityExpressionChildEClass, EqualityExpressionChild.class, "EqualityExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(relationExpressionEClass, RelationExpression.class, "RelationExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getRelationExpression_Children(), this.getRelationExpressionChild(), null, "children", null, 1, -1, RelationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getRelationExpression_RelationOperators(), theOperatorsPackage.getRelationOperator(), null, "relationOperators", null, 1, -1, RelationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(relationExpressionChildEClass, RelationExpressionChild.class, "RelationExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(shiftExpressionEClass, ShiftExpression.class, "ShiftExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getShiftExpression_Children(), this.getShiftExpressionChild(), null, "children", null, 1, -1, ShiftExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getShiftExpression_ShiftOperators(), theOperatorsPackage.getShiftOperator(), null, "shiftOperators", null, 1, -1, ShiftExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(shiftExpressionChildEClass, ShiftExpressionChild.class, "ShiftExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(connectionExpressionEClass, ConnectionExpression.class, "ConnectionExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getConnectionExpression_Child(), theCorePackage.getConnectionEnabledElement(), null, "child", null, 1, 1, ConnectionExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getConnectionExpression_ConnectionOperator(), theOperatorsPackage.getConnectionOperator(), null, "connectionOperator", null, 1, 1, ConnectionExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getConnectionExpression_Value(), theCorePackage.getConnectionEnabledElement(), null, "value", null, 1, 1, ConnectionExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(connectionExpressionChildEClass, ConnectionExpressionChild.class, "ConnectionExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(defaultExpressionEClass, DefaultExpression.class, "DefaultExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(additiveExpressionEClass, AdditiveExpression.class, "AdditiveExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getAdditiveExpression_Children(), this.getAdditiveExpressionChild(), null, "children", null, 1, -1, AdditiveExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getAdditiveExpression_AdditiveOperators(), theOperatorsPackage.getAdditiveOperator(), null, "additiveOperators", null, 1, -1, AdditiveExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(additiveExpressionChildEClass, AdditiveExpressionChild.class, "AdditiveExpressionChild", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(multiplicativeExpressionEClass, MultiplicativeExpression.class, "MultiplicativeExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getMultiplicativeExpression_Children(), this.getMultiplicativeExpressionChild(), null, "children", null, 1, -1, MultiplicativeExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getMultiplicativeExpression_MultiplicativeOperators(), theOperatorsPackage.getMultiplicativeOperator(), null, "multiplicativeOperators", null, 1, -1, MultiplicativeExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(multiplicativeExpressionChildEClass, MultiplicativeExpressionChild.class, "MultiplicativeExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(unaryExpressionEClass, UnaryExpression.class, "UnaryExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getUnaryExpression_Child(), this.getUnaryExpressionChild(), null, "child", null, 1, 1, UnaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getUnaryExpression_Operators(), theOperatorsPackage.getUnaryOperator(), null, "operators", null, 1, -1, UnaryExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(unaryExpressionChildEClass, UnaryExpressionChild.class, "UnaryExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(unaryModificationExpressionEClass, UnaryModificationExpression.class, "UnaryModificationExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getUnaryModificationExpression_Operator(), theOperatorsPackage.getUnaryModificationOperator(), null, "operator", null, 1, 1, UnaryModificationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getUnaryModificationExpression_Child(), this.getUnaryModificationExpressionChild(), null, "child", null, 1, 1, UnaryModificationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(unaryModificationExpressionChildEClass, UnaryModificationExpressionChild.class, "UnaryModificationExpressionChild", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(prefixUnaryModificationExpressionEClass, PrefixUnaryModificationExpression.class, "PrefixUnaryModificationExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);