--- a
+++ b/eu.opensourceprojects.mondo.benchmarks.itmfactory/models/java.ecore
@@ -0,0 +1,714 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="java"
+ nsURI="http://www.eclipse.org/MoDisco/Java/0.2.incubation/java" nsPrefix="java">
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractMethodDeclaration" abstract="true"
+ eSuperTypes="#//BodyDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" eType="#//Block"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+ eType="#//SingleVariableDeclaration" containment="true" eOpposite="#//SingleVariableDeclaration/methodDeclaration"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="thrownExceptions" upperBound="-1"
+ eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeParameters" upperBound="-1"
+ eType="#//TypeParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usagesInDocComments" ordered="false"
+ upperBound="-1" eType="#//MethodRef" eOpposite="#//MethodRef/method"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usages" ordered="false"
+ upperBound="-1" eType="#//AbstractMethodInvocation" eOpposite="#//AbstractMethodInvocation/method"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractMethodInvocation" abstract="true"
+ eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="method" ordered="false"
+ lowerBound="1" eType="#//AbstractMethodDeclaration" eOpposite="#//AbstractMethodDeclaration/usages"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeArguments" upperBound="-1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractTypeDeclaration" abstract="true"
+ eSuperTypes="#//BodyDeclaration #//Type">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyDeclarations" upperBound="-1"
+ eType="#//BodyDeclaration" containment="true" eOpposite="#//BodyDeclaration/abstractTypeDeclaration"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="commentsBeforeBody" upperBound="-1"
+ eType="#//Comment" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="commentsAfterBody" upperBound="-1"
+ eType="#//Comment" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
+ eType="#//Package" eOpposite="#//Package/ownedElements"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superInterfaces" upperBound="-1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractTypeQualifiedExpression" abstract="true"
+ eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractVariablesContainer" abstract="true"
+ eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//TypeAccess"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fragments" upperBound="-1"
+ eType="#//VariableDeclarationFragment" containment="true" eOpposite="#//VariableDeclarationFragment/variablesContainer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Annotation" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
+ eType="#//AnnotationMemberValuePair" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Archive" eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="originalFilePath" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classFiles" ordered="false"
+ upperBound="-1" eType="#//ClassFile" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manifest" ordered="false"
+ eType="#//Manifest" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AssertStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ASTNode" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="comments" upperBound="-1"
+ eType="#//Comment" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="originalCompilationUnit"
+ ordered="false" eType="#//CompilationUnit"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="originalClassFile" ordered="false"
+ eType="#//ClassFile"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnnotationMemberValuePair" eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
+ eType="#//AnnotationTypeMemberDeclaration" eOpposite="#//AnnotationTypeMemberDeclaration/usages"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnnotationTypeDeclaration" eSuperTypes="#//AbstractTypeDeclaration"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AnnotationTypeMemberDeclaration" eSuperTypes="#//BodyDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="default" ordered="false"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usages" ordered="false"
+ upperBound="-1" eType="#//AnnotationMemberValuePair" eOpposite="#//AnnotationMemberValuePair/member"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnonymousClassDeclaration" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyDeclarations" upperBound="-1"
+ eType="#//BodyDeclaration" containment="true" eOpposite="#//BodyDeclaration/anonymousClassDeclarationOwner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classInstanceCreation"
+ ordered="false" eType="#//ClassInstanceCreation" eOpposite="#//ClassInstanceCreation/anonymousClassDeclaration"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrayAccess" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="array" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="index" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrayCreation" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="dimensions" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initializer" ordered="false"
+ eType="#//ArrayInitializer" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrayInitializer" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expressions" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrayLengthAccess" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="array" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrayType" eSuperTypes="#//Type">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="dimensions" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementType" ordered="false"
+ lowerBound="1" eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Assignment" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="leftHandSide" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" ordered="false"
+ unique="false" lowerBound="1" eType="#//AssignmentKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rightHandSide" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="AssignmentKind">
+ <eLiterals name="ASSIGN" value="1" literal="="/>
+ <eLiterals name="PLUS_ASSIGN" value="2" literal="+="/>
+ <eLiterals name="MINUS_ASSIGN" value="3" literal="-="/>
+ <eLiterals name="TIMES_ASSIGN" value="4" literal="*="/>
+ <eLiterals name="DIVIDE_ASSIGN" value="5" literal="/="/>
+ <eLiterals name="BIT_AND_ASSIGN" value="6" literal="&="/>
+ <eLiterals name="BIT_OR_ASSIGN" value="7" literal="|="/>
+ <eLiterals name="BIT_XOR_ASSIGN" value="8" literal="^="/>
+ <eLiterals name="REMAINDER_ASSIGN" value="9" literal="%="/>
+ <eLiterals name="LEFT_SHIFT_ASSIGN" value="10" literal="<<="/>
+ <eLiterals name="RIGHT_SHIFT_SIGNED_ASSIGN" value="11" literal=">>="/>
+ <eLiterals name="RIGHT_SHIFT_UNSIGNED_ASSIGN" value="12" literal=">>>="/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BodyDeclaration" abstract="true" eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="abstractTypeDeclaration"
+ ordered="false" eType="#//AbstractTypeDeclaration" eOpposite="#//AbstractTypeDeclaration/bodyDeclarations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//Annotation" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="anonymousClassDeclarationOwner"
+ ordered="false" eType="#//AnonymousClassDeclaration" eOpposite="#//AnonymousClassDeclaration/bodyDeclarations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modifier" ordered="false"
+ eType="#//Modifier" containment="true" eOpposite="#//Modifier/bodyDeclaration"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BlockComment" eSuperTypes="#//Comment"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Block" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="statements" upperBound="-1"
+ eType="#//Statement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BreakStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="label" ordered="false"
+ eType="#//LabeledStatement" eOpposite="#//LabeledStatement/usagesInBreakStatements"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CastExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CatchClause" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exception" ordered="false"
+ lowerBound="1" eType="#//SingleVariableDeclaration" containment="true" eOpposite="#//SingleVariableDeclaration/catchClause"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Block" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CharacterLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="escapedValue" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassFile" eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="originalFilePath" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//AbstractTypeDeclaration"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attachedSource" ordered="false"
+ eType="#//CompilationUnit"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
+ eType="#//Package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassInstanceCreation" eSuperTypes="#//Expression #//AbstractMethodInvocation">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="anonymousClassDeclaration"
+ ordered="false" eType="#//AnonymousClassDeclaration" containment="true" eOpposite="#//AnonymousClassDeclaration/classInstanceCreation"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConstructorDeclaration" eSuperTypes="#//AbstractMethodDeclaration"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ConditionalExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseExpression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="thenExpression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConstructorInvocation" eSuperTypes="#//Statement #//AbstractMethodInvocation"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassDeclaration" eSuperTypes="#//TypeDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superClass" ordered="false"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Comment" abstract="true" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="enclosedByParent" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="prefixOfParent" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CompilationUnit" eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="originalFilePath" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="commentList" upperBound="-1"
+ eType="#//Comment"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
+ eType="#//ImportDeclaration" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
+ eType="#//Package"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
+ eType="#//AbstractTypeDeclaration"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ContinueStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="label" ordered="false"
+ eType="#//LabeledStatement" eOpposite="#//LabeledStatement/usagesInContinueStatements"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DoStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Statement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EmptyStatement" eSuperTypes="#//Statement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="EnhancedForStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Statement" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
+ lowerBound="1" eType="#//SingleVariableDeclaration" containment="true" eOpposite="#//SingleVariableDeclaration/enhancedForStatement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumConstantDeclaration" eSuperTypes="#//BodyDeclaration #//VariableDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="anonymousClassDeclaration"
+ ordered="false" eType="#//AnonymousClassDeclaration" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumDeclaration" eSuperTypes="#//AbstractTypeDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enumConstants" upperBound="-1"
+ eType="#//EnumConstantDeclaration" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="#//ASTNode"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ExpressionStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FieldAccess" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="field" ordered="false"
+ lowerBound="1" eType="#//SingleVariableAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FieldDeclaration" eSuperTypes="#//BodyDeclaration #//AbstractVariablesContainer"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ForStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="updaters" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initializers" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Statement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IfStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="thenStatement" ordered="false"
+ lowerBound="1" eType="#//Statement" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseStatement" ordered="false"
+ eType="#//Statement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ImportDeclaration" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" ordered="false"
+ unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" ordered="false"
+ lowerBound="1" eType="#//NamedElement" eOpposite="#//NamedElement/usagesInImports"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InfixExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" ordered="false"
+ unique="false" lowerBound="1" eType="#//InfixExpressionKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedOperands" upperBound="-1"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="InfixExpressionKind">
+ <eLiterals name="TIMES" value="1" literal="*"/>
+ <eLiterals name="DIVIDE" value="2" literal="/"/>
+ <eLiterals name="REMAINDER" value="3" literal="%"/>
+ <eLiterals name="PLUS" value="4" literal="+"/>
+ <eLiterals name="MINUS" value="5" literal="-"/>
+ <eLiterals name="LEFT_SHIFT" value="6" literal="<<"/>
+ <eLiterals name="RIGHT_SHIFT_SIGNED" value="7" literal=">>"/>
+ <eLiterals name="RIGHT_SHIFT_UNSIGNED" value="8" literal=">>>"/>
+ <eLiterals name="LESS" value="9" literal="<"/>
+ <eLiterals name="GREATER" value="10" literal=">"/>
+ <eLiterals name="LESS_EQUALS" value="11" literal="<="/>
+ <eLiterals name="GREATER_EQUALS" value="12" literal=">="/>
+ <eLiterals name="EQUALS" value="13" literal="=="/>
+ <eLiterals name="NOT_EQUALS" value="14" literal="!="/>
+ <eLiterals name="XOR" value="15" literal="^"/>
+ <eLiterals name="AND" value="16" literal="&"/>
+ <eLiterals name="OR" value="17" literal="|"/>
+ <eLiterals name="CONDITIONAL_AND" value="18" literal="&&"/>
+ <eLiterals name="CONDITIONAL_OR" value="19" literal="||"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="InheritanceKind">
+ <eLiterals name="none" value="1"/>
+ <eLiterals name="abstract" value="2"/>
+ <eLiterals name="final" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Initializer" eSuperTypes="#//BodyDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Block" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanceofExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rightOperand" ordered="false"
+ lowerBound="1" eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="leftOperand" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterfaceDeclaration" eSuperTypes="#//TypeDeclaration"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Javadoc" eSuperTypes="#//Comment">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tags" upperBound="-1" eType="#//TagElement"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LabeledStatement" eSuperTypes="#//NamedElement #//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Statement" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usagesInBreakStatements"
+ ordered="false" upperBound="-1" eType="#//BreakStatement" eOpposite="#//BreakStatement/label"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usagesInContinueStatements"
+ ordered="false" upperBound="-1" eType="#//ContinueStatement" eOpposite="#//ContinueStatement/label"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LineComment" eSuperTypes="#//Comment"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Manifest">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mainAttributes" ordered="false"
+ upperBound="-1" eType="#//ManifestAttribute" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entryAttributes" ordered="false"
+ upperBound="-1" eType="#//ManifestEntry" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ManifestAttribute">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" unique="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ManifestEntry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" ordered="false"
+ upperBound="-1" eType="#//ManifestAttribute" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MemberRef" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
+ lowerBound="1" eType="#//NamedElement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MethodDeclaration" eSuperTypes="#//AbstractMethodDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extraArrayDimensions" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returnType" ordered="false"
+ eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedMethodDeclaration"
+ ordered="false" eType="#//MethodDeclaration" eOpposite="#//MethodDeclaration/redefinitions"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinitions" ordered="false"
+ upperBound="-1" eType="#//MethodDeclaration" eOpposite="#//MethodDeclaration/redefinedMethodDeclaration"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MethodInvocation" eSuperTypes="#//Expression #//AbstractMethodInvocation">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MethodRef" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="method" ordered="false"
+ lowerBound="1" eType="#//AbstractMethodDeclaration" eOpposite="#//AbstractMethodDeclaration/usagesInDocComments"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+ eType="#//MethodRefParameter" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MethodRefParameter" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="varargs" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Model">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedElements" ordered="false"
+ upperBound="-1" eType="#//Package" containment="true" eOpposite="#//Package/model"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orphanTypes" ordered="false"
+ upperBound="-1" eType="#//Type" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="unresolvedItems" ordered="false"
+ upperBound="-1" eType="#//UnresolvedItem" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="compilationUnits" ordered="false"
+ upperBound="-1" eType="#//CompilationUnit" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classFiles" ordered="false"
+ upperBound="-1" eType="#//ClassFile" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="archives" ordered="false"
+ upperBound="-1" eType="#//Archive" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Modifier" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+ unique="false" lowerBound="1" eType="#//VisibilityKind"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="inheritance" ordered="false"
+ unique="false" lowerBound="1" eType="#//InheritanceKind"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="native" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="strictfp" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="synchronized" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyDeclaration" ordered="false"
+ eType="#//BodyDeclaration" eOpposite="#//BodyDeclaration/modifier"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="singleVariableDeclaration"
+ ordered="false" eType="#//SingleVariableDeclaration" eOpposite="#//SingleVariableDeclaration/modifier"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variableDeclarationStatement"
+ ordered="false" eType="#//VariableDeclarationStatement" eOpposite="#//VariableDeclarationStatement/modifier"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variableDeclarationExpression"
+ ordered="false" eType="#//VariableDeclarationExpression" eOpposite="#//VariableDeclarationExpression/modifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="proxy" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usagesInImports" ordered="false"
+ upperBound="-1" eType="#//ImportDeclaration" eOpposite="#//ImportDeclaration/importedElement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamespaceAccess" abstract="true" eSuperTypes="#//ASTNode"/>
+ <eClassifiers xsi:type="ecore:EClass" name="NumberLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="tokenValue" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NullLiteral" eSuperTypes="#//Expression"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedElements" ordered="false"
+ upperBound="-1" eType="#//AbstractTypeDeclaration" containment="true" eOpposite="#//AbstractTypeDeclaration/package"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="model" ordered="false"
+ eType="#//Model" eOpposite="#//Model/ownedElements"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPackages" ordered="false"
+ upperBound="-1" eType="#//Package" containment="true" eOpposite="#//Package/package"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
+ eType="#//Package" eOpposite="#//Package/ownedPackages"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usagesInPackageAccess"
+ ordered="false" upperBound="-1" eType="#//PackageAccess" eOpposite="#//PackageAccess/package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageAccess" eSuperTypes="#//NamespaceAccess">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
+ lowerBound="1" eType="#//Package" eOpposite="#//Package/usagesInPackageAccess"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ eType="#//PackageAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ParameterizedType" eSuperTypes="#//Type">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeArguments" upperBound="-1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ParenthesizedExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PostfixExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" ordered="false"
+ unique="false" lowerBound="1" eType="#//PostfixExpressionKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operand" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PostfixExpressionKind">
+ <eLiterals name="INCREMENT" value="1" literal="++"/>
+ <eLiterals name="DECREMENT" value="2" literal="--"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrefixExpression" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" ordered="false"
+ unique="false" lowerBound="1" eType="#//PrefixExpressionKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operand" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PrefixExpressionKind">
+ <eLiterals name="INCREMENT" value="1" literal="++"/>
+ <eLiterals name="DECREMENT" value="2" literal="--"/>
+ <eLiterals name="PLUS" value="3" literal="+"/>
+ <eLiterals name="MINUS" value="4" literal="-"/>
+ <eLiterals name="COMPLEMENT" value="5" literal="~"/>
+ <eLiterals name="NOT" value="6" literal="!"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//Type"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeBoolean" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeByte" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeChar" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeDouble" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeShort" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeFloat" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeInt" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeLong" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTypeVoid" eSuperTypes="#//PrimitiveType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ReturnStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SingleVariableAccess" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+ lowerBound="1" eType="#//VariableDeclaration" eOpposite="#//VariableDeclaration/usageInVariableAccess"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SingleVariableDeclaration" eSuperTypes="#//VariableDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modifier" ordered="false"
+ eType="#//Modifier" containment="true" eOpposite="#//Modifier/singleVariableDeclaration"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="varargs" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//Annotation" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="methodDeclaration" ordered="false"
+ eType="#//AbstractMethodDeclaration" eOpposite="#//AbstractMethodDeclaration/parameters"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="catchClause" ordered="false"
+ eType="#//CatchClause" eOpposite="#//CatchClause/exception"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enhancedForStatement" ordered="false"
+ eType="#//EnhancedForStatement" eOpposite="#//EnhancedForStatement/parameter"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" eSuperTypes="#//ASTNode"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="escapedValue" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SuperConstructorInvocation" eSuperTypes="#//Statement #//AbstractMethodInvocation">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SuperFieldAccess" eSuperTypes="#//AbstractTypeQualifiedExpression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="field" ordered="false"
+ lowerBound="1" eType="#//SingleVariableAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SuperMethodInvocation" eSuperTypes="#//AbstractTypeQualifiedExpression #//AbstractMethodInvocation"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SwitchCase" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SwitchStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="statements" upperBound="-1"
+ eType="#//Statement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SynchronizedStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Block" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TagElement" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="tagName" ordered="false"
+ unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fragments" upperBound="-1"
+ eType="#//ASTNode" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TextElement" eSuperTypes="#//ASTNode">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="text" ordered="false" unique="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ThisExpression" eSuperTypes="#//AbstractTypeQualifiedExpression"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ThrowStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TryStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Block" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="finally" ordered="false"
+ eType="#//Block" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="catchClauses" upperBound="-1"
+ eType="#//CatchClause" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usagesInTypeAccess" ordered="false"
+ upperBound="-1" eType="#//TypeAccess" eOpposite="#//TypeAccess/type"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeAccess" eSuperTypes="#//Expression #//NamespaceAccess">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//Type" eOpposite="#//Type/usagesInTypeAccess"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ eType="#//NamespaceAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeDeclaration" abstract="true" eSuperTypes="#//AbstractTypeDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeParameters" upperBound="-1"
+ eType="#//TypeParameter" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeDeclarationStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaration" ordered="false"
+ lowerBound="1" eType="#//AbstractTypeDeclaration" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeLiteral" eSuperTypes="#//Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeParameter" eSuperTypes="#//Type">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bounds" upperBound="-1"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedItem" eSuperTypes="#//NamedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedItemAccess" eSuperTypes="#//Expression #//NamespaceAccess">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element" ordered="false"
+ eType="#//UnresolvedItem"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ eType="#//ASTNode" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedAnnotationDeclaration" eSuperTypes="#//AnnotationTypeDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedAnnotationTypeMemberDeclaration"
+ eSuperTypes="#//AnnotationTypeMemberDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedClassDeclaration" eSuperTypes="#//ClassDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedEnumDeclaration" eSuperTypes="#//EnumDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedInterfaceDeclaration" eSuperTypes="#//InterfaceDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedLabeledStatement" eSuperTypes="#//LabeledStatement #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedMethodDeclaration" eSuperTypes="#//MethodDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedSingleVariableDeclaration"
+ eSuperTypes="#//SingleVariableDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedType" eSuperTypes="#//Type #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedTypeDeclaration" eSuperTypes="#//AbstractTypeDeclaration #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UnresolvedVariableDeclarationFragment"
+ eSuperTypes="#//VariableDeclarationFragment #//UnresolvedItem"/>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableDeclaration" abstract="true"
+ eSuperTypes="#//NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extraArrayDimensions" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initializer" ordered="false"
+ eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usageInVariableAccess"
+ ordered="false" upperBound="-1" eType="#//SingleVariableAccess" eOpposite="#//SingleVariableAccess/variable"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableDeclarationExpression" eSuperTypes="#//Expression #//AbstractVariablesContainer">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modifier" ordered="false"
+ eType="#//Modifier" containment="true" eOpposite="#//Modifier/variableDeclarationExpression"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//Annotation" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableDeclarationFragment" eSuperTypes="#//VariableDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variablesContainer" ordered="false"
+ eType="#//AbstractVariablesContainer" eOpposite="#//AbstractVariablesContainer/fragments"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableDeclarationStatement" eSuperTypes="#//Statement #//AbstractVariablesContainer">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extraArrayDimensions" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modifier" ordered="false"
+ eType="#//Modifier" containment="true" eOpposite="#//Modifier/variableDeclarationStatement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+ eType="#//Annotation" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
+ <eLiterals name="none" value="1"/>
+ <eLiterals name="public" value="2"/>
+ <eLiterals name="private" value="3"/>
+ <eLiterals name="protected" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WildCardType" eSuperTypes="#//Type">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bound" ordered="false"
+ eType="#//TypeAccess" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WhileStatement" eSuperTypes="#//Statement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false"
+ lowerBound="1" eType="#//Expression" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" lowerBound="1"
+ eType="#//Statement" containment="true"/>
+ </eClassifiers>
+</ecore:EPackage>