diff --git a/.gitignore b/.gitignore
index d48e657f..17c1a7f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
-*.DS_Store
-bin/
+*.DS_Store
+bin/
src-gen/
\ No newline at end of file
diff --git a/Build/org.jamopp.build.juno/.project b/Build/org.jamopp.build.juno/.project
index 4924cd8e..a567ed4e 100644
--- a/Build/org.jamopp.build.juno/.project
+++ b/Build/org.jamopp.build.juno/.project
@@ -1,11 +1,11 @@
-
-
- org.jamopp.build.juno
-
-
-
-
-
-
-
-
+
+
+ org.jamopp.build.juno
+
+
+
+
+
+
+
+
diff --git a/Build/org.jamopp.build.juno/jamopp.repositories b/Build/org.jamopp.build.juno/jamopp.repositories
index c49c8cb6..35137810 100644
--- a/Build/org.jamopp.build.juno/jamopp.repositories
+++ b/Build/org.jamopp.build.juno/jamopp.repositories
@@ -1,14 +1,14 @@
-git:https://github.com/DevBoost/JaMoPP.git!Build/org.jamopp.build
-
-// Eclipse Platform
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-platform-4.2.2-win32-x86_64.zip
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-4.2.2-delta-pack.zip
-// JDT
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/org.eclipse.jdt-4.2.2.zip
-// EMF
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/emf/downloads/drops/2.8.0/R201206080554/emf-xsd-SDK-2.8.0.zip
-// EMF Validation (core API plugin and feature)
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/plugins/org.eclipse.emf.validation_1.4.0.v20100428-2315.jar
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/plugins/org.eclipse.emf.validation.ui_1.3.0.v200901271722.jar
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/plugins/org.eclipse.emf.validation.ui.ide_1.3.0.v200901271722.jar
-get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/features/org.eclipse.emf.validation_1.6.0.v20120328-0001-479-9oB56N5BBR6LCA6/feature.xml
+git:https://github.com/DevBoost/JaMoPP.git!Build/org.jamopp.build
+
+// Eclipse Platform
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-platform-4.2.2-win32-x86_64.zip
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-4.2.2-delta-pack.zip
+// JDT
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/org.eclipse.jdt-4.2.2.zip
+// EMF
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/emf/downloads/drops/2.8.0/R201206080554/emf-xsd-SDK-2.8.0.zip
+// EMF Validation (core API plugin and feature)
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/plugins/org.eclipse.emf.validation_1.4.0.v20100428-2315.jar
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/plugins/org.eclipse.emf.validation.ui_1.3.0.v200901271722.jar
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/plugins/org.eclipse.emf.validation.ui.ide_1.3.0.v200901271722.jar
+get:http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/modeling/emf/validation/downloads/drops/1.6.0/R201206271200/emf-validation-runtime-1.6.0.zip!eclipse/features/org.eclipse.emf.validation_1.6.0.v20120328-0001-479-9oB56N5BBR6LCA6/feature.xml
diff --git a/Build/org.jamopp.build.kepler/.project b/Build/org.jamopp.build.kepler/.project
index a60f3da1..40833cbf 100644
--- a/Build/org.jamopp.build.kepler/.project
+++ b/Build/org.jamopp.build.kepler/.project
@@ -1,11 +1,11 @@
-
-
- org.jamopp.build.kepler
-
-
-
-
-
-
-
-
+
+
+ org.jamopp.build.kepler
+
+
+
+
+
+
+
+
diff --git a/Build/org.jamopp.build/.project b/Build/org.jamopp.build/.project
index 1ed8d33f..b4182514 100644
--- a/Build/org.jamopp.build/.project
+++ b/Build/org.jamopp.build/.project
@@ -1,11 +1,11 @@
-
-
- org.jamopp.build
-
-
-
-
-
-
-
-
+
+
+ org.jamopp.build
+
+
+
+
+
+
+
+
diff --git a/Core/org.emftext.language.java.resource.bcel/.classpath b/Core/org.emftext.language.java.resource.bcel/.classpath
index 0b4d0cf4..db09e695 100644
--- a/Core/org.emftext.language.java.resource.bcel/.classpath
+++ b/Core/org.emftext.language.java.resource.bcel/.classpath
@@ -1,7 +1,7 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Core/org.emftext.language.java.resource.bcel/.project b/Core/org.emftext.language.java.resource.bcel/.project
index 45985d28..92bf7c8d 100644
--- a/Core/org.emftext.language.java.resource.bcel/.project
+++ b/Core/org.emftext.language.java.resource.bcel/.project
@@ -1,28 +1,28 @@
-
-
- org.emftext.language.java.resource.bcel
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.pde.ManifestBuilder
-
-
-
-
- org.eclipse.pde.SchemaBuilder
-
-
-
-
-
- org.eclipse.pde.PluginNature
- org.eclipse.jdt.core.javanature
-
-
+
+
+ org.emftext.language.java.resource.bcel
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Core/org.emftext.language.java.resource.bcel/META-INF/MANIFEST.MF b/Core/org.emftext.language.java.resource.bcel/META-INF/MANIFEST.MF
index df823035..3bf0568a 100644
--- a/Core/org.emftext.language.java.resource.bcel/META-INF/MANIFEST.MF
+++ b/Core/org.emftext.language.java.resource.bcel/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Bcel
-Bundle-SymbolicName: org.emftext.language.java.resource.bcel
-Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.apache.bcel5_2_0,
- org.apache.bcel5_2_0.classfile,
- org.apache.bcel5_2_0.generic,
- org.apache.bcel5_2_0.util
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Bcel
+Bundle-SymbolicName: org.emftext.language.java.resource.bcel
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.apache.bcel5_2_0,
+ org.apache.bcel5_2_0.classfile,
+ org.apache.bcel5_2_0.generic,
+ org.apache.bcel5_2_0.util
diff --git a/Core/org.emftext.language.java.resource.bcel/build.properties b/Core/org.emftext.language.java.resource.bcel/build.properties
index 8ca449d7..fb21930c 100644
--- a/Core/org.emftext.language.java.resource.bcel/build.properties
+++ b/Core/org.emftext.language.java.resource.bcel/build.properties
@@ -1,4 +1,4 @@
-source.. = src-bcel/
-output.. = bin/
-bin.includes = META-INF/,\
- .
+source.. = src-bcel/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Constants.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Constants.java
index 3f1b39c6..61fea620 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Constants.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Constants.java
@@ -1,766 +1,766 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0;
-
-/**
- * Constants for the project, mostly defined in the JVM specification.
- *
- * @version $Id: Constants.java 410087 2006-05-29 12:12:19Z tcurdt $
- * @author M. Dahm
- */
-public interface Constants {
- /** Major and minor version of the code.
- */
- public final static short MAJOR_1_1 = 45;
- public final static short MINOR_1_1 = 3;
- public final static short MAJOR_1_2 = 46;
- public final static short MINOR_1_2 = 0;
- public final static short MAJOR_1_3 = 47;
- public final static short MINOR_1_3 = 0;
- public final static short MAJOR_1_4 = 48;
- public final static short MINOR_1_4 = 0;
- public final static short MAJOR_1_5 = 49;
- public final static short MINOR_1_5 = 0;
- public final static short MAJOR = MAJOR_1_1; // Defaults
- public final static short MINOR = MINOR_1_1;
-
- /** Maximum value for an unsigned short.
- */
- public final static int MAX_SHORT = 65535; // 2^16 - 1
-
- /** Maximum value for an unsigned byte.
- */
- public final static int MAX_BYTE = 255; // 2^8 - 1
-
- /** Access flags for classes, fields and methods.
- */
- public final static short ACC_PUBLIC = 0x0001;
- public final static short ACC_PRIVATE = 0x0002;
- public final static short ACC_PROTECTED = 0x0004;
- public final static short ACC_STATIC = 0x0008;
-
- public final static short ACC_FINAL = 0x0010;
- public final static short ACC_SYNCHRONIZED = 0x0020;
- public final static short ACC_VOLATILE = 0x0040;
- public final static short ACC_BRIDGE = 0x0040;
- public final static short ACC_TRANSIENT = 0x0080;
- public final static short ACC_VARARGS = 0x0080;
-
- public final static short ACC_NATIVE = 0x0100;
- public final static short ACC_INTERFACE = 0x0200;
- public final static short ACC_ABSTRACT = 0x0400;
- public final static short ACC_STRICT = 0x0800;
-
- public final static short ACC_SYNTHETIC = 0x1000;
- public final static short ACC_ANNOTATION = 0x2000;
- public final static short ACC_ENUM = 0x4000;
-
- // Applies to classes compiled by new compilers only
- public final static short ACC_SUPER = 0x0020;
-
- public final static short MAX_ACC_FLAG = ACC_ENUM;
-
- public final static String[] ACCESS_NAMES = {
- "public", "private", "protected", "static", "final", "synchronized",
- "volatile", "transient", "native", "interface", "abstract", "strictfp",
- "synthetic", "annotation", "enum"
- };
-
- /** Tags in constant pool to denote type of constant.
- */
- public final static byte CONSTANT_Utf8 = 1;
- public final static byte CONSTANT_Integer = 3;
- public final static byte CONSTANT_Float = 4;
- public final static byte CONSTANT_Long = 5;
- public final static byte CONSTANT_Double = 6;
- public final static byte CONSTANT_Class = 7;
- public final static byte CONSTANT_Fieldref = 9;
- public final static byte CONSTANT_String = 8;
- public final static byte CONSTANT_Methodref = 10;
- public final static byte CONSTANT_InterfaceMethodref = 11;
- public final static byte CONSTANT_NameAndType = 12;
-
- public final static String[] CONSTANT_NAMES = {
- "", "CONSTANT_Utf8", "", "CONSTANT_Integer",
- "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
- "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref",
- "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref",
- "CONSTANT_NameAndType" };
-
- /** The name of the static initializer, also called "class
- * initialization method" or "interface initialization
- * method". This is "<clinit>".
- */
- public final static String STATIC_INITIALIZER_NAME = "";
-
- /** The name of every constructor method in a class, also called
- * "instance initialization method". This is "<init>".
- */
- public final static String CONSTRUCTOR_NAME = "";
-
- /** The names of the interfaces implemented by arrays */
- public final static String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
-
- /**
- * Limitations of the Java Virtual Machine.
- * See The Java Virtual Machine Specification, Second Edition, page 152, chapter 4.10.
- */
- public static final int MAX_CP_ENTRIES = 65535;
- public static final int MAX_CODE_SIZE = 65536; //bytes
-
- /** Java VM opcodes.
- */
- public static final short NOP = 0;
- public static final short ACONST_NULL = 1;
- public static final short ICONST_M1 = 2;
- public static final short ICONST_0 = 3;
- public static final short ICONST_1 = 4;
- public static final short ICONST_2 = 5;
- public static final short ICONST_3 = 6;
- public static final short ICONST_4 = 7;
- public static final short ICONST_5 = 8;
- public static final short LCONST_0 = 9;
- public static final short LCONST_1 = 10;
- public static final short FCONST_0 = 11;
- public static final short FCONST_1 = 12;
- public static final short FCONST_2 = 13;
- public static final short DCONST_0 = 14;
- public static final short DCONST_1 = 15;
- public static final short BIPUSH = 16;
- public static final short SIPUSH = 17;
- public static final short LDC = 18;
- public static final short LDC_W = 19;
- public static final short LDC2_W = 20;
- public static final short ILOAD = 21;
- public static final short LLOAD = 22;
- public static final short FLOAD = 23;
- public static final short DLOAD = 24;
- public static final short ALOAD = 25;
- public static final short ILOAD_0 = 26;
- public static final short ILOAD_1 = 27;
- public static final short ILOAD_2 = 28;
- public static final short ILOAD_3 = 29;
- public static final short LLOAD_0 = 30;
- public static final short LLOAD_1 = 31;
- public static final short LLOAD_2 = 32;
- public static final short LLOAD_3 = 33;
- public static final short FLOAD_0 = 34;
- public static final short FLOAD_1 = 35;
- public static final short FLOAD_2 = 36;
- public static final short FLOAD_3 = 37;
- public static final short DLOAD_0 = 38;
- public static final short DLOAD_1 = 39;
- public static final short DLOAD_2 = 40;
- public static final short DLOAD_3 = 41;
- public static final short ALOAD_0 = 42;
- public static final short ALOAD_1 = 43;
- public static final short ALOAD_2 = 44;
- public static final short ALOAD_3 = 45;
- public static final short IALOAD = 46;
- public static final short LALOAD = 47;
- public static final short FALOAD = 48;
- public static final short DALOAD = 49;
- public static final short AALOAD = 50;
- public static final short BALOAD = 51;
- public static final short CALOAD = 52;
- public static final short SALOAD = 53;
- public static final short ISTORE = 54;
- public static final short LSTORE = 55;
- public static final short FSTORE = 56;
- public static final short DSTORE = 57;
- public static final short ASTORE = 58;
- public static final short ISTORE_0 = 59;
- public static final short ISTORE_1 = 60;
- public static final short ISTORE_2 = 61;
- public static final short ISTORE_3 = 62;
- public static final short LSTORE_0 = 63;
- public static final short LSTORE_1 = 64;
- public static final short LSTORE_2 = 65;
- public static final short LSTORE_3 = 66;
- public static final short FSTORE_0 = 67;
- public static final short FSTORE_1 = 68;
- public static final short FSTORE_2 = 69;
- public static final short FSTORE_3 = 70;
- public static final short DSTORE_0 = 71;
- public static final short DSTORE_1 = 72;
- public static final short DSTORE_2 = 73;
- public static final short DSTORE_3 = 74;
- public static final short ASTORE_0 = 75;
- public static final short ASTORE_1 = 76;
- public static final short ASTORE_2 = 77;
- public static final short ASTORE_3 = 78;
- public static final short IASTORE = 79;
- public static final short LASTORE = 80;
- public static final short FASTORE = 81;
- public static final short DASTORE = 82;
- public static final short AASTORE = 83;
- public static final short BASTORE = 84;
- public static final short CASTORE = 85;
- public static final short SASTORE = 86;
- public static final short POP = 87;
- public static final short POP2 = 88;
- public static final short DUP = 89;
- public static final short DUP_X1 = 90;
- public static final short DUP_X2 = 91;
- public static final short DUP2 = 92;
- public static final short DUP2_X1 = 93;
- public static final short DUP2_X2 = 94;
- public static final short SWAP = 95;
- public static final short IADD = 96;
- public static final short LADD = 97;
- public static final short FADD = 98;
- public static final short DADD = 99;
- public static final short ISUB = 100;
- public static final short LSUB = 101;
- public static final short FSUB = 102;
- public static final short DSUB = 103;
- public static final short IMUL = 104;
- public static final short LMUL = 105;
- public static final short FMUL = 106;
- public static final short DMUL = 107;
- public static final short IDIV = 108;
- public static final short LDIV = 109;
- public static final short FDIV = 110;
- public static final short DDIV = 111;
- public static final short IREM = 112;
- public static final short LREM = 113;
- public static final short FREM = 114;
- public static final short DREM = 115;
- public static final short INEG = 116;
- public static final short LNEG = 117;
- public static final short FNEG = 118;
- public static final short DNEG = 119;
- public static final short ISHL = 120;
- public static final short LSHL = 121;
- public static final short ISHR = 122;
- public static final short LSHR = 123;
- public static final short IUSHR = 124;
- public static final short LUSHR = 125;
- public static final short IAND = 126;
- public static final short LAND = 127;
- public static final short IOR = 128;
- public static final short LOR = 129;
- public static final short IXOR = 130;
- public static final short LXOR = 131;
- public static final short IINC = 132;
- public static final short I2L = 133;
- public static final short I2F = 134;
- public static final short I2D = 135;
- public static final short L2I = 136;
- public static final short L2F = 137;
- public static final short L2D = 138;
- public static final short F2I = 139;
- public static final short F2L = 140;
- public static final short F2D = 141;
- public static final short D2I = 142;
- public static final short D2L = 143;
- public static final short D2F = 144;
- public static final short I2B = 145;
- public static final short INT2BYTE = 145; // Old notion
- public static final short I2C = 146;
- public static final short INT2CHAR = 146; // Old notion
- public static final short I2S = 147;
- public static final short INT2SHORT = 147; // Old notion
- public static final short LCMP = 148;
- public static final short FCMPL = 149;
- public static final short FCMPG = 150;
- public static final short DCMPL = 151;
- public static final short DCMPG = 152;
- public static final short IFEQ = 153;
- public static final short IFNE = 154;
- public static final short IFLT = 155;
- public static final short IFGE = 156;
- public static final short IFGT = 157;
- public static final short IFLE = 158;
- public static final short IF_ICMPEQ = 159;
- public static final short IF_ICMPNE = 160;
- public static final short IF_ICMPLT = 161;
- public static final short IF_ICMPGE = 162;
- public static final short IF_ICMPGT = 163;
- public static final short IF_ICMPLE = 164;
- public static final short IF_ACMPEQ = 165;
- public static final short IF_ACMPNE = 166;
- public static final short GOTO = 167;
- public static final short JSR = 168;
- public static final short RET = 169;
- public static final short TABLESWITCH = 170;
- public static final short LOOKUPSWITCH = 171;
- public static final short IRETURN = 172;
- public static final short LRETURN = 173;
- public static final short FRETURN = 174;
- public static final short DRETURN = 175;
- public static final short ARETURN = 176;
- public static final short RETURN = 177;
- public static final short GETSTATIC = 178;
- public static final short PUTSTATIC = 179;
- public static final short GETFIELD = 180;
- public static final short PUTFIELD = 181;
- public static final short INVOKEVIRTUAL = 182;
- public static final short INVOKESPECIAL = 183;
- public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
- public static final short INVOKESTATIC = 184;
- public static final short INVOKEINTERFACE = 185;
- public static final short NEW = 187;
- public static final short NEWARRAY = 188;
- public static final short ANEWARRAY = 189;
- public static final short ARRAYLENGTH = 190;
- public static final short ATHROW = 191;
- public static final short CHECKCAST = 192;
- public static final short INSTANCEOF = 193;
- public static final short MONITORENTER = 194;
- public static final short MONITOREXIT = 195;
- public static final short WIDE = 196;
- public static final short MULTIANEWARRAY = 197;
- public static final short IFNULL = 198;
- public static final short IFNONNULL = 199;
- public static final short GOTO_W = 200;
- public static final short JSR_W = 201;
-
- /**
- * Non-legal opcodes, may be used by JVM internally.
- */
- public static final short BREAKPOINT = 202;
- public static final short LDC_QUICK = 203;
- public static final short LDC_W_QUICK = 204;
- public static final short LDC2_W_QUICK = 205;
- public static final short GETFIELD_QUICK = 206;
- public static final short PUTFIELD_QUICK = 207;
- public static final short GETFIELD2_QUICK = 208;
- public static final short PUTFIELD2_QUICK = 209;
- public static final short GETSTATIC_QUICK = 210;
- public static final short PUTSTATIC_QUICK = 211;
- public static final short GETSTATIC2_QUICK = 212;
- public static final short PUTSTATIC2_QUICK = 213;
- public static final short INVOKEVIRTUAL_QUICK = 214;
- public static final short INVOKENONVIRTUAL_QUICK = 215;
- public static final short INVOKESUPER_QUICK = 216;
- public static final short INVOKESTATIC_QUICK = 217;
- public static final short INVOKEINTERFACE_QUICK = 218;
- public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
- public static final short NEW_QUICK = 221;
- public static final short ANEWARRAY_QUICK = 222;
- public static final short MULTIANEWARRAY_QUICK = 223;
- public static final short CHECKCAST_QUICK = 224;
- public static final short INSTANCEOF_QUICK = 225;
- public static final short INVOKEVIRTUAL_QUICK_W = 226;
- public static final short GETFIELD_QUICK_W = 227;
- public static final short PUTFIELD_QUICK_W = 228;
- public static final short IMPDEP1 = 254;
- public static final short IMPDEP2 = 255;
-
- /**
- * For internal purposes only.
- */
- public static final short PUSH = 4711;
- public static final short SWITCH = 4712;
-
- /**
- * Illegal codes
- */
- public static final short UNDEFINED = -1;
- public static final short UNPREDICTABLE = -2;
- public static final short RESERVED = -3;
- public static final String ILLEGAL_OPCODE = "";
- public static final String ILLEGAL_TYPE = "";
-
- public static final byte T_BOOLEAN = 4;
- public static final byte T_CHAR = 5;
- public static final byte T_FLOAT = 6;
- public static final byte T_DOUBLE = 7;
- public static final byte T_BYTE = 8;
- public static final byte T_SHORT = 9;
- public static final byte T_INT = 10;
- public static final byte T_LONG = 11;
-
- public static final byte T_VOID = 12; // Non-standard
- public static final byte T_ARRAY = 13;
- public static final byte T_OBJECT = 14;
- public static final byte T_REFERENCE = 14; // Deprecated
- public static final byte T_UNKNOWN = 15;
- public static final byte T_ADDRESS = 16;
-
- /** The primitive type names corresponding to the T_XX constants,
- * e.g., TYPE_NAMES[T_INT] = "int"
- */
- public static final String[] TYPE_NAMES = {
- ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
- "boolean", "char", "float", "double", "byte", "short", "int", "long",
- "void", "array", "object", "unknown" // Non-standard
- };
-
- /** The primitive class names corresponding to the T_XX constants,
- * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
- */
- public static final String[] CLASS_TYPE_NAMES = {
- ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
- "java.lang.Boolean", "java.lang.Character", "java.lang.Float",
- "java.lang.Double", "java.lang.Byte", "java.lang.Short",
- "java.lang.Integer", "java.lang.Long", "java.lang.Void",
- ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
- };
-
- /** The signature characters corresponding to primitive types,
- * e.g., SHORT_TYPE_NAMES[T_INT] = "I"
- */
- public static final String[] SHORT_TYPE_NAMES = {
- ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
- "Z", "C", "F", "D", "B", "S", "I", "J",
- "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
- };
-
- /**
- * Number of byte code operands, i.e., number of bytes after the tag byte
- * itself.
- */
- public static final short[] NO_OF_OPERANDS = {
- 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/,
- 0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/,
- 0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/,
- 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/,
- 1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/,
- 1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/,
- 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/,
- 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/,
- 0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/,
- 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/,
- 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/,
- 0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/,
- 0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/,
- 1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/,
- 1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/,
- 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/,
- 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
- 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/,
- 0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/,
- 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/,
- 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/,
- 0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/,
- 0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/,
- 0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/,
- 0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/,
- 0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/,
- 0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/,
- 0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/,
- 0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/,
- 0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/,
- 2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/,
- 0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/,
- 0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/,
- 0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/,
- 2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/,
- 2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/,
- 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/,
- 2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/,
- 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
- 0/*dreturn*/, 0/*areturn*/, 0/*return*/,
- 2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/,
- 2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/,
- 4/*invokeinterface*/, UNDEFINED, 2/*new*/,
- 1/*newarray*/, 2/*anewarray*/,
- 0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/,
- 2/*instanceof*/, 0/*monitorenter*/,
- 0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/,
- 2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/,
- 4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/
- };
-
- /**
- * How the byte code operands are to be interpreted.
- */
- public static final short[][] TYPE_OF_OPERANDS = {
- {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/,
- {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/,
- {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/,
- {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/,
- {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/,
- {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/,
- {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/,
- {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/,
- {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/,
- {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/,
- {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/,
- {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/,
- {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/,
- {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/,
- {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/,
- {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/,
- {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/,
- {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/,
- {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/,
- {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/,
- {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/,
- {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/,
- {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/,
- {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/,
- {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/,
- {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/,
- {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/,
- {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/,
- {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/,
- {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/,
- {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/,
- {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/,
- {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/,
- {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/,
- {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/,
- {}/*i2b*/, {}/*i2c*/,{}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/,
- {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/,
- {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/,
- {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/,
- {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/,
- {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/,
- {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/,
- {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/,
- {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/,
- {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/,
- {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/,
- {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/,
- {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/,
- {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/,
- {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {},
- {T_SHORT}/*new*/, {T_BYTE}/*newarray*/,
- {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/,
- {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/,
- {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/,
- {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/,
- {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/,
- {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {},
- {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
- {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
- {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
- {}/*impdep1*/, {}/*impdep2*/
- };
-
- /**
- * Names of opcodes.
- */
- public static final String[] OPCODE_NAMES = {
- "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1",
- "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0",
- "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0",
- "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload",
- "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2",
- "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0",
- "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2",
- "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload",
- "laload", "faload", "daload", "aaload", "baload", "caload", "saload",
- "istore", "lstore", "fstore", "dstore", "astore", "istore_0",
- "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
- "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2",
- "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3",
- "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore",
- "fastore", "dastore", "aastore", "bastore", "castore", "sastore",
- "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1",
- "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub",
- "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv",
- "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg",
- "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr",
- "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f",
- "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f",
- "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg",
- "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle",
- "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt",
- "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret",
- "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn",
- "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield",
- "putfield", "invokevirtual", "invokespecial", "invokestatic",
- "invokeinterface", ILLEGAL_OPCODE, "new", "newarray", "anewarray",
- "arraylength", "athrow", "checkcast", "instanceof", "monitorenter",
- "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull",
- "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
- ILLEGAL_OPCODE, "impdep1", "impdep2"
- };
-
- /**
- * Number of words consumed on operand stack by instructions.
- */
- public static final int[] CONSUME_STACK = {
- 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/,
- 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/,
- 0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/,
- 0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/,
- 0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/,
- 0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/,
- 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/,
- 0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/,
- 2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/,
- 1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/,
- 1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/,
- 2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/,
- 1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/,
- 1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/,
- 3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/,
- 1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/,
- 4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/,
- 2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/,
- 2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/,
- 1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/,
- 2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/,
- 1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/,
- 1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/,
- 4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/,
- 1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/,
- 2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/,
- 0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/,
- 2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/,
- UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/,
- UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/,
- UNPREDICTABLE/*invokestatic*/,
- UNPREDICTABLE/*invokeinterface*/, UNDEFINED, 0/*new*/, 1/*newarray*/, 1/*anewarray*/,
- 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/,
- 1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/,
- 0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
- };
-
- /**
- * Number of words produced onto operand stack by instructions.
- */
- public static final int[] PRODUCE_STACK = {
- 0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/,
- 1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/,
- 2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/,
- 2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/,
- 2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/,
- 1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/,
- 1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/,
- 2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/,
- 2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/,
- 0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/,
- 0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/,
- 0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
- 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/,
- 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/,
- 0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/,
- 0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/,
- 6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/,
- 1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/,
- 1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/,
- 1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/,
- 1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/,
- 0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/,
- 2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/,
- 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/,
- 1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/,
- 0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/,
- 0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/,
- 0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
- 0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/,
- UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/,
- UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/,
- UNPREDICTABLE/*invokeinterface*/, UNDEFINED, 1/*new*/, 1/*newarray*/, 1/*anewarray*/,
- 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/,
- 0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/,
- 0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
- UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
- };
-
- /** Attributes and their corresponding names.
- */
- public static final byte ATTR_UNKNOWN = -1;
- public static final byte ATTR_SOURCE_FILE = 0;
- public static final byte ATTR_CONSTANT_VALUE = 1;
- public static final byte ATTR_CODE = 2;
- public static final byte ATTR_EXCEPTIONS = 3;
- public static final byte ATTR_LINE_NUMBER_TABLE = 4;
- public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5;
- public static final byte ATTR_INNER_CLASSES = 6;
- public static final byte ATTR_SYNTHETIC = 7;
- public static final byte ATTR_DEPRECATED = 8;
- public static final byte ATTR_PMG = 9;
- public static final byte ATTR_SIGNATURE = 10;
- public static final byte ATTR_STACK_MAP = 11;
- public static final byte ATTR_RUNTIMEVISIBLE_ANNOTATIONS = 12;
- public static final byte ATTR_RUNTIMEINVISIBLE_ANNOTATIONS = 13;
- public static final byte ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS = 14;
- public static final byte ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS = 15;
- public static final byte ATTR_ANNOTATION_DEFAULT = 16;
-
- public static final short KNOWN_ATTRIBUTES = 12;//should be 17
-
- public static final String[] ATTRIBUTE_NAMES = {
- "SourceFile", "ConstantValue", "Code", "Exceptions",
- "LineNumberTable", "LocalVariableTable",
- "InnerClasses", "Synthetic", "Deprecated",
- "PMGClass", "Signature", "StackMap",
- "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
- "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations",
- "AnnotationDefault"
- };
-
- /** Constants used in the StackMap attribute.
- */
- public static final byte ITEM_Bogus = 0;
- public static final byte ITEM_Integer = 1;
- public static final byte ITEM_Float = 2;
- public static final byte ITEM_Double = 3;
- public static final byte ITEM_Long = 4;
- public static final byte ITEM_Null = 5;
- public static final byte ITEM_InitObject = 6;
- public static final byte ITEM_Object = 7;
- public static final byte ITEM_NewObject = 8;
-
- public static final String[] ITEM_NAMES = {
- "Bogus", "Integer", "Float", "Double", "Long",
- "Null", "InitObject", "Object", "NewObject"
- };
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0;
+
+/**
+ * Constants for the project, mostly defined in the JVM specification.
+ *
+ * @version $Id: Constants.java 410087 2006-05-29 12:12:19Z tcurdt $
+ * @author M. Dahm
+ */
+public interface Constants {
+ /** Major and minor version of the code.
+ */
+ public final static short MAJOR_1_1 = 45;
+ public final static short MINOR_1_1 = 3;
+ public final static short MAJOR_1_2 = 46;
+ public final static short MINOR_1_2 = 0;
+ public final static short MAJOR_1_3 = 47;
+ public final static short MINOR_1_3 = 0;
+ public final static short MAJOR_1_4 = 48;
+ public final static short MINOR_1_4 = 0;
+ public final static short MAJOR_1_5 = 49;
+ public final static short MINOR_1_5 = 0;
+ public final static short MAJOR = MAJOR_1_1; // Defaults
+ public final static short MINOR = MINOR_1_1;
+
+ /** Maximum value for an unsigned short.
+ */
+ public final static int MAX_SHORT = 65535; // 2^16 - 1
+
+ /** Maximum value for an unsigned byte.
+ */
+ public final static int MAX_BYTE = 255; // 2^8 - 1
+
+ /** Access flags for classes, fields and methods.
+ */
+ public final static short ACC_PUBLIC = 0x0001;
+ public final static short ACC_PRIVATE = 0x0002;
+ public final static short ACC_PROTECTED = 0x0004;
+ public final static short ACC_STATIC = 0x0008;
+
+ public final static short ACC_FINAL = 0x0010;
+ public final static short ACC_SYNCHRONIZED = 0x0020;
+ public final static short ACC_VOLATILE = 0x0040;
+ public final static short ACC_BRIDGE = 0x0040;
+ public final static short ACC_TRANSIENT = 0x0080;
+ public final static short ACC_VARARGS = 0x0080;
+
+ public final static short ACC_NATIVE = 0x0100;
+ public final static short ACC_INTERFACE = 0x0200;
+ public final static short ACC_ABSTRACT = 0x0400;
+ public final static short ACC_STRICT = 0x0800;
+
+ public final static short ACC_SYNTHETIC = 0x1000;
+ public final static short ACC_ANNOTATION = 0x2000;
+ public final static short ACC_ENUM = 0x4000;
+
+ // Applies to classes compiled by new compilers only
+ public final static short ACC_SUPER = 0x0020;
+
+ public final static short MAX_ACC_FLAG = ACC_ENUM;
+
+ public final static String[] ACCESS_NAMES = {
+ "public", "private", "protected", "static", "final", "synchronized",
+ "volatile", "transient", "native", "interface", "abstract", "strictfp",
+ "synthetic", "annotation", "enum"
+ };
+
+ /** Tags in constant pool to denote type of constant.
+ */
+ public final static byte CONSTANT_Utf8 = 1;
+ public final static byte CONSTANT_Integer = 3;
+ public final static byte CONSTANT_Float = 4;
+ public final static byte CONSTANT_Long = 5;
+ public final static byte CONSTANT_Double = 6;
+ public final static byte CONSTANT_Class = 7;
+ public final static byte CONSTANT_Fieldref = 9;
+ public final static byte CONSTANT_String = 8;
+ public final static byte CONSTANT_Methodref = 10;
+ public final static byte CONSTANT_InterfaceMethodref = 11;
+ public final static byte CONSTANT_NameAndType = 12;
+
+ public final static String[] CONSTANT_NAMES = {
+ "", "CONSTANT_Utf8", "", "CONSTANT_Integer",
+ "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
+ "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref",
+ "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref",
+ "CONSTANT_NameAndType" };
+
+ /** The name of the static initializer, also called "class
+ * initialization method" or "interface initialization
+ * method". This is "<clinit>".
+ */
+ public final static String STATIC_INITIALIZER_NAME = "";
+
+ /** The name of every constructor method in a class, also called
+ * "instance initialization method". This is "<init>".
+ */
+ public final static String CONSTRUCTOR_NAME = "";
+
+ /** The names of the interfaces implemented by arrays */
+ public final static String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
+
+ /**
+ * Limitations of the Java Virtual Machine.
+ * See The Java Virtual Machine Specification, Second Edition, page 152, chapter 4.10.
+ */
+ public static final int MAX_CP_ENTRIES = 65535;
+ public static final int MAX_CODE_SIZE = 65536; //bytes
+
+ /** Java VM opcodes.
+ */
+ public static final short NOP = 0;
+ public static final short ACONST_NULL = 1;
+ public static final short ICONST_M1 = 2;
+ public static final short ICONST_0 = 3;
+ public static final short ICONST_1 = 4;
+ public static final short ICONST_2 = 5;
+ public static final short ICONST_3 = 6;
+ public static final short ICONST_4 = 7;
+ public static final short ICONST_5 = 8;
+ public static final short LCONST_0 = 9;
+ public static final short LCONST_1 = 10;
+ public static final short FCONST_0 = 11;
+ public static final short FCONST_1 = 12;
+ public static final short FCONST_2 = 13;
+ public static final short DCONST_0 = 14;
+ public static final short DCONST_1 = 15;
+ public static final short BIPUSH = 16;
+ public static final short SIPUSH = 17;
+ public static final short LDC = 18;
+ public static final short LDC_W = 19;
+ public static final short LDC2_W = 20;
+ public static final short ILOAD = 21;
+ public static final short LLOAD = 22;
+ public static final short FLOAD = 23;
+ public static final short DLOAD = 24;
+ public static final short ALOAD = 25;
+ public static final short ILOAD_0 = 26;
+ public static final short ILOAD_1 = 27;
+ public static final short ILOAD_2 = 28;
+ public static final short ILOAD_3 = 29;
+ public static final short LLOAD_0 = 30;
+ public static final short LLOAD_1 = 31;
+ public static final short LLOAD_2 = 32;
+ public static final short LLOAD_3 = 33;
+ public static final short FLOAD_0 = 34;
+ public static final short FLOAD_1 = 35;
+ public static final short FLOAD_2 = 36;
+ public static final short FLOAD_3 = 37;
+ public static final short DLOAD_0 = 38;
+ public static final short DLOAD_1 = 39;
+ public static final short DLOAD_2 = 40;
+ public static final short DLOAD_3 = 41;
+ public static final short ALOAD_0 = 42;
+ public static final short ALOAD_1 = 43;
+ public static final short ALOAD_2 = 44;
+ public static final short ALOAD_3 = 45;
+ public static final short IALOAD = 46;
+ public static final short LALOAD = 47;
+ public static final short FALOAD = 48;
+ public static final short DALOAD = 49;
+ public static final short AALOAD = 50;
+ public static final short BALOAD = 51;
+ public static final short CALOAD = 52;
+ public static final short SALOAD = 53;
+ public static final short ISTORE = 54;
+ public static final short LSTORE = 55;
+ public static final short FSTORE = 56;
+ public static final short DSTORE = 57;
+ public static final short ASTORE = 58;
+ public static final short ISTORE_0 = 59;
+ public static final short ISTORE_1 = 60;
+ public static final short ISTORE_2 = 61;
+ public static final short ISTORE_3 = 62;
+ public static final short LSTORE_0 = 63;
+ public static final short LSTORE_1 = 64;
+ public static final short LSTORE_2 = 65;
+ public static final short LSTORE_3 = 66;
+ public static final short FSTORE_0 = 67;
+ public static final short FSTORE_1 = 68;
+ public static final short FSTORE_2 = 69;
+ public static final short FSTORE_3 = 70;
+ public static final short DSTORE_0 = 71;
+ public static final short DSTORE_1 = 72;
+ public static final short DSTORE_2 = 73;
+ public static final short DSTORE_3 = 74;
+ public static final short ASTORE_0 = 75;
+ public static final short ASTORE_1 = 76;
+ public static final short ASTORE_2 = 77;
+ public static final short ASTORE_3 = 78;
+ public static final short IASTORE = 79;
+ public static final short LASTORE = 80;
+ public static final short FASTORE = 81;
+ public static final short DASTORE = 82;
+ public static final short AASTORE = 83;
+ public static final short BASTORE = 84;
+ public static final short CASTORE = 85;
+ public static final short SASTORE = 86;
+ public static final short POP = 87;
+ public static final short POP2 = 88;
+ public static final short DUP = 89;
+ public static final short DUP_X1 = 90;
+ public static final short DUP_X2 = 91;
+ public static final short DUP2 = 92;
+ public static final short DUP2_X1 = 93;
+ public static final short DUP2_X2 = 94;
+ public static final short SWAP = 95;
+ public static final short IADD = 96;
+ public static final short LADD = 97;
+ public static final short FADD = 98;
+ public static final short DADD = 99;
+ public static final short ISUB = 100;
+ public static final short LSUB = 101;
+ public static final short FSUB = 102;
+ public static final short DSUB = 103;
+ public static final short IMUL = 104;
+ public static final short LMUL = 105;
+ public static final short FMUL = 106;
+ public static final short DMUL = 107;
+ public static final short IDIV = 108;
+ public static final short LDIV = 109;
+ public static final short FDIV = 110;
+ public static final short DDIV = 111;
+ public static final short IREM = 112;
+ public static final short LREM = 113;
+ public static final short FREM = 114;
+ public static final short DREM = 115;
+ public static final short INEG = 116;
+ public static final short LNEG = 117;
+ public static final short FNEG = 118;
+ public static final short DNEG = 119;
+ public static final short ISHL = 120;
+ public static final short LSHL = 121;
+ public static final short ISHR = 122;
+ public static final short LSHR = 123;
+ public static final short IUSHR = 124;
+ public static final short LUSHR = 125;
+ public static final short IAND = 126;
+ public static final short LAND = 127;
+ public static final short IOR = 128;
+ public static final short LOR = 129;
+ public static final short IXOR = 130;
+ public static final short LXOR = 131;
+ public static final short IINC = 132;
+ public static final short I2L = 133;
+ public static final short I2F = 134;
+ public static final short I2D = 135;
+ public static final short L2I = 136;
+ public static final short L2F = 137;
+ public static final short L2D = 138;
+ public static final short F2I = 139;
+ public static final short F2L = 140;
+ public static final short F2D = 141;
+ public static final short D2I = 142;
+ public static final short D2L = 143;
+ public static final short D2F = 144;
+ public static final short I2B = 145;
+ public static final short INT2BYTE = 145; // Old notion
+ public static final short I2C = 146;
+ public static final short INT2CHAR = 146; // Old notion
+ public static final short I2S = 147;
+ public static final short INT2SHORT = 147; // Old notion
+ public static final short LCMP = 148;
+ public static final short FCMPL = 149;
+ public static final short FCMPG = 150;
+ public static final short DCMPL = 151;
+ public static final short DCMPG = 152;
+ public static final short IFEQ = 153;
+ public static final short IFNE = 154;
+ public static final short IFLT = 155;
+ public static final short IFGE = 156;
+ public static final short IFGT = 157;
+ public static final short IFLE = 158;
+ public static final short IF_ICMPEQ = 159;
+ public static final short IF_ICMPNE = 160;
+ public static final short IF_ICMPLT = 161;
+ public static final short IF_ICMPGE = 162;
+ public static final short IF_ICMPGT = 163;
+ public static final short IF_ICMPLE = 164;
+ public static final short IF_ACMPEQ = 165;
+ public static final short IF_ACMPNE = 166;
+ public static final short GOTO = 167;
+ public static final short JSR = 168;
+ public static final short RET = 169;
+ public static final short TABLESWITCH = 170;
+ public static final short LOOKUPSWITCH = 171;
+ public static final short IRETURN = 172;
+ public static final short LRETURN = 173;
+ public static final short FRETURN = 174;
+ public static final short DRETURN = 175;
+ public static final short ARETURN = 176;
+ public static final short RETURN = 177;
+ public static final short GETSTATIC = 178;
+ public static final short PUTSTATIC = 179;
+ public static final short GETFIELD = 180;
+ public static final short PUTFIELD = 181;
+ public static final short INVOKEVIRTUAL = 182;
+ public static final short INVOKESPECIAL = 183;
+ public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
+ public static final short INVOKESTATIC = 184;
+ public static final short INVOKEINTERFACE = 185;
+ public static final short NEW = 187;
+ public static final short NEWARRAY = 188;
+ public static final short ANEWARRAY = 189;
+ public static final short ARRAYLENGTH = 190;
+ public static final short ATHROW = 191;
+ public static final short CHECKCAST = 192;
+ public static final short INSTANCEOF = 193;
+ public static final short MONITORENTER = 194;
+ public static final short MONITOREXIT = 195;
+ public static final short WIDE = 196;
+ public static final short MULTIANEWARRAY = 197;
+ public static final short IFNULL = 198;
+ public static final short IFNONNULL = 199;
+ public static final short GOTO_W = 200;
+ public static final short JSR_W = 201;
+
+ /**
+ * Non-legal opcodes, may be used by JVM internally.
+ */
+ public static final short BREAKPOINT = 202;
+ public static final short LDC_QUICK = 203;
+ public static final short LDC_W_QUICK = 204;
+ public static final short LDC2_W_QUICK = 205;
+ public static final short GETFIELD_QUICK = 206;
+ public static final short PUTFIELD_QUICK = 207;
+ public static final short GETFIELD2_QUICK = 208;
+ public static final short PUTFIELD2_QUICK = 209;
+ public static final short GETSTATIC_QUICK = 210;
+ public static final short PUTSTATIC_QUICK = 211;
+ public static final short GETSTATIC2_QUICK = 212;
+ public static final short PUTSTATIC2_QUICK = 213;
+ public static final short INVOKEVIRTUAL_QUICK = 214;
+ public static final short INVOKENONVIRTUAL_QUICK = 215;
+ public static final short INVOKESUPER_QUICK = 216;
+ public static final short INVOKESTATIC_QUICK = 217;
+ public static final short INVOKEINTERFACE_QUICK = 218;
+ public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
+ public static final short NEW_QUICK = 221;
+ public static final short ANEWARRAY_QUICK = 222;
+ public static final short MULTIANEWARRAY_QUICK = 223;
+ public static final short CHECKCAST_QUICK = 224;
+ public static final short INSTANCEOF_QUICK = 225;
+ public static final short INVOKEVIRTUAL_QUICK_W = 226;
+ public static final short GETFIELD_QUICK_W = 227;
+ public static final short PUTFIELD_QUICK_W = 228;
+ public static final short IMPDEP1 = 254;
+ public static final short IMPDEP2 = 255;
+
+ /**
+ * For internal purposes only.
+ */
+ public static final short PUSH = 4711;
+ public static final short SWITCH = 4712;
+
+ /**
+ * Illegal codes
+ */
+ public static final short UNDEFINED = -1;
+ public static final short UNPREDICTABLE = -2;
+ public static final short RESERVED = -3;
+ public static final String ILLEGAL_OPCODE = "";
+ public static final String ILLEGAL_TYPE = "";
+
+ public static final byte T_BOOLEAN = 4;
+ public static final byte T_CHAR = 5;
+ public static final byte T_FLOAT = 6;
+ public static final byte T_DOUBLE = 7;
+ public static final byte T_BYTE = 8;
+ public static final byte T_SHORT = 9;
+ public static final byte T_INT = 10;
+ public static final byte T_LONG = 11;
+
+ public static final byte T_VOID = 12; // Non-standard
+ public static final byte T_ARRAY = 13;
+ public static final byte T_OBJECT = 14;
+ public static final byte T_REFERENCE = 14; // Deprecated
+ public static final byte T_UNKNOWN = 15;
+ public static final byte T_ADDRESS = 16;
+
+ /** The primitive type names corresponding to the T_XX constants,
+ * e.g., TYPE_NAMES[T_INT] = "int"
+ */
+ public static final String[] TYPE_NAMES = {
+ ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
+ "boolean", "char", "float", "double", "byte", "short", "int", "long",
+ "void", "array", "object", "unknown" // Non-standard
+ };
+
+ /** The primitive class names corresponding to the T_XX constants,
+ * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
+ */
+ public static final String[] CLASS_TYPE_NAMES = {
+ ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
+ "java.lang.Boolean", "java.lang.Character", "java.lang.Float",
+ "java.lang.Double", "java.lang.Byte", "java.lang.Short",
+ "java.lang.Integer", "java.lang.Long", "java.lang.Void",
+ ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
+ };
+
+ /** The signature characters corresponding to primitive types,
+ * e.g., SHORT_TYPE_NAMES[T_INT] = "I"
+ */
+ public static final String[] SHORT_TYPE_NAMES = {
+ ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE,
+ "Z", "C", "F", "D", "B", "S", "I", "J",
+ "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
+ };
+
+ /**
+ * Number of byte code operands, i.e., number of bytes after the tag byte
+ * itself.
+ */
+ public static final short[] NO_OF_OPERANDS = {
+ 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/,
+ 0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/,
+ 0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/,
+ 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/,
+ 1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/,
+ 1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/,
+ 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/,
+ 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/,
+ 0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/,
+ 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/,
+ 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/,
+ 0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/,
+ 0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/,
+ 1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/,
+ 1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/,
+ 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/,
+ 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
+ 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/,
+ 0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/,
+ 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/,
+ 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/,
+ 0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/,
+ 0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/,
+ 0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/,
+ 0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/,
+ 0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/,
+ 0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/,
+ 0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/,
+ 0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/,
+ 0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/,
+ 2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/,
+ 0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/,
+ 0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/,
+ 0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/,
+ 2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/,
+ 2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/,
+ 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/,
+ 2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/,
+ 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
+ 0/*dreturn*/, 0/*areturn*/, 0/*return*/,
+ 2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/,
+ 2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/,
+ 4/*invokeinterface*/, UNDEFINED, 2/*new*/,
+ 1/*newarray*/, 2/*anewarray*/,
+ 0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/,
+ 2/*instanceof*/, 0/*monitorenter*/,
+ 0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/,
+ 2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/,
+ 4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/
+ };
+
+ /**
+ * How the byte code operands are to be interpreted.
+ */
+ public static final short[][] TYPE_OF_OPERANDS = {
+ {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/,
+ {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/,
+ {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/,
+ {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/,
+ {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/,
+ {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/,
+ {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/,
+ {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/,
+ {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/,
+ {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/,
+ {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/,
+ {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/,
+ {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/,
+ {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/,
+ {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/,
+ {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/,
+ {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/,
+ {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/,
+ {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/,
+ {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/,
+ {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/,
+ {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/,
+ {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/,
+ {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/,
+ {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/,
+ {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/,
+ {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/,
+ {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/,
+ {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/,
+ {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/,
+ {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/,
+ {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/,
+ {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/,
+ {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/,
+ {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/,
+ {}/*i2b*/, {}/*i2c*/,{}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/,
+ {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/,
+ {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/,
+ {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/,
+ {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/,
+ {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/,
+ {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/,
+ {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/,
+ {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/,
+ {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/,
+ {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/,
+ {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/,
+ {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/,
+ {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/,
+ {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {},
+ {T_SHORT}/*new*/, {T_BYTE}/*newarray*/,
+ {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/,
+ {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/,
+ {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/,
+ {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/,
+ {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/,
+ {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {},
+ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
+ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
+ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
+ {}/*impdep1*/, {}/*impdep2*/
+ };
+
+ /**
+ * Names of opcodes.
+ */
+ public static final String[] OPCODE_NAMES = {
+ "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1",
+ "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0",
+ "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0",
+ "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload",
+ "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2",
+ "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0",
+ "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2",
+ "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload",
+ "laload", "faload", "daload", "aaload", "baload", "caload", "saload",
+ "istore", "lstore", "fstore", "dstore", "astore", "istore_0",
+ "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
+ "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2",
+ "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3",
+ "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore",
+ "fastore", "dastore", "aastore", "bastore", "castore", "sastore",
+ "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1",
+ "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub",
+ "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv",
+ "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg",
+ "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr",
+ "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f",
+ "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f",
+ "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg",
+ "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle",
+ "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt",
+ "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret",
+ "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn",
+ "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield",
+ "putfield", "invokevirtual", "invokespecial", "invokestatic",
+ "invokeinterface", ILLEGAL_OPCODE, "new", "newarray", "anewarray",
+ "arraylength", "athrow", "checkcast", "instanceof", "monitorenter",
+ "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull",
+ "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
+ ILLEGAL_OPCODE, "impdep1", "impdep2"
+ };
+
+ /**
+ * Number of words consumed on operand stack by instructions.
+ */
+ public static final int[] CONSUME_STACK = {
+ 0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/,
+ 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/,
+ 0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/,
+ 0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/,
+ 0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/,
+ 0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/,
+ 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/,
+ 0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/,
+ 2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/,
+ 1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/,
+ 1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/,
+ 2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/,
+ 1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/,
+ 1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/,
+ 3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/,
+ 1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/,
+ 4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/,
+ 2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/,
+ 2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/,
+ 1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/,
+ 2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/,
+ 1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/,
+ 1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/,
+ 4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/,
+ 1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/,
+ 2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/,
+ 0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/,
+ 2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/,
+ UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/,
+ UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/,
+ UNPREDICTABLE/*invokestatic*/,
+ UNPREDICTABLE/*invokeinterface*/, UNDEFINED, 0/*new*/, 1/*newarray*/, 1/*anewarray*/,
+ 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/,
+ 1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/,
+ 0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
+ };
+
+ /**
+ * Number of words produced onto operand stack by instructions.
+ */
+ public static final int[] PRODUCE_STACK = {
+ 0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/,
+ 1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/,
+ 2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/,
+ 2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/,
+ 2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/,
+ 1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/,
+ 1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/,
+ 2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/,
+ 2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/,
+ 0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/,
+ 0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/,
+ 0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
+ 0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/,
+ 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/,
+ 0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/,
+ 0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/,
+ 6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/,
+ 1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/,
+ 1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/,
+ 1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/,
+ 1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/,
+ 0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/,
+ 2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/,
+ 1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/,
+ 1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/,
+ 0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/,
+ 0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/,
+ 0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
+ 0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/,
+ UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/,
+ UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/,
+ UNPREDICTABLE/*invokeinterface*/, UNDEFINED, 1/*new*/, 1/*newarray*/, 1/*anewarray*/,
+ 1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/,
+ 0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/,
+ 0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
+ UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
+ };
+
+ /** Attributes and their corresponding names.
+ */
+ public static final byte ATTR_UNKNOWN = -1;
+ public static final byte ATTR_SOURCE_FILE = 0;
+ public static final byte ATTR_CONSTANT_VALUE = 1;
+ public static final byte ATTR_CODE = 2;
+ public static final byte ATTR_EXCEPTIONS = 3;
+ public static final byte ATTR_LINE_NUMBER_TABLE = 4;
+ public static final byte ATTR_LOCAL_VARIABLE_TABLE = 5;
+ public static final byte ATTR_INNER_CLASSES = 6;
+ public static final byte ATTR_SYNTHETIC = 7;
+ public static final byte ATTR_DEPRECATED = 8;
+ public static final byte ATTR_PMG = 9;
+ public static final byte ATTR_SIGNATURE = 10;
+ public static final byte ATTR_STACK_MAP = 11;
+ public static final byte ATTR_RUNTIMEVISIBLE_ANNOTATIONS = 12;
+ public static final byte ATTR_RUNTIMEINVISIBLE_ANNOTATIONS = 13;
+ public static final byte ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS = 14;
+ public static final byte ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS = 15;
+ public static final byte ATTR_ANNOTATION_DEFAULT = 16;
+
+ public static final short KNOWN_ATTRIBUTES = 12;//should be 17
+
+ public static final String[] ATTRIBUTE_NAMES = {
+ "SourceFile", "ConstantValue", "Code", "Exceptions",
+ "LineNumberTable", "LocalVariableTable",
+ "InnerClasses", "Synthetic", "Deprecated",
+ "PMGClass", "Signature", "StackMap",
+ "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
+ "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations",
+ "AnnotationDefault"
+ };
+
+ /** Constants used in the StackMap attribute.
+ */
+ public static final byte ITEM_Bogus = 0;
+ public static final byte ITEM_Integer = 1;
+ public static final byte ITEM_Float = 2;
+ public static final byte ITEM_Double = 3;
+ public static final byte ITEM_Long = 4;
+ public static final byte ITEM_Null = 5;
+ public static final byte ITEM_InitObject = 6;
+ public static final byte ITEM_Object = 7;
+ public static final byte ITEM_NewObject = 8;
+
+ public static final String[] ITEM_NAMES = {
+ "Bogus", "Integer", "Float", "Double", "Long",
+ "Null", "InitObject", "Object", "NewObject"
+ };
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/ExceptionConstants.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/ExceptionConstants.java
index e7a697c3..fc67d26d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/ExceptionConstants.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/ExceptionConstants.java
@@ -1,76 +1,76 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0;
-
-/**
- * Exception constants.
- *
- * @version $Id: ExceptionConstants.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author E. Haase
- */
-public interface ExceptionConstants {
-
- /** The mother of all exceptions
- */
- public static final Class THROWABLE = Throwable.class;
- /** Super class of any run-time exception
- */
- public static final Class RUNTIME_EXCEPTION = RuntimeException.class;
- /** Super class of any linking exception (aka Linkage Error)
- */
- public static final Class LINKING_EXCEPTION = LinkageError.class;
- /** Linking Exceptions
- */
- public static final Class CLASS_CIRCULARITY_ERROR = ClassCircularityError.class;
- public static final Class CLASS_FORMAT_ERROR = ClassFormatError.class;
- public static final Class EXCEPTION_IN_INITIALIZER_ERROR = ExceptionInInitializerError.class;
- public static final Class INCOMPATIBLE_CLASS_CHANGE_ERROR = IncompatibleClassChangeError.class;
- public static final Class ABSTRACT_METHOD_ERROR = AbstractMethodError.class;
- public static final Class ILLEGAL_ACCESS_ERROR = IllegalAccessError.class;
- public static final Class INSTANTIATION_ERROR = InstantiationError.class;
- public static final Class NO_SUCH_FIELD_ERROR = NoSuchFieldError.class;
- public static final Class NO_SUCH_METHOD_ERROR = NoSuchMethodError.class;
- public static final Class NO_CLASS_DEF_FOUND_ERROR = NoClassDefFoundError.class;
- public static final Class UNSATISFIED_LINK_ERROR = UnsatisfiedLinkError.class;
- public static final Class VERIFY_ERROR = VerifyError.class;
- /* UnsupportedClassVersionError is new in JDK 1.2 */
- //public static final Class UnsupportedClassVersionError = UnsupportedClassVersionError.class;
- /** Run-Time Exceptions
- */
- public static final Class NULL_POINTER_EXCEPTION = NullPointerException.class;
- public static final Class ARRAY_INDEX_OUT_OF_BOUNDS_EXCEPTION = ArrayIndexOutOfBoundsException.class;
- public static final Class ARITHMETIC_EXCEPTION = ArithmeticException.class;
- public static final Class NEGATIVE_ARRAY_SIZE_EXCEPTION = NegativeArraySizeException.class;
- public static final Class CLASS_CAST_EXCEPTION = ClassCastException.class;
- public static final Class ILLEGAL_MONITOR_STATE = IllegalMonitorStateException.class;
- /** Pre-defined exception arrays according to chapters 5.1-5.4 of the Java Virtual
- * Machine Specification
- */
- public static final Class[] EXCS_CLASS_AND_INTERFACE_RESOLUTION = {
- NO_CLASS_DEF_FOUND_ERROR, CLASS_FORMAT_ERROR, VERIFY_ERROR, ABSTRACT_METHOD_ERROR,
- EXCEPTION_IN_INITIALIZER_ERROR, ILLEGAL_ACCESS_ERROR
- }; // Chapter 5.1
- public static final Class[] EXCS_FIELD_AND_METHOD_RESOLUTION = {
- NO_SUCH_FIELD_ERROR, ILLEGAL_ACCESS_ERROR, NO_SUCH_METHOD_ERROR
- }; // Chapter 5.2
- public static final Class[] EXCS_INTERFACE_METHOD_RESOLUTION = new Class[0]; // Chapter 5.3 (as below)
- public static final Class[] EXCS_STRING_RESOLUTION = new Class[0];
- // Chapter 5.4 (no errors but the ones that _always_ could happen! How stupid.)
- public static final Class[] EXCS_ARRAY_EXCEPTION = {
- NULL_POINTER_EXCEPTION, ARRAY_INDEX_OUT_OF_BOUNDS_EXCEPTION
- };
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0;
+
+/**
+ * Exception constants.
+ *
+ * @version $Id: ExceptionConstants.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author E. Haase
+ */
+public interface ExceptionConstants {
+
+ /** The mother of all exceptions
+ */
+ public static final Class THROWABLE = Throwable.class;
+ /** Super class of any run-time exception
+ */
+ public static final Class RUNTIME_EXCEPTION = RuntimeException.class;
+ /** Super class of any linking exception (aka Linkage Error)
+ */
+ public static final Class LINKING_EXCEPTION = LinkageError.class;
+ /** Linking Exceptions
+ */
+ public static final Class CLASS_CIRCULARITY_ERROR = ClassCircularityError.class;
+ public static final Class CLASS_FORMAT_ERROR = ClassFormatError.class;
+ public static final Class EXCEPTION_IN_INITIALIZER_ERROR = ExceptionInInitializerError.class;
+ public static final Class INCOMPATIBLE_CLASS_CHANGE_ERROR = IncompatibleClassChangeError.class;
+ public static final Class ABSTRACT_METHOD_ERROR = AbstractMethodError.class;
+ public static final Class ILLEGAL_ACCESS_ERROR = IllegalAccessError.class;
+ public static final Class INSTANTIATION_ERROR = InstantiationError.class;
+ public static final Class NO_SUCH_FIELD_ERROR = NoSuchFieldError.class;
+ public static final Class NO_SUCH_METHOD_ERROR = NoSuchMethodError.class;
+ public static final Class NO_CLASS_DEF_FOUND_ERROR = NoClassDefFoundError.class;
+ public static final Class UNSATISFIED_LINK_ERROR = UnsatisfiedLinkError.class;
+ public static final Class VERIFY_ERROR = VerifyError.class;
+ /* UnsupportedClassVersionError is new in JDK 1.2 */
+ //public static final Class UnsupportedClassVersionError = UnsupportedClassVersionError.class;
+ /** Run-Time Exceptions
+ */
+ public static final Class NULL_POINTER_EXCEPTION = NullPointerException.class;
+ public static final Class ARRAY_INDEX_OUT_OF_BOUNDS_EXCEPTION = ArrayIndexOutOfBoundsException.class;
+ public static final Class ARITHMETIC_EXCEPTION = ArithmeticException.class;
+ public static final Class NEGATIVE_ARRAY_SIZE_EXCEPTION = NegativeArraySizeException.class;
+ public static final Class CLASS_CAST_EXCEPTION = ClassCastException.class;
+ public static final Class ILLEGAL_MONITOR_STATE = IllegalMonitorStateException.class;
+ /** Pre-defined exception arrays according to chapters 5.1-5.4 of the Java Virtual
+ * Machine Specification
+ */
+ public static final Class[] EXCS_CLASS_AND_INTERFACE_RESOLUTION = {
+ NO_CLASS_DEF_FOUND_ERROR, CLASS_FORMAT_ERROR, VERIFY_ERROR, ABSTRACT_METHOD_ERROR,
+ EXCEPTION_IN_INITIALIZER_ERROR, ILLEGAL_ACCESS_ERROR
+ }; // Chapter 5.1
+ public static final Class[] EXCS_FIELD_AND_METHOD_RESOLUTION = {
+ NO_SUCH_FIELD_ERROR, ILLEGAL_ACCESS_ERROR, NO_SUCH_METHOD_ERROR
+ }; // Chapter 5.2
+ public static final Class[] EXCS_INTERFACE_METHOD_RESOLUTION = new Class[0]; // Chapter 5.3 (as below)
+ public static final Class[] EXCS_STRING_RESOLUTION = new Class[0];
+ // Chapter 5.4 (no errors but the ones that _always_ could happen! How stupid.)
+ public static final Class[] EXCS_ARRAY_EXCEPTION = {
+ NULL_POINTER_EXCEPTION, ARRAY_INDEX_OUT_OF_BOUNDS_EXCEPTION
+ };
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Repository.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Repository.java
index dd024472..972db5dc 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Repository.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/Repository.java
@@ -1,262 +1,262 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0;
-
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.classfile.JavaClass;
-import org.apache.bcel5_2_0.util.ClassPath;
-import org.apache.bcel5_2_0.util.SyntheticRepository;
-
-/**
- * The repository maintains informations about class interdependencies, e.g.,
- * whether a class is a sub-class of another. Delegates actual class loading
- * to SyntheticRepository with current class path by default.
- *
- * @see org.apache.bcel5_2_0.util.Repository
- * @see org.apache.bcel5_2_0.util.SyntheticRepository
- *
- * @version $Id: Repository.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class Repository {
-
- private static org.apache.bcel5_2_0.util.Repository _repository = SyntheticRepository.getInstance();
-
-
- /** @return currently used repository instance
- */
- public static org.apache.bcel5_2_0.util.Repository getRepository() {
- return _repository;
- }
-
-
- /** Set repository instance to be used for class loading
- */
- public static void setRepository( org.apache.bcel5_2_0.util.Repository rep ) {
- _repository = rep;
- }
-
-
- /** Lookup class somewhere found on your CLASSPATH, or whereever the
- * repository instance looks for it.
- *
- * @return class object for given fully qualified class name
- * @throws ClassNotFoundException if the class could not be found or
- * parsed correctly
- */
- public static JavaClass lookupClass( String class_name ) throws ClassNotFoundException {
- return _repository.loadClass(class_name);
- }
-
-
- /**
- * Try to find class source using the internal repository instance.
- * @see Class
- * @return JavaClass object for given runtime class
- * @throws ClassNotFoundException if the class could not be found or
- * parsed correctly
- */
- public static JavaClass lookupClass( Class clazz ) throws ClassNotFoundException {
- return _repository.loadClass(clazz);
- }
-
-
- /**
- * @return class file object for given Java class by looking on the
- * system class path; returns null if the class file can't be
- * found
- */
- public static ClassPath.ClassFile lookupClassFile( String class_name ) {
- try {
- ClassPath path = _repository.getClassPath();
- if (path == null) {
- return null;
- }
- return path.getClassFile(class_name);
- } catch (IOException e) {
- return null;
- }
- }
-
-
- /** Clear the repository.
- */
- public static void clearCache() {
- _repository.clear();
- }
-
-
- /**
- * Add clazz to repository if there isn't an equally named class already in there.
- *
- * @return old entry in repository
- */
- public static JavaClass addClass( JavaClass clazz ) {
- JavaClass old = _repository.findClass(clazz.getClassName());
- _repository.storeClass(clazz);
- return old;
- }
-
-
- /**
- * Remove class with given (fully qualified) name from repository.
- */
- public static void removeClass( String clazz ) {
- _repository.removeClass(_repository.findClass(clazz));
- }
-
-
- /**
- * Remove given class from repository.
- */
- public static void removeClass( JavaClass clazz ) {
- _repository.removeClass(clazz);
- }
-
-
- /**
- * @return list of super classes of clazz in ascending order, i.e.,
- * Object is always the last element
- * @throws ClassNotFoundException if any of the superclasses can't be found
- */
- public static JavaClass[] getSuperClasses( JavaClass clazz ) throws ClassNotFoundException {
- return clazz.getSuperClasses();
- }
-
-
- /**
- * @return list of super classes of clazz in ascending order, i.e.,
- * Object is always the last element.
- * @throws ClassNotFoundException if the named class or any of its
- * superclasses can't be found
- */
- public static JavaClass[] getSuperClasses( String class_name ) throws ClassNotFoundException {
- JavaClass jc = lookupClass(class_name);
- return getSuperClasses(jc);
- }
-
-
- /**
- * @return all interfaces implemented by class and its super
- * classes and the interfaces that those interfaces extend, and so on.
- * (Some people call this a transitive hull).
- * @throws ClassNotFoundException if any of the class's
- * superclasses or superinterfaces can't be found
- */
- public static JavaClass[] getInterfaces( JavaClass clazz ) throws ClassNotFoundException {
- return clazz.getAllInterfaces();
- }
-
-
- /**
- * @return all interfaces implemented by class and its super
- * classes and the interfaces that extend those interfaces, and so on
- * @throws ClassNotFoundException if the named class can't be found,
- * or if any of its superclasses or superinterfaces can't be found
- */
- public static JavaClass[] getInterfaces( String class_name ) throws ClassNotFoundException {
- return getInterfaces(lookupClass(class_name));
- }
-
-
- /**
- * Equivalent to runtime "instanceof" operator.
- * @return true, if clazz is an instance of super_class
- * @throws ClassNotFoundException if any superclasses or superinterfaces
- * of clazz can't be found
- */
- public static boolean instanceOf( JavaClass clazz, JavaClass super_class )
- throws ClassNotFoundException {
- return clazz.instanceOf(super_class);
- }
-
-
- /**
- * @return true, if clazz is an instance of super_class
- * @throws ClassNotFoundException if either clazz or super_class
- * can't be found
- */
- public static boolean instanceOf( String clazz, String super_class )
- throws ClassNotFoundException {
- return instanceOf(lookupClass(clazz), lookupClass(super_class));
- }
-
-
- /**
- * @return true, if clazz is an instance of super_class
- * @throws ClassNotFoundException if super_class can't be found
- */
- public static boolean instanceOf( JavaClass clazz, String super_class )
- throws ClassNotFoundException {
- return instanceOf(clazz, lookupClass(super_class));
- }
-
-
- /**
- * @return true, if clazz is an instance of super_class
- * @throws ClassNotFoundException if clazz can't be found
- */
- public static boolean instanceOf( String clazz, JavaClass super_class )
- throws ClassNotFoundException {
- return instanceOf(lookupClass(clazz), super_class);
- }
-
-
- /**
- * @return true, if clazz is an implementation of interface inter
- * @throws ClassNotFoundException if any superclasses or superinterfaces
- * of clazz can't be found
- */
- public static boolean implementationOf( JavaClass clazz, JavaClass inter )
- throws ClassNotFoundException {
- return clazz.implementationOf(inter);
- }
-
-
- /**
- * @return true, if clazz is an implementation of interface inter
- * @throws ClassNotFoundException if clazz, inter, or any superclasses
- * or superinterfaces of clazz can't be found
- */
- public static boolean implementationOf( String clazz, String inter )
- throws ClassNotFoundException {
- return implementationOf(lookupClass(clazz), lookupClass(inter));
- }
-
-
- /**
- * @return true, if clazz is an implementation of interface inter
- * @throws ClassNotFoundException if inter or any superclasses
- * or superinterfaces of clazz can't be found
- */
- public static boolean implementationOf( JavaClass clazz, String inter )
- throws ClassNotFoundException {
- return implementationOf(clazz, lookupClass(inter));
- }
-
-
- /**
- * @return true, if clazz is an implementation of interface inter
- * @throws ClassNotFoundException if clazz or any superclasses or
- * superinterfaces of clazz can't be found
- */
- public static boolean implementationOf( String clazz, JavaClass inter )
- throws ClassNotFoundException {
- return implementationOf(lookupClass(clazz), inter);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0;
+
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.classfile.JavaClass;
+import org.apache.bcel5_2_0.util.ClassPath;
+import org.apache.bcel5_2_0.util.SyntheticRepository;
+
+/**
+ * The repository maintains informations about class interdependencies, e.g.,
+ * whether a class is a sub-class of another. Delegates actual class loading
+ * to SyntheticRepository with current class path by default.
+ *
+ * @see org.apache.bcel5_2_0.util.Repository
+ * @see org.apache.bcel5_2_0.util.SyntheticRepository
+ *
+ * @version $Id: Repository.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class Repository {
+
+ private static org.apache.bcel5_2_0.util.Repository _repository = SyntheticRepository.getInstance();
+
+
+ /** @return currently used repository instance
+ */
+ public static org.apache.bcel5_2_0.util.Repository getRepository() {
+ return _repository;
+ }
+
+
+ /** Set repository instance to be used for class loading
+ */
+ public static void setRepository( org.apache.bcel5_2_0.util.Repository rep ) {
+ _repository = rep;
+ }
+
+
+ /** Lookup class somewhere found on your CLASSPATH, or whereever the
+ * repository instance looks for it.
+ *
+ * @return class object for given fully qualified class name
+ * @throws ClassNotFoundException if the class could not be found or
+ * parsed correctly
+ */
+ public static JavaClass lookupClass( String class_name ) throws ClassNotFoundException {
+ return _repository.loadClass(class_name);
+ }
+
+
+ /**
+ * Try to find class source using the internal repository instance.
+ * @see Class
+ * @return JavaClass object for given runtime class
+ * @throws ClassNotFoundException if the class could not be found or
+ * parsed correctly
+ */
+ public static JavaClass lookupClass( Class clazz ) throws ClassNotFoundException {
+ return _repository.loadClass(clazz);
+ }
+
+
+ /**
+ * @return class file object for given Java class by looking on the
+ * system class path; returns null if the class file can't be
+ * found
+ */
+ public static ClassPath.ClassFile lookupClassFile( String class_name ) {
+ try {
+ ClassPath path = _repository.getClassPath();
+ if (path == null) {
+ return null;
+ }
+ return path.getClassFile(class_name);
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+
+ /** Clear the repository.
+ */
+ public static void clearCache() {
+ _repository.clear();
+ }
+
+
+ /**
+ * Add clazz to repository if there isn't an equally named class already in there.
+ *
+ * @return old entry in repository
+ */
+ public static JavaClass addClass( JavaClass clazz ) {
+ JavaClass old = _repository.findClass(clazz.getClassName());
+ _repository.storeClass(clazz);
+ return old;
+ }
+
+
+ /**
+ * Remove class with given (fully qualified) name from repository.
+ */
+ public static void removeClass( String clazz ) {
+ _repository.removeClass(_repository.findClass(clazz));
+ }
+
+
+ /**
+ * Remove given class from repository.
+ */
+ public static void removeClass( JavaClass clazz ) {
+ _repository.removeClass(clazz);
+ }
+
+
+ /**
+ * @return list of super classes of clazz in ascending order, i.e.,
+ * Object is always the last element
+ * @throws ClassNotFoundException if any of the superclasses can't be found
+ */
+ public static JavaClass[] getSuperClasses( JavaClass clazz ) throws ClassNotFoundException {
+ return clazz.getSuperClasses();
+ }
+
+
+ /**
+ * @return list of super classes of clazz in ascending order, i.e.,
+ * Object is always the last element.
+ * @throws ClassNotFoundException if the named class or any of its
+ * superclasses can't be found
+ */
+ public static JavaClass[] getSuperClasses( String class_name ) throws ClassNotFoundException {
+ JavaClass jc = lookupClass(class_name);
+ return getSuperClasses(jc);
+ }
+
+
+ /**
+ * @return all interfaces implemented by class and its super
+ * classes and the interfaces that those interfaces extend, and so on.
+ * (Some people call this a transitive hull).
+ * @throws ClassNotFoundException if any of the class's
+ * superclasses or superinterfaces can't be found
+ */
+ public static JavaClass[] getInterfaces( JavaClass clazz ) throws ClassNotFoundException {
+ return clazz.getAllInterfaces();
+ }
+
+
+ /**
+ * @return all interfaces implemented by class and its super
+ * classes and the interfaces that extend those interfaces, and so on
+ * @throws ClassNotFoundException if the named class can't be found,
+ * or if any of its superclasses or superinterfaces can't be found
+ */
+ public static JavaClass[] getInterfaces( String class_name ) throws ClassNotFoundException {
+ return getInterfaces(lookupClass(class_name));
+ }
+
+
+ /**
+ * Equivalent to runtime "instanceof" operator.
+ * @return true, if clazz is an instance of super_class
+ * @throws ClassNotFoundException if any superclasses or superinterfaces
+ * of clazz can't be found
+ */
+ public static boolean instanceOf( JavaClass clazz, JavaClass super_class )
+ throws ClassNotFoundException {
+ return clazz.instanceOf(super_class);
+ }
+
+
+ /**
+ * @return true, if clazz is an instance of super_class
+ * @throws ClassNotFoundException if either clazz or super_class
+ * can't be found
+ */
+ public static boolean instanceOf( String clazz, String super_class )
+ throws ClassNotFoundException {
+ return instanceOf(lookupClass(clazz), lookupClass(super_class));
+ }
+
+
+ /**
+ * @return true, if clazz is an instance of super_class
+ * @throws ClassNotFoundException if super_class can't be found
+ */
+ public static boolean instanceOf( JavaClass clazz, String super_class )
+ throws ClassNotFoundException {
+ return instanceOf(clazz, lookupClass(super_class));
+ }
+
+
+ /**
+ * @return true, if clazz is an instance of super_class
+ * @throws ClassNotFoundException if clazz can't be found
+ */
+ public static boolean instanceOf( String clazz, JavaClass super_class )
+ throws ClassNotFoundException {
+ return instanceOf(lookupClass(clazz), super_class);
+ }
+
+
+ /**
+ * @return true, if clazz is an implementation of interface inter
+ * @throws ClassNotFoundException if any superclasses or superinterfaces
+ * of clazz can't be found
+ */
+ public static boolean implementationOf( JavaClass clazz, JavaClass inter )
+ throws ClassNotFoundException {
+ return clazz.implementationOf(inter);
+ }
+
+
+ /**
+ * @return true, if clazz is an implementation of interface inter
+ * @throws ClassNotFoundException if clazz, inter, or any superclasses
+ * or superinterfaces of clazz can't be found
+ */
+ public static boolean implementationOf( String clazz, String inter )
+ throws ClassNotFoundException {
+ return implementationOf(lookupClass(clazz), lookupClass(inter));
+ }
+
+
+ /**
+ * @return true, if clazz is an implementation of interface inter
+ * @throws ClassNotFoundException if inter or any superclasses
+ * or superinterfaces of clazz can't be found
+ */
+ public static boolean implementationOf( JavaClass clazz, String inter )
+ throws ClassNotFoundException {
+ return implementationOf(clazz, lookupClass(inter));
+ }
+
+
+ /**
+ * @return true, if clazz is an implementation of interface inter
+ * @throws ClassNotFoundException if clazz or any superclasses or
+ * superinterfaces of clazz can't be found
+ */
+ public static boolean implementationOf( String clazz, JavaClass inter )
+ throws ClassNotFoundException {
+ return implementationOf(lookupClass(clazz), inter);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AccessFlags.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AccessFlags.java
index e903ea4a..aee9ea3f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AccessFlags.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AccessFlags.java
@@ -1,238 +1,238 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Super class for all objects that have modifiers like private, final, ...
- * I.e. classes, fields, and methods.
- *
- * @version $Id: AccessFlags.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class AccessFlags implements java.io.Serializable {
-
- protected int access_flags;
-
-
- public AccessFlags() {
- }
-
-
- /**
- * @param a inital access flags
- */
- public AccessFlags(int a) {
- access_flags = a;
- }
-
-
- /**
- * @return Access flags of the object aka. "modifiers".
- */
- public final int getAccessFlags() {
- return access_flags;
- }
-
-
- /**
- * @return Access flags of the object aka. "modifiers".
- */
- public final int getModifiers() {
- return access_flags;
- }
-
-
- /** Set access flags aka "modifiers".
- * @param access_flags Access flags of the object.
- */
- public final void setAccessFlags( int access_flags ) {
- this.access_flags = access_flags;
- }
-
-
- /** Set access flags aka "modifiers".
- * @param access_flags Access flags of the object.
- */
- public final void setModifiers( int access_flags ) {
- setAccessFlags(access_flags);
- }
-
-
- private final void setFlag( int flag, boolean set ) {
- if ((access_flags & flag) != 0) { // Flag is set already
- if (!set) {
- access_flags ^= flag;
- }
- } else { // Flag not set
- if (set) {
- access_flags |= flag;
- }
- }
- }
-
-
- public final void isPublic( boolean flag ) {
- setFlag(Constants.ACC_PUBLIC, flag);
- }
-
-
- public final boolean isPublic() {
- return (access_flags & Constants.ACC_PUBLIC) != 0;
- }
-
-
- public final void isPrivate( boolean flag ) {
- setFlag(Constants.ACC_PRIVATE, flag);
- }
-
-
- public final boolean isPrivate() {
- return (access_flags & Constants.ACC_PRIVATE) != 0;
- }
-
-
- public final void isProtected( boolean flag ) {
- setFlag(Constants.ACC_PROTECTED, flag);
- }
-
-
- public final boolean isProtected() {
- return (access_flags & Constants.ACC_PROTECTED) != 0;
- }
-
-
- public final void isStatic( boolean flag ) {
- setFlag(Constants.ACC_STATIC, flag);
- }
-
-
- public final boolean isStatic() {
- return (access_flags & Constants.ACC_STATIC) != 0;
- }
-
-
- public final void isFinal( boolean flag ) {
- setFlag(Constants.ACC_FINAL, flag);
- }
-
-
- public final boolean isFinal() {
- return (access_flags & Constants.ACC_FINAL) != 0;
- }
-
-
- public final void isSynchronized( boolean flag ) {
- setFlag(Constants.ACC_SYNCHRONIZED, flag);
- }
-
-
- public final boolean isSynchronized() {
- return (access_flags & Constants.ACC_SYNCHRONIZED) != 0;
- }
-
-
- public final void isVolatile( boolean flag ) {
- setFlag(Constants.ACC_VOLATILE, flag);
- }
-
-
- public final boolean isVolatile() {
- return (access_flags & Constants.ACC_VOLATILE) != 0;
- }
-
-
- public final void isTransient( boolean flag ) {
- setFlag(Constants.ACC_TRANSIENT, flag);
- }
-
-
- public final boolean isTransient() {
- return (access_flags & Constants.ACC_TRANSIENT) != 0;
- }
-
-
- public final void isNative( boolean flag ) {
- setFlag(Constants.ACC_NATIVE, flag);
- }
-
-
- public final boolean isNative() {
- return (access_flags & Constants.ACC_NATIVE) != 0;
- }
-
-
- public final void isInterface( boolean flag ) {
- setFlag(Constants.ACC_INTERFACE, flag);
- }
-
-
- public final boolean isInterface() {
- return (access_flags & Constants.ACC_INTERFACE) != 0;
- }
-
-
- public final void isAbstract( boolean flag ) {
- setFlag(Constants.ACC_ABSTRACT, flag);
- }
-
-
- public final boolean isAbstract() {
- return (access_flags & Constants.ACC_ABSTRACT) != 0;
- }
-
-
- public final void isStrictfp( boolean flag ) {
- setFlag(Constants.ACC_STRICT, flag);
- }
-
-
- public final boolean isStrictfp() {
- return (access_flags & Constants.ACC_STRICT) != 0;
- }
-
-
- public final void isSynthetic( boolean flag ) {
- setFlag(Constants.ACC_SYNTHETIC, flag);
- }
-
-
- public final boolean isSynthetic() {
- return (access_flags & Constants.ACC_SYNTHETIC) != 0;
- }
-
-
- public final void isAnnotation( boolean flag ) {
- setFlag(Constants.ACC_ANNOTATION, flag);
- }
-
-
- public final boolean isAnnotation() {
- return (access_flags & Constants.ACC_ANNOTATION) != 0;
- }
-
-
- public final void isEnum( boolean flag ) {
- setFlag(Constants.ACC_ENUM, flag);
- }
-
-
- public final boolean isEnum() {
- return (access_flags & Constants.ACC_ENUM) != 0;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Super class for all objects that have modifiers like private, final, ...
+ * I.e. classes, fields, and methods.
+ *
+ * @version $Id: AccessFlags.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class AccessFlags implements java.io.Serializable {
+
+ protected int access_flags;
+
+
+ public AccessFlags() {
+ }
+
+
+ /**
+ * @param a inital access flags
+ */
+ public AccessFlags(int a) {
+ access_flags = a;
+ }
+
+
+ /**
+ * @return Access flags of the object aka. "modifiers".
+ */
+ public final int getAccessFlags() {
+ return access_flags;
+ }
+
+
+ /**
+ * @return Access flags of the object aka. "modifiers".
+ */
+ public final int getModifiers() {
+ return access_flags;
+ }
+
+
+ /** Set access flags aka "modifiers".
+ * @param access_flags Access flags of the object.
+ */
+ public final void setAccessFlags( int access_flags ) {
+ this.access_flags = access_flags;
+ }
+
+
+ /** Set access flags aka "modifiers".
+ * @param access_flags Access flags of the object.
+ */
+ public final void setModifiers( int access_flags ) {
+ setAccessFlags(access_flags);
+ }
+
+
+ private final void setFlag( int flag, boolean set ) {
+ if ((access_flags & flag) != 0) { // Flag is set already
+ if (!set) {
+ access_flags ^= flag;
+ }
+ } else { // Flag not set
+ if (set) {
+ access_flags |= flag;
+ }
+ }
+ }
+
+
+ public final void isPublic( boolean flag ) {
+ setFlag(Constants.ACC_PUBLIC, flag);
+ }
+
+
+ public final boolean isPublic() {
+ return (access_flags & Constants.ACC_PUBLIC) != 0;
+ }
+
+
+ public final void isPrivate( boolean flag ) {
+ setFlag(Constants.ACC_PRIVATE, flag);
+ }
+
+
+ public final boolean isPrivate() {
+ return (access_flags & Constants.ACC_PRIVATE) != 0;
+ }
+
+
+ public final void isProtected( boolean flag ) {
+ setFlag(Constants.ACC_PROTECTED, flag);
+ }
+
+
+ public final boolean isProtected() {
+ return (access_flags & Constants.ACC_PROTECTED) != 0;
+ }
+
+
+ public final void isStatic( boolean flag ) {
+ setFlag(Constants.ACC_STATIC, flag);
+ }
+
+
+ public final boolean isStatic() {
+ return (access_flags & Constants.ACC_STATIC) != 0;
+ }
+
+
+ public final void isFinal( boolean flag ) {
+ setFlag(Constants.ACC_FINAL, flag);
+ }
+
+
+ public final boolean isFinal() {
+ return (access_flags & Constants.ACC_FINAL) != 0;
+ }
+
+
+ public final void isSynchronized( boolean flag ) {
+ setFlag(Constants.ACC_SYNCHRONIZED, flag);
+ }
+
+
+ public final boolean isSynchronized() {
+ return (access_flags & Constants.ACC_SYNCHRONIZED) != 0;
+ }
+
+
+ public final void isVolatile( boolean flag ) {
+ setFlag(Constants.ACC_VOLATILE, flag);
+ }
+
+
+ public final boolean isVolatile() {
+ return (access_flags & Constants.ACC_VOLATILE) != 0;
+ }
+
+
+ public final void isTransient( boolean flag ) {
+ setFlag(Constants.ACC_TRANSIENT, flag);
+ }
+
+
+ public final boolean isTransient() {
+ return (access_flags & Constants.ACC_TRANSIENT) != 0;
+ }
+
+
+ public final void isNative( boolean flag ) {
+ setFlag(Constants.ACC_NATIVE, flag);
+ }
+
+
+ public final boolean isNative() {
+ return (access_flags & Constants.ACC_NATIVE) != 0;
+ }
+
+
+ public final void isInterface( boolean flag ) {
+ setFlag(Constants.ACC_INTERFACE, flag);
+ }
+
+
+ public final boolean isInterface() {
+ return (access_flags & Constants.ACC_INTERFACE) != 0;
+ }
+
+
+ public final void isAbstract( boolean flag ) {
+ setFlag(Constants.ACC_ABSTRACT, flag);
+ }
+
+
+ public final boolean isAbstract() {
+ return (access_flags & Constants.ACC_ABSTRACT) != 0;
+ }
+
+
+ public final void isStrictfp( boolean flag ) {
+ setFlag(Constants.ACC_STRICT, flag);
+ }
+
+
+ public final boolean isStrictfp() {
+ return (access_flags & Constants.ACC_STRICT) != 0;
+ }
+
+
+ public final void isSynthetic( boolean flag ) {
+ setFlag(Constants.ACC_SYNTHETIC, flag);
+ }
+
+
+ public final boolean isSynthetic() {
+ return (access_flags & Constants.ACC_SYNTHETIC) != 0;
+ }
+
+
+ public final void isAnnotation( boolean flag ) {
+ setFlag(Constants.ACC_ANNOTATION, flag);
+ }
+
+
+ public final boolean isAnnotation() {
+ return (access_flags & Constants.ACC_ANNOTATION) != 0;
+ }
+
+
+ public final void isEnum( boolean flag ) {
+ setFlag(Constants.ACC_ENUM, flag);
+ }
+
+
+ public final boolean isEnum() {
+ return (access_flags & Constants.ACC_ENUM) != 0;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Attribute.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Attribute.java
index ea450115..55ec41cd 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Attribute.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Attribute.java
@@ -1,279 +1,279 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Abstract super class for Attribute objects. Currently the
- * ConstantValue, SourceFile, Code,
- * Exceptiontable, LineNumberTable,
- * LocalVariableTable, InnerClasses and
- * Synthetic attributes are supported. The
- * Unknown attribute stands for non-standard-attributes.
- *
- * @version $Id: Attribute.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see ConstantValue
- * @see SourceFile
- * @see Code
- * @see Unknown
- * @see ExceptionTable
- * @see LineNumberTable
- * @see LocalVariableTable
- * @see InnerClasses
- * @see Synthetic
- * @see Deprecated
- * @see Signature
- */
-public abstract class Attribute implements Cloneable, Node, Serializable {
-
- protected int name_index; // Points to attribute name in constant pool
- protected int length; // Content length of attribute field
- protected byte tag; // Tag to distiguish subclasses
- protected ConstantPool constant_pool;
-
-
- protected Attribute(byte tag, int name_index, int length, ConstantPool constant_pool) {
- this.tag = tag;
- this.name_index = name_index;
- this.length = length;
- this.constant_pool = constant_pool;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public abstract void accept( Visitor v );
-
-
- /**
- * Dump attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public void dump( DataOutputStream file ) throws IOException {
- file.writeShort(name_index);
- file.writeInt(length);
- }
-
- private static Map readers = new HashMap();
-
-
- /** Add an Attribute reader capable of parsing (user-defined) attributes
- * named "name". You should not add readers for the standard attributes
- * such as "LineNumberTable", because those are handled internally.
- *
- * @param name the name of the attribute as stored in the class file
- * @param r the reader object
- */
- public static void addAttributeReader( String name, AttributeReader r ) {
- readers.put(name, r);
- }
-
-
- /** Remove attribute reader
- *
- * @param name the name of the attribute as stored in the class file
- */
- public static void removeAttributeReader( String name ) {
- readers.remove(name);
- }
-
-
- /* Class method reads one attribute from the input data stream.
- * This method must not be accessible from the outside. It is
- * called by the Field and Method constructor methods.
- *
- * @see Field
- * @see Method
- * @param file Input stream
- * @param constant_pool Array of constants
- * @return Attribute
- * @throws IOException
- * @throws ClassFormatException
- */
- public static final Attribute readAttribute( DataInputStream file, ConstantPool constant_pool )
- throws IOException, ClassFormatException {
- ConstantUtf8 c;
- String name;
- int name_index;
- int length;
- byte tag = Constants.ATTR_UNKNOWN; // Unknown attribute
- // Get class name from constant pool via `name_index' indirection
- name_index = file.readUnsignedShort();
- c = (ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8);
- name = c.getBytes();
- // Length of data in bytes
- length = file.readInt();
- // Compare strings to find known attribute
- for (byte i = 0; i < Constants.KNOWN_ATTRIBUTES; i++) {
- if (name.equals(Constants.ATTRIBUTE_NAMES[i])) {
- tag = i; // found!
- break;
- }
- }
- // Call proper constructor, depending on `tag'
- switch (tag) {
- case Constants.ATTR_UNKNOWN:
- AttributeReader r = (AttributeReader) readers.get(name);
- if (r != null) {
- return r.createAttribute(name_index, length, file, constant_pool);
- }
- return new Unknown(name_index, length, file, constant_pool);
- case Constants.ATTR_CONSTANT_VALUE:
- return new ConstantValue(name_index, length, file, constant_pool);
- case Constants.ATTR_SOURCE_FILE:
- return new SourceFile(name_index, length, file, constant_pool);
- case Constants.ATTR_CODE:
- return new Code(name_index, length, file, constant_pool);
- case Constants.ATTR_EXCEPTIONS:
- return new ExceptionTable(name_index, length, file, constant_pool);
- case Constants.ATTR_LINE_NUMBER_TABLE:
- return new LineNumberTable(name_index, length, file, constant_pool);
- case Constants.ATTR_LOCAL_VARIABLE_TABLE:
- return new LocalVariableTable(name_index, length, file, constant_pool);
- case Constants.ATTR_INNER_CLASSES:
- return new InnerClasses(name_index, length, file, constant_pool);
- case Constants.ATTR_SYNTHETIC:
- return new Synthetic(name_index, length, file, constant_pool);
- case Constants.ATTR_DEPRECATED:
- return new Deprecated(name_index, length, file, constant_pool);
- case Constants.ATTR_PMG:
- return new PMGClass(name_index, length, file, constant_pool);
- case Constants.ATTR_SIGNATURE:
- return new Signature(name_index, length, file, constant_pool);
- case Constants.ATTR_STACK_MAP:
- return new StackMap(name_index, length, file, constant_pool);
- // case Constants.ATTR_RUNTIMEVISIBLE_ANNOTATIONS:
- // return new RuntimeVisibleAnnotations(name_index, length, file, constant_pool);
- // case Constants.ATTR_RUNTIMEINVISIBLE_ANNOTATIONS:
- // return new RuntimeInvisibleAnnotations(name_index, length, file, constant_pool);
- // case Constants.ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS:
- // return new RuntimeVisibleParameterAnnotations(name_index, length, file, constant_pool);
- // case Constants.ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS:
- // return new RuntimeInvisibleParameterAnnotations(name_index, length, file, constant_pool);
- // case Constants.ATTR_ANNOTATION_DEFAULT:
- // return new AnnotationDefault(name_index, length, file, constant_pool);
- default: // Never reached
- throw new IllegalStateException("Ooops! default case reached.");
- }
- }
-
-
- /**
- * @return Length of attribute field in bytes.
- */
- public final int getLength() {
- return length;
- }
-
-
- /**
- * @param length length in bytes.
- */
- public final void setLength( int length ) {
- this.length = length;
- }
-
-
- /**
- * @param name_index of attribute.
- */
- public final void setNameIndex( int name_index ) {
- this.name_index = name_index;
- }
-
-
- /**
- * @return Name index in constant pool of attribute name.
- */
- public final int getNameIndex() {
- return name_index;
- }
-
-
- /**
- * @return Tag of attribute, i.e., its type. Value may not be altered, thus
- * there is no setTag() method.
- */
- public final byte getTag() {
- return tag;
- }
-
-
- /**
- * @return Constant pool used by this object.
- * @see ConstantPool
- */
- public final ConstantPool getConstantPool() {
- return constant_pool;
- }
-
-
- /**
- * @param constant_pool Constant pool to be used for this object.
- * @see ConstantPool
- */
- public final void setConstantPool( ConstantPool constant_pool ) {
- this.constant_pool = constant_pool;
- }
-
-
- /**
- * Use copy() if you want to have a deep copy(), i.e., with all references
- * copied correctly.
- *
- * @return shallow copy of this attribute
- */
- public Object clone() {
- Object o = null;
- try {
- o = super.clone();
- } catch (CloneNotSupportedException e) {
- e.printStackTrace(); // Never occurs
- }
- return o;
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public abstract Attribute copy( ConstantPool _constant_pool );
-
-
- /**
- * @return attribute name.
- */
- public String toString() {
- return Constants.ATTRIBUTE_NAMES[tag];
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Abstract super class for Attribute objects. Currently the
+ * ConstantValue, SourceFile, Code,
+ * Exceptiontable, LineNumberTable,
+ * LocalVariableTable, InnerClasses and
+ * Synthetic attributes are supported. The
+ * Unknown attribute stands for non-standard-attributes.
+ *
+ * @version $Id: Attribute.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see ConstantValue
+ * @see SourceFile
+ * @see Code
+ * @see Unknown
+ * @see ExceptionTable
+ * @see LineNumberTable
+ * @see LocalVariableTable
+ * @see InnerClasses
+ * @see Synthetic
+ * @see Deprecated
+ * @see Signature
+ */
+public abstract class Attribute implements Cloneable, Node, Serializable {
+
+ protected int name_index; // Points to attribute name in constant pool
+ protected int length; // Content length of attribute field
+ protected byte tag; // Tag to distiguish subclasses
+ protected ConstantPool constant_pool;
+
+
+ protected Attribute(byte tag, int name_index, int length, ConstantPool constant_pool) {
+ this.tag = tag;
+ this.name_index = name_index;
+ this.length = length;
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public abstract void accept( Visitor v );
+
+
+ /**
+ * Dump attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(name_index);
+ file.writeInt(length);
+ }
+
+ private static Map readers = new HashMap();
+
+
+ /** Add an Attribute reader capable of parsing (user-defined) attributes
+ * named "name". You should not add readers for the standard attributes
+ * such as "LineNumberTable", because those are handled internally.
+ *
+ * @param name the name of the attribute as stored in the class file
+ * @param r the reader object
+ */
+ public static void addAttributeReader( String name, AttributeReader r ) {
+ readers.put(name, r);
+ }
+
+
+ /** Remove attribute reader
+ *
+ * @param name the name of the attribute as stored in the class file
+ */
+ public static void removeAttributeReader( String name ) {
+ readers.remove(name);
+ }
+
+
+ /* Class method reads one attribute from the input data stream.
+ * This method must not be accessible from the outside. It is
+ * called by the Field and Method constructor methods.
+ *
+ * @see Field
+ * @see Method
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @return Attribute
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ public static final Attribute readAttribute( DataInputStream file, ConstantPool constant_pool )
+ throws IOException, ClassFormatException {
+ ConstantUtf8 c;
+ String name;
+ int name_index;
+ int length;
+ byte tag = Constants.ATTR_UNKNOWN; // Unknown attribute
+ // Get class name from constant pool via `name_index' indirection
+ name_index = file.readUnsignedShort();
+ c = (ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8);
+ name = c.getBytes();
+ // Length of data in bytes
+ length = file.readInt();
+ // Compare strings to find known attribute
+ for (byte i = 0; i < Constants.KNOWN_ATTRIBUTES; i++) {
+ if (name.equals(Constants.ATTRIBUTE_NAMES[i])) {
+ tag = i; // found!
+ break;
+ }
+ }
+ // Call proper constructor, depending on `tag'
+ switch (tag) {
+ case Constants.ATTR_UNKNOWN:
+ AttributeReader r = (AttributeReader) readers.get(name);
+ if (r != null) {
+ return r.createAttribute(name_index, length, file, constant_pool);
+ }
+ return new Unknown(name_index, length, file, constant_pool);
+ case Constants.ATTR_CONSTANT_VALUE:
+ return new ConstantValue(name_index, length, file, constant_pool);
+ case Constants.ATTR_SOURCE_FILE:
+ return new SourceFile(name_index, length, file, constant_pool);
+ case Constants.ATTR_CODE:
+ return new Code(name_index, length, file, constant_pool);
+ case Constants.ATTR_EXCEPTIONS:
+ return new ExceptionTable(name_index, length, file, constant_pool);
+ case Constants.ATTR_LINE_NUMBER_TABLE:
+ return new LineNumberTable(name_index, length, file, constant_pool);
+ case Constants.ATTR_LOCAL_VARIABLE_TABLE:
+ return new LocalVariableTable(name_index, length, file, constant_pool);
+ case Constants.ATTR_INNER_CLASSES:
+ return new InnerClasses(name_index, length, file, constant_pool);
+ case Constants.ATTR_SYNTHETIC:
+ return new Synthetic(name_index, length, file, constant_pool);
+ case Constants.ATTR_DEPRECATED:
+ return new Deprecated(name_index, length, file, constant_pool);
+ case Constants.ATTR_PMG:
+ return new PMGClass(name_index, length, file, constant_pool);
+ case Constants.ATTR_SIGNATURE:
+ return new Signature(name_index, length, file, constant_pool);
+ case Constants.ATTR_STACK_MAP:
+ return new StackMap(name_index, length, file, constant_pool);
+ // case Constants.ATTR_RUNTIMEVISIBLE_ANNOTATIONS:
+ // return new RuntimeVisibleAnnotations(name_index, length, file, constant_pool);
+ // case Constants.ATTR_RUNTIMEINVISIBLE_ANNOTATIONS:
+ // return new RuntimeInvisibleAnnotations(name_index, length, file, constant_pool);
+ // case Constants.ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS:
+ // return new RuntimeVisibleParameterAnnotations(name_index, length, file, constant_pool);
+ // case Constants.ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS:
+ // return new RuntimeInvisibleParameterAnnotations(name_index, length, file, constant_pool);
+ // case Constants.ATTR_ANNOTATION_DEFAULT:
+ // return new AnnotationDefault(name_index, length, file, constant_pool);
+ default: // Never reached
+ throw new IllegalStateException("Ooops! default case reached.");
+ }
+ }
+
+
+ /**
+ * @return Length of attribute field in bytes.
+ */
+ public final int getLength() {
+ return length;
+ }
+
+
+ /**
+ * @param length length in bytes.
+ */
+ public final void setLength( int length ) {
+ this.length = length;
+ }
+
+
+ /**
+ * @param name_index of attribute.
+ */
+ public final void setNameIndex( int name_index ) {
+ this.name_index = name_index;
+ }
+
+
+ /**
+ * @return Name index in constant pool of attribute name.
+ */
+ public final int getNameIndex() {
+ return name_index;
+ }
+
+
+ /**
+ * @return Tag of attribute, i.e., its type. Value may not be altered, thus
+ * there is no setTag() method.
+ */
+ public final byte getTag() {
+ return tag;
+ }
+
+
+ /**
+ * @return Constant pool used by this object.
+ * @see ConstantPool
+ */
+ public final ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @param constant_pool Constant pool to be used for this object.
+ * @see ConstantPool
+ */
+ public final void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * Use copy() if you want to have a deep copy(), i.e., with all references
+ * copied correctly.
+ *
+ * @return shallow copy of this attribute
+ */
+ public Object clone() {
+ Object o = null;
+ try {
+ o = super.clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace(); // Never occurs
+ }
+ return o;
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public abstract Attribute copy( ConstantPool _constant_pool );
+
+
+ /**
+ * @return attribute name.
+ */
+ public String toString() {
+ return Constants.ATTRIBUTE_NAMES[tag];
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AttributeReader.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AttributeReader.java
index 2e10b295..27942fc0 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AttributeReader.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/AttributeReader.java
@@ -1,58 +1,58 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-/**
- * Unknown (non-standard) attributes may be read via user-defined factory
- * objects that can be registered with the Attribute.addAttributeReader
- * method. These factory objects should implement this interface.
-
- * @see Attribute
- * @version $Id: AttributeReader.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface AttributeReader {
-
- /**
- When this attribute reader is added via the static method
- Attribute.addAttributeReader, an attribute name is associated with it.
- As the class file parser parses attributes, it will call various
- AttributeReaders based on the name of the attributes it is
- constructing.
-
- @param name_index An index into the constant pool, indexing a
- ConstantUtf8 that represents the name of the attribute.
-
- @param length The length of the data contained in the attribute. This
- is written into the constant pool and should agree with what the
- factory expects the length to be.
-
- @param file This is the data input stream that the factory needs to read
- its data from.
-
- @param constant_pool This is the constant pool associated with the
- Attribute that we are constructing.
-
- @return The user-defined AttributeReader should take this data and use
- it to construct an attribute. In the case of errors, a null can be
- returned which will cause the parsing of the class file to fail.
-
- @see Attribute#addAttributeReader( String, AttributeReader )
- */
- public Attribute createAttribute( int name_index, int length, java.io.DataInputStream file,
- ConstantPool constant_pool );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+/**
+ * Unknown (non-standard) attributes may be read via user-defined factory
+ * objects that can be registered with the Attribute.addAttributeReader
+ * method. These factory objects should implement this interface.
+
+ * @see Attribute
+ * @version $Id: AttributeReader.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface AttributeReader {
+
+ /**
+ When this attribute reader is added via the static method
+ Attribute.addAttributeReader, an attribute name is associated with it.
+ As the class file parser parses attributes, it will call various
+ AttributeReaders based on the name of the attributes it is
+ constructing.
+
+ @param name_index An index into the constant pool, indexing a
+ ConstantUtf8 that represents the name of the attribute.
+
+ @param length The length of the data contained in the attribute. This
+ is written into the constant pool and should agree with what the
+ factory expects the length to be.
+
+ @param file This is the data input stream that the factory needs to read
+ its data from.
+
+ @param constant_pool This is the constant pool associated with the
+ Attribute that we are constructing.
+
+ @return The user-defined AttributeReader should take this data and use
+ it to construct an attribute. In the case of errors, a null can be
+ returned which will cause the parsing of the class file to fail.
+
+ @see Attribute#addAttributeReader( String, AttributeReader )
+ */
+ public Attribute createAttribute( int name_index, int length, java.io.DataInputStream file,
+ ConstantPool constant_pool );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassFormatException.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassFormatException.java
index 4b4eea4a..b75155fb 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassFormatException.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassFormatException.java
@@ -1,37 +1,37 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-/**
- * Thrown when the BCEL attempts to read a class file and determines
- * that the file is malformed or otherwise cannot be interpreted as a
- * class file.
- *
- * @version $Id: ClassFormatException.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ClassFormatException extends RuntimeException {
-
- public ClassFormatException() {
- super();
- }
-
-
- public ClassFormatException(String s) {
- super(s);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+/**
+ * Thrown when the BCEL attempts to read a class file and determines
+ * that the file is malformed or otherwise cannot be interpreted as a
+ * class file.
+ *
+ * @version $Id: ClassFormatException.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ClassFormatException extends RuntimeException {
+
+ public ClassFormatException() {
+ super();
+ }
+
+
+ public ClassFormatException(String s) {
+ super(s);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassParser.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassParser.java
index 8b315608..14e79998 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassParser.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ClassParser.java
@@ -1,302 +1,302 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.BufferedInputStream;
-import java.io.DataInputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Wrapper class that parses a given Java .class file. The method parse returns a
- * JavaClass object on success. When an I/O error or an
- * inconsistency occurs an appropiate exception is propagated back to
- * the caller.
- *
- * The structure and the names comply, except for a few conveniences,
- * exactly with the
- * JVM specification 1.0. See this paper for
- * further details about the structure of a bytecode file.
- *
- * @version $Id: ClassParser.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class ClassParser {
-
- private DataInputStream file;
- private boolean fileOwned;
- private String file_name;
- private String zip_file;
- private int class_name_index, superclass_name_index;
- private int major, minor; // Compiler version
- private int access_flags; // Access rights of parsed class
- private int[] interfaces; // Names of implemented interfaces
- private ConstantPool constant_pool; // collection of constants
- private Field[] fields; // class fields, i.e., its variables
- private Method[] methods; // methods defined in the class
- private Attribute[] attributes; // attributes defined in the class
- private boolean is_zip; // Loaded from zip file
- private static final int BUFSIZE = 8192;
-
-
- /**
- * Parse class from the given stream.
- *
- * @param file Input stream
- * @param file_name File name
- */
- public ClassParser(InputStream file, String file_name) {
- this.file_name = file_name;
- fileOwned = false;
- String clazz = file.getClass().getName(); // Not a very clean solution ...
- is_zip = clazz.startsWith("java.util.zip.") || clazz.startsWith("java.util.jar.");
- if (file instanceof DataInputStream) {
- this.file = (DataInputStream) file;
- } else {
- this.file = new DataInputStream(new BufferedInputStream(file, BUFSIZE));
- }
- }
-
-
- /** Parse class from given .class file.
- *
- * @param file_name file name
- */
- public ClassParser(String file_name) throws IOException {
- is_zip = false;
- this.file_name = file_name;
- fileOwned = true;
- }
-
-
- /** Parse class from given .class file in a ZIP-archive
- *
- * @param zip_file zip file name
- * @param file_name file name
- */
- public ClassParser(String zip_file, String file_name) {
- is_zip = true;
- fileOwned = true;
- this.zip_file = zip_file;
- this.file_name = file_name;
- }
-
-
- /**
- * Parse the given Java class file and return an object that represents
- * the contained data, i.e., constants, methods, fields and commands.
- * A ClassFormatException is raised, if the file is not a valid
- * .class file. (This does not include verification of the byte code as it
- * is performed by the java interpreter).
- *
- * @return Class object representing the parsed class file
- * @throws IOException
- * @throws ClassFormatException
- */
- public JavaClass parse() throws IOException, ClassFormatException {
- ZipFile zip = null;
- try {
- if (fileOwned) {
- if (is_zip) {
- zip = new ZipFile(zip_file);
- ZipEntry entry = zip.getEntry(file_name);
- file = new DataInputStream(new BufferedInputStream(zip.getInputStream(entry),
- BUFSIZE));
- } else {
- file = new DataInputStream(new BufferedInputStream(new FileInputStream(
- file_name), BUFSIZE));
- }
- }
- /****************** Read headers ********************************/
- // Check magic tag of class file
- readID();
- // Get compiler version
- readVersion();
- /****************** Read constant pool and related **************/
- // Read constant pool entries
- readConstantPool();
- // Get class information
- readClassInfo();
- // Get interface information, i.e., implemented interfaces
- readInterfaces();
- /****************** Read class fields and methods ***************/
- // Read class fields, i.e., the variables of the class
- readFields();
- // Read class methods, i.e., the functions in the class
- readMethods();
- // Read class attributes
- readAttributes();
- // Check for unknown variables
- //Unknown[] u = Unknown.getUnknownAttributes();
- //for(int i=0; i < u.length; i++)
- // System.err.println("WARNING: " + u[i]);
- // Everything should have been read now
- // if(file.available() > 0) {
- // int bytes = file.available();
- // byte[] buf = new byte[bytes];
- // file.read(buf);
- // if(!(is_zip && (buf.length == 1))) {
- // System.err.println("WARNING: Trailing garbage at end of " + file_name);
- // System.err.println(bytes + " extra bytes: " + Utility.toHexString(buf));
- // }
- // }
- } catch (IOException ioe) {
- // this is just temporary to find the cause for the strange
- // ClassFormatException that is raised randomly during the JaMoPP
- // bulk tests
- ioe.printStackTrace();
- throw ioe;
- } finally {
- // Read everything of interest, so close the file
- if (fileOwned) {
- file.close();
- if (zip != null) {
- zip.close();
- }
- }
- }
- // Return the information we have gathered in a new object
- return new JavaClass(class_name_index, superclass_name_index, file_name, major, minor,
- access_flags, constant_pool, interfaces, fields, methods, attributes, is_zip
- ? JavaClass.ZIP
- : JavaClass.FILE);
- }
-
-
- /**
- * Read information about the attributes of the class.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readAttributes() throws IOException, ClassFormatException {
- int attributes_count;
- attributes_count = file.readUnsignedShort();
- attributes = new Attribute[attributes_count];
- for (int i = 0; i < attributes_count; i++) {
- attributes[i] = Attribute.readAttribute(file, constant_pool);
- }
- }
-
-
- /**
- * Read information about the class and its super class.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readClassInfo() throws IOException, ClassFormatException {
- access_flags = file.readUnsignedShort();
- /* Interfaces are implicitely abstract, the flag should be set
- * according to the JVM specification.
- */
- if ((access_flags & Constants.ACC_INTERFACE) != 0) {
- access_flags |= Constants.ACC_ABSTRACT;
- }
- if (((access_flags & Constants.ACC_ABSTRACT) != 0)
- && ((access_flags & Constants.ACC_FINAL) != 0)) {
- throw new ClassFormatException("Class can't be both final and abstract");
- }
- class_name_index = file.readUnsignedShort();
- superclass_name_index = file.readUnsignedShort();
- }
-
-
- /**
- * Read constant pool entries.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readConstantPool() throws IOException, ClassFormatException {
- constant_pool = new ConstantPool(file);
- }
-
-
- /**
- * Read information about the fields of the class, i.e., its variables.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readFields() throws IOException, ClassFormatException {
- int fields_count;
- fields_count = file.readUnsignedShort();
- fields = new Field[fields_count];
- for (int i = 0; i < fields_count; i++) {
- fields[i] = new Field(file, constant_pool);
- }
- }
-
-
- /******************** Private utility methods **********************/
- /**
- * Check whether the header of the file is ok.
- * Of course, this has to be the first action on successive file reads.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readID() throws IOException, ClassFormatException {
- int magic = 0xCAFEBABE;
- if (file.readInt() != magic) {
- throw new ClassFormatException(file_name + " is not a Java .class file");
- }
- }
-
-
- /**
- * Read information about the interfaces implemented by this class.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readInterfaces() throws IOException, ClassFormatException {
- int interfaces_count;
- interfaces_count = file.readUnsignedShort();
- interfaces = new int[interfaces_count];
- for (int i = 0; i < interfaces_count; i++) {
- interfaces[i] = file.readUnsignedShort();
- }
- }
-
-
- /**
- * Read information about the methods of the class.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readMethods() throws IOException, ClassFormatException {
- int methods_count;
- methods_count = file.readUnsignedShort();
- methods = new Method[methods_count];
- for (int i = 0; i < methods_count; i++) {
- methods[i] = new Method(file, constant_pool);
- }
- }
-
-
- /**
- * Read major and minor version of compiler which created the file.
- * @throws IOException
- * @throws ClassFormatException
- */
- private final void readVersion() throws IOException, ClassFormatException {
- minor = file.readUnsignedShort();
- major = file.readUnsignedShort();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Wrapper class that parses a given Java .class file. The method parse returns a
+ * JavaClass object on success. When an I/O error or an
+ * inconsistency occurs an appropiate exception is propagated back to
+ * the caller.
+ *
+ * The structure and the names comply, except for a few conveniences,
+ * exactly with the
+ * JVM specification 1.0. See this paper for
+ * further details about the structure of a bytecode file.
+ *
+ * @version $Id: ClassParser.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class ClassParser {
+
+ private DataInputStream file;
+ private boolean fileOwned;
+ private String file_name;
+ private String zip_file;
+ private int class_name_index, superclass_name_index;
+ private int major, minor; // Compiler version
+ private int access_flags; // Access rights of parsed class
+ private int[] interfaces; // Names of implemented interfaces
+ private ConstantPool constant_pool; // collection of constants
+ private Field[] fields; // class fields, i.e., its variables
+ private Method[] methods; // methods defined in the class
+ private Attribute[] attributes; // attributes defined in the class
+ private boolean is_zip; // Loaded from zip file
+ private static final int BUFSIZE = 8192;
+
+
+ /**
+ * Parse class from the given stream.
+ *
+ * @param file Input stream
+ * @param file_name File name
+ */
+ public ClassParser(InputStream file, String file_name) {
+ this.file_name = file_name;
+ fileOwned = false;
+ String clazz = file.getClass().getName(); // Not a very clean solution ...
+ is_zip = clazz.startsWith("java.util.zip.") || clazz.startsWith("java.util.jar.");
+ if (file instanceof DataInputStream) {
+ this.file = (DataInputStream) file;
+ } else {
+ this.file = new DataInputStream(new BufferedInputStream(file, BUFSIZE));
+ }
+ }
+
+
+ /** Parse class from given .class file.
+ *
+ * @param file_name file name
+ */
+ public ClassParser(String file_name) throws IOException {
+ is_zip = false;
+ this.file_name = file_name;
+ fileOwned = true;
+ }
+
+
+ /** Parse class from given .class file in a ZIP-archive
+ *
+ * @param zip_file zip file name
+ * @param file_name file name
+ */
+ public ClassParser(String zip_file, String file_name) {
+ is_zip = true;
+ fileOwned = true;
+ this.zip_file = zip_file;
+ this.file_name = file_name;
+ }
+
+
+ /**
+ * Parse the given Java class file and return an object that represents
+ * the contained data, i.e., constants, methods, fields and commands.
+ * A ClassFormatException is raised, if the file is not a valid
+ * .class file. (This does not include verification of the byte code as it
+ * is performed by the java interpreter).
+ *
+ * @return Class object representing the parsed class file
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ public JavaClass parse() throws IOException, ClassFormatException {
+ ZipFile zip = null;
+ try {
+ if (fileOwned) {
+ if (is_zip) {
+ zip = new ZipFile(zip_file);
+ ZipEntry entry = zip.getEntry(file_name);
+ file = new DataInputStream(new BufferedInputStream(zip.getInputStream(entry),
+ BUFSIZE));
+ } else {
+ file = new DataInputStream(new BufferedInputStream(new FileInputStream(
+ file_name), BUFSIZE));
+ }
+ }
+ /****************** Read headers ********************************/
+ // Check magic tag of class file
+ readID();
+ // Get compiler version
+ readVersion();
+ /****************** Read constant pool and related **************/
+ // Read constant pool entries
+ readConstantPool();
+ // Get class information
+ readClassInfo();
+ // Get interface information, i.e., implemented interfaces
+ readInterfaces();
+ /****************** Read class fields and methods ***************/
+ // Read class fields, i.e., the variables of the class
+ readFields();
+ // Read class methods, i.e., the functions in the class
+ readMethods();
+ // Read class attributes
+ readAttributes();
+ // Check for unknown variables
+ //Unknown[] u = Unknown.getUnknownAttributes();
+ //for(int i=0; i < u.length; i++)
+ // System.err.println("WARNING: " + u[i]);
+ // Everything should have been read now
+ // if(file.available() > 0) {
+ // int bytes = file.available();
+ // byte[] buf = new byte[bytes];
+ // file.read(buf);
+ // if(!(is_zip && (buf.length == 1))) {
+ // System.err.println("WARNING: Trailing garbage at end of " + file_name);
+ // System.err.println(bytes + " extra bytes: " + Utility.toHexString(buf));
+ // }
+ // }
+ } catch (IOException ioe) {
+ // this is just temporary to find the cause for the strange
+ // ClassFormatException that is raised randomly during the JaMoPP
+ // bulk tests
+ ioe.printStackTrace();
+ throw ioe;
+ } finally {
+ // Read everything of interest, so close the file
+ if (fileOwned) {
+ file.close();
+ if (zip != null) {
+ zip.close();
+ }
+ }
+ }
+ // Return the information we have gathered in a new object
+ return new JavaClass(class_name_index, superclass_name_index, file_name, major, minor,
+ access_flags, constant_pool, interfaces, fields, methods, attributes, is_zip
+ ? JavaClass.ZIP
+ : JavaClass.FILE);
+ }
+
+
+ /**
+ * Read information about the attributes of the class.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readAttributes() throws IOException, ClassFormatException {
+ int attributes_count;
+ attributes_count = file.readUnsignedShort();
+ attributes = new Attribute[attributes_count];
+ for (int i = 0; i < attributes_count; i++) {
+ attributes[i] = Attribute.readAttribute(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * Read information about the class and its super class.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readClassInfo() throws IOException, ClassFormatException {
+ access_flags = file.readUnsignedShort();
+ /* Interfaces are implicitely abstract, the flag should be set
+ * according to the JVM specification.
+ */
+ if ((access_flags & Constants.ACC_INTERFACE) != 0) {
+ access_flags |= Constants.ACC_ABSTRACT;
+ }
+ if (((access_flags & Constants.ACC_ABSTRACT) != 0)
+ && ((access_flags & Constants.ACC_FINAL) != 0)) {
+ throw new ClassFormatException("Class can't be both final and abstract");
+ }
+ class_name_index = file.readUnsignedShort();
+ superclass_name_index = file.readUnsignedShort();
+ }
+
+
+ /**
+ * Read constant pool entries.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readConstantPool() throws IOException, ClassFormatException {
+ constant_pool = new ConstantPool(file);
+ }
+
+
+ /**
+ * Read information about the fields of the class, i.e., its variables.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readFields() throws IOException, ClassFormatException {
+ int fields_count;
+ fields_count = file.readUnsignedShort();
+ fields = new Field[fields_count];
+ for (int i = 0; i < fields_count; i++) {
+ fields[i] = new Field(file, constant_pool);
+ }
+ }
+
+
+ /******************** Private utility methods **********************/
+ /**
+ * Check whether the header of the file is ok.
+ * Of course, this has to be the first action on successive file reads.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readID() throws IOException, ClassFormatException {
+ int magic = 0xCAFEBABE;
+ if (file.readInt() != magic) {
+ throw new ClassFormatException(file_name + " is not a Java .class file");
+ }
+ }
+
+
+ /**
+ * Read information about the interfaces implemented by this class.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readInterfaces() throws IOException, ClassFormatException {
+ int interfaces_count;
+ interfaces_count = file.readUnsignedShort();
+ interfaces = new int[interfaces_count];
+ for (int i = 0; i < interfaces_count; i++) {
+ interfaces[i] = file.readUnsignedShort();
+ }
+ }
+
+
+ /**
+ * Read information about the methods of the class.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readMethods() throws IOException, ClassFormatException {
+ int methods_count;
+ methods_count = file.readUnsignedShort();
+ methods = new Method[methods_count];
+ for (int i = 0; i < methods_count; i++) {
+ methods[i] = new Method(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * Read major and minor version of compiler which created the file.
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ private final void readVersion() throws IOException, ClassFormatException {
+ minor = file.readUnsignedShort();
+ major = file.readUnsignedShort();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Code.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Code.java
index a746617a..c0846283 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Code.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Code.java
@@ -1,352 +1,352 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a chunk of Java byte code contained in a
- * method. It is instantiated by the
- * Attribute.readAttribute() method. A Code
- * attribute contains informations about operand stack, local
- * variables, byte code and the exceptions handled within this
- * method.
- *
- * This attribute has attributes itself, namely LineNumberTable which
- * is used for debugging purposes and LocalVariableTable which
- * contains information about the local variables.
- *
- * @version $Id: Code.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- * @see CodeException
- * @see LineNumberTable
- * @see LocalVariableTable
- */
-public final class Code extends Attribute {
-
- private int max_stack; // Maximum size of stack used by this method
- private int max_locals; // Number of local variables
- private int code_length; // Length of code in bytes
- private byte[] code; // Actual byte code
- private int exception_table_length;
- private CodeException[] exception_table; // Table of handled exceptions
- private int attributes_count; // Attributes of code: LineNumber
- private Attribute[] attributes; // or LocalVariable
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use copy() for a physical copy.
- */
- public Code(Code c) {
- this(c.getNameIndex(), c.getLength(), c.getMaxStack(), c.getMaxLocals(), c.getCode(), c
- .getExceptionTable(), c.getAttributes(), c.getConstantPool());
- }
-
-
- /**
- * @param name_index Index pointing to the name Code
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- */
- Code(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- // Initialize with some default values which will be overwritten later
- this(name_index, length, file.readUnsignedShort(), file.readUnsignedShort(), (byte[]) null,
- (CodeException[]) null, (Attribute[]) null, constant_pool);
- code_length = file.readInt();
- code = new byte[code_length]; // Read byte code
- file.readFully(code);
- /* Read exception table that contains all regions where an exception
- * handler is active, i.e., a try { ... } catch() block.
- */
- exception_table_length = file.readUnsignedShort();
- exception_table = new CodeException[exception_table_length];
- for (int i = 0; i < exception_table_length; i++) {
- exception_table[i] = new CodeException(file);
- }
- /* Read all attributes, currently `LineNumberTable' and
- * `LocalVariableTable'
- */
- attributes_count = file.readUnsignedShort();
- attributes = new Attribute[attributes_count];
- for (int i = 0; i < attributes_count; i++) {
- attributes[i] = Attribute.readAttribute(file, constant_pool);
- }
- /* Adjust length, because of setAttributes in this(), s.b. length
- * is incorrect, because it didn't take the internal attributes
- * into account yet! Very subtle bug, fixed in 3.1.1.
- */
- this.length = length;
- }
-
-
- /**
- * @param name_index Index pointing to the name Code
- * @param length Content length in bytes
- * @param max_stack Maximum size of stack
- * @param max_locals Number of local variables
- * @param code Actual byte code
- * @param exception_table Table of handled exceptions
- * @param attributes Attributes of code: LineNumber or LocalVariable
- * @param constant_pool Array of constants
- */
- public Code(int name_index, int length, int max_stack, int max_locals, byte[] code,
- CodeException[] exception_table, Attribute[] attributes, ConstantPool constant_pool) {
- super(Constants.ATTR_CODE, name_index, length, constant_pool);
- this.max_stack = max_stack;
- this.max_locals = max_locals;
- setCode(code);
- setExceptionTable(exception_table);
- setAttributes(attributes); // Overwrites length!
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitCode(this);
- }
-
-
- /**
- * Dump code attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(max_stack);
- file.writeShort(max_locals);
- file.writeInt(code_length);
- file.write(code, 0, code_length);
- file.writeShort(exception_table_length);
- for (int i = 0; i < exception_table_length; i++) {
- exception_table[i].dump(file);
- }
- file.writeShort(attributes_count);
- for (int i = 0; i < attributes_count; i++) {
- attributes[i].dump(file);
- }
- }
-
-
- /**
- * @return Collection of code attributes.
- * @see Attribute
- */
- public final Attribute[] getAttributes() {
- return attributes;
- }
-
-
- /**
- * @return LineNumberTable of Code, if it has one
- */
- public LineNumberTable getLineNumberTable() {
- for (int i = 0; i < attributes_count; i++) {
- if (attributes[i] instanceof LineNumberTable) {
- return (LineNumberTable) attributes[i];
- }
- }
- return null;
- }
-
-
- /**
- * @return LocalVariableTable of Code, if it has one
- */
- public LocalVariableTable getLocalVariableTable() {
- for (int i = 0; i < attributes_count; i++) {
- if (attributes[i] instanceof LocalVariableTable) {
- return (LocalVariableTable) attributes[i];
- }
- }
- return null;
- }
-
-
- /**
- * @return Actual byte code of the method.
- */
- public final byte[] getCode() {
- return code;
- }
-
-
- /**
- * @return Table of handled exceptions.
- * @see CodeException
- */
- public final CodeException[] getExceptionTable() {
- return exception_table;
- }
-
-
- /**
- * @return Number of local variables.
- */
- public final int getMaxLocals() {
- return max_locals;
- }
-
-
- /**
- * @return Maximum size of stack used by this method.
- */
- public final int getMaxStack() {
- return max_stack;
- }
-
-
- /**
- * @return the internal length of this code attribute (minus the first 6 bytes)
- * and excluding all its attributes
- */
- private final int getInternalLength() {
- return 2 /*max_stack*/+ 2 /*max_locals*/+ 4 /*code length*/
- + code_length /*byte-code*/
- + 2 /*exception-table length*/
- + 8 * exception_table_length /* exception table */
- + 2 /* attributes count */;
- }
-
-
- /**
- * @return the full size of this code attribute, minus its first 6 bytes,
- * including the size of all its contained attributes
- */
- private final int calculateLength() {
- int len = 0;
- for (int i = 0; i < attributes_count; i++) {
- len += attributes[i].length + 6 /*attribute header size*/;
- }
- return len + getInternalLength();
- }
-
-
- /**
- * @param attributes the attributes to set for this Code
- */
- public final void setAttributes( Attribute[] attributes ) {
- this.attributes = attributes;
- attributes_count = (attributes == null) ? 0 : attributes.length;
- length = calculateLength(); // Adjust length
- }
-
-
- /**
- * @param code byte code
- */
- public final void setCode( byte[] code ) {
- this.code = code;
- code_length = (code == null) ? 0 : code.length;
- }
-
-
- /**
- * @param exception_table exception table
- */
- public final void setExceptionTable( CodeException[] exception_table ) {
- this.exception_table = exception_table;
- exception_table_length = (exception_table == null) ? 0 : exception_table.length;
- }
-
-
- /**
- * @param max_locals maximum number of local variables
- */
- public final void setMaxLocals( int max_locals ) {
- this.max_locals = max_locals;
- }
-
-
- /**
- * @param max_stack maximum stack size
- */
- public final void setMaxStack( int max_stack ) {
- this.max_stack = max_stack;
- }
-
-
- /**
- * @return String representation of code chunk.
- */
- public final String toString( boolean verbose ) {
- StringBuilder buf = new StringBuilder(100);
- buf.append("Code(max_stack = ").append(max_stack).append(", max_locals = ").append(
- max_locals).append(", code_length = ").append(code_length).append(")\n").append(
- Utility.codeToString(code, constant_pool, 0, -1, verbose));
- if (exception_table_length > 0) {
- buf.append("\nException handler(s) = \n").append("From\tTo\tHandler\tType\n");
- for (int i = 0; i < exception_table_length; i++) {
- buf.append(exception_table[i].toString(constant_pool, verbose)).append("\n");
- }
- }
- if (attributes_count > 0) {
- buf.append("\nAttribute(s) = \n");
- for (int i = 0; i < attributes_count; i++) {
- buf.append(attributes[i].toString()).append("\n");
- }
- }
- return buf.toString();
- }
-
-
- /**
- * @return String representation of code chunk.
- */
- public final String toString() {
- return toString(true);
- }
-
-
- /**
- * @return deep copy of this attribute
- *
- * @param _constant_pool the constant pool to duplicate
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- Code c = (Code) clone();
- if (code != null) {
- c.code = new byte[code.length];
- System.arraycopy(code, 0, c.code, 0, code.length);
- }
- c.constant_pool = _constant_pool;
- c.exception_table = new CodeException[exception_table_length];
- for (int i = 0; i < exception_table_length; i++) {
- c.exception_table[i] = exception_table[i].copy();
- }
- c.attributes = new Attribute[attributes_count];
- for (int i = 0; i < attributes_count; i++) {
- c.attributes[i] = attributes[i].copy(_constant_pool);
- }
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a chunk of Java byte code contained in a
+ * method. It is instantiated by the
+ * Attribute.readAttribute() method. A Code
+ * attribute contains informations about operand stack, local
+ * variables, byte code and the exceptions handled within this
+ * method.
+ *
+ * This attribute has attributes itself, namely LineNumberTable which
+ * is used for debugging purposes and LocalVariableTable which
+ * contains information about the local variables.
+ *
+ * @version $Id: Code.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ * @see CodeException
+ * @see LineNumberTable
+ * @see LocalVariableTable
+ */
+public final class Code extends Attribute {
+
+ private int max_stack; // Maximum size of stack used by this method
+ private int max_locals; // Number of local variables
+ private int code_length; // Length of code in bytes
+ private byte[] code; // Actual byte code
+ private int exception_table_length;
+ private CodeException[] exception_table; // Table of handled exceptions
+ private int attributes_count; // Attributes of code: LineNumber
+ private Attribute[] attributes; // or LocalVariable
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use copy() for a physical copy.
+ */
+ public Code(Code c) {
+ this(c.getNameIndex(), c.getLength(), c.getMaxStack(), c.getMaxLocals(), c.getCode(), c
+ .getExceptionTable(), c.getAttributes(), c.getConstantPool());
+ }
+
+
+ /**
+ * @param name_index Index pointing to the name Code
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ */
+ Code(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ // Initialize with some default values which will be overwritten later
+ this(name_index, length, file.readUnsignedShort(), file.readUnsignedShort(), (byte[]) null,
+ (CodeException[]) null, (Attribute[]) null, constant_pool);
+ code_length = file.readInt();
+ code = new byte[code_length]; // Read byte code
+ file.readFully(code);
+ /* Read exception table that contains all regions where an exception
+ * handler is active, i.e., a try { ... } catch() block.
+ */
+ exception_table_length = file.readUnsignedShort();
+ exception_table = new CodeException[exception_table_length];
+ for (int i = 0; i < exception_table_length; i++) {
+ exception_table[i] = new CodeException(file);
+ }
+ /* Read all attributes, currently `LineNumberTable' and
+ * `LocalVariableTable'
+ */
+ attributes_count = file.readUnsignedShort();
+ attributes = new Attribute[attributes_count];
+ for (int i = 0; i < attributes_count; i++) {
+ attributes[i] = Attribute.readAttribute(file, constant_pool);
+ }
+ /* Adjust length, because of setAttributes in this(), s.b. length
+ * is incorrect, because it didn't take the internal attributes
+ * into account yet! Very subtle bug, fixed in 3.1.1.
+ */
+ this.length = length;
+ }
+
+
+ /**
+ * @param name_index Index pointing to the name Code
+ * @param length Content length in bytes
+ * @param max_stack Maximum size of stack
+ * @param max_locals Number of local variables
+ * @param code Actual byte code
+ * @param exception_table Table of handled exceptions
+ * @param attributes Attributes of code: LineNumber or LocalVariable
+ * @param constant_pool Array of constants
+ */
+ public Code(int name_index, int length, int max_stack, int max_locals, byte[] code,
+ CodeException[] exception_table, Attribute[] attributes, ConstantPool constant_pool) {
+ super(Constants.ATTR_CODE, name_index, length, constant_pool);
+ this.max_stack = max_stack;
+ this.max_locals = max_locals;
+ setCode(code);
+ setExceptionTable(exception_table);
+ setAttributes(attributes); // Overwrites length!
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitCode(this);
+ }
+
+
+ /**
+ * Dump code attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(max_stack);
+ file.writeShort(max_locals);
+ file.writeInt(code_length);
+ file.write(code, 0, code_length);
+ file.writeShort(exception_table_length);
+ for (int i = 0; i < exception_table_length; i++) {
+ exception_table[i].dump(file);
+ }
+ file.writeShort(attributes_count);
+ for (int i = 0; i < attributes_count; i++) {
+ attributes[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return Collection of code attributes.
+ * @see Attribute
+ */
+ public final Attribute[] getAttributes() {
+ return attributes;
+ }
+
+
+ /**
+ * @return LineNumberTable of Code, if it has one
+ */
+ public LineNumberTable getLineNumberTable() {
+ for (int i = 0; i < attributes_count; i++) {
+ if (attributes[i] instanceof LineNumberTable) {
+ return (LineNumberTable) attributes[i];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * @return LocalVariableTable of Code, if it has one
+ */
+ public LocalVariableTable getLocalVariableTable() {
+ for (int i = 0; i < attributes_count; i++) {
+ if (attributes[i] instanceof LocalVariableTable) {
+ return (LocalVariableTable) attributes[i];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * @return Actual byte code of the method.
+ */
+ public final byte[] getCode() {
+ return code;
+ }
+
+
+ /**
+ * @return Table of handled exceptions.
+ * @see CodeException
+ */
+ public final CodeException[] getExceptionTable() {
+ return exception_table;
+ }
+
+
+ /**
+ * @return Number of local variables.
+ */
+ public final int getMaxLocals() {
+ return max_locals;
+ }
+
+
+ /**
+ * @return Maximum size of stack used by this method.
+ */
+ public final int getMaxStack() {
+ return max_stack;
+ }
+
+
+ /**
+ * @return the internal length of this code attribute (minus the first 6 bytes)
+ * and excluding all its attributes
+ */
+ private final int getInternalLength() {
+ return 2 /*max_stack*/+ 2 /*max_locals*/+ 4 /*code length*/
+ + code_length /*byte-code*/
+ + 2 /*exception-table length*/
+ + 8 * exception_table_length /* exception table */
+ + 2 /* attributes count */;
+ }
+
+
+ /**
+ * @return the full size of this code attribute, minus its first 6 bytes,
+ * including the size of all its contained attributes
+ */
+ private final int calculateLength() {
+ int len = 0;
+ for (int i = 0; i < attributes_count; i++) {
+ len += attributes[i].length + 6 /*attribute header size*/;
+ }
+ return len + getInternalLength();
+ }
+
+
+ /**
+ * @param attributes the attributes to set for this Code
+ */
+ public final void setAttributes( Attribute[] attributes ) {
+ this.attributes = attributes;
+ attributes_count = (attributes == null) ? 0 : attributes.length;
+ length = calculateLength(); // Adjust length
+ }
+
+
+ /**
+ * @param code byte code
+ */
+ public final void setCode( byte[] code ) {
+ this.code = code;
+ code_length = (code == null) ? 0 : code.length;
+ }
+
+
+ /**
+ * @param exception_table exception table
+ */
+ public final void setExceptionTable( CodeException[] exception_table ) {
+ this.exception_table = exception_table;
+ exception_table_length = (exception_table == null) ? 0 : exception_table.length;
+ }
+
+
+ /**
+ * @param max_locals maximum number of local variables
+ */
+ public final void setMaxLocals( int max_locals ) {
+ this.max_locals = max_locals;
+ }
+
+
+ /**
+ * @param max_stack maximum stack size
+ */
+ public final void setMaxStack( int max_stack ) {
+ this.max_stack = max_stack;
+ }
+
+
+ /**
+ * @return String representation of code chunk.
+ */
+ public final String toString( boolean verbose ) {
+ StringBuilder buf = new StringBuilder(100);
+ buf.append("Code(max_stack = ").append(max_stack).append(", max_locals = ").append(
+ max_locals).append(", code_length = ").append(code_length).append(")\n").append(
+ Utility.codeToString(code, constant_pool, 0, -1, verbose));
+ if (exception_table_length > 0) {
+ buf.append("\nException handler(s) = \n").append("From\tTo\tHandler\tType\n");
+ for (int i = 0; i < exception_table_length; i++) {
+ buf.append(exception_table[i].toString(constant_pool, verbose)).append("\n");
+ }
+ }
+ if (attributes_count > 0) {
+ buf.append("\nAttribute(s) = \n");
+ for (int i = 0; i < attributes_count; i++) {
+ buf.append(attributes[i].toString()).append("\n");
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return String representation of code chunk.
+ */
+ public final String toString() {
+ return toString(true);
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ *
+ * @param _constant_pool the constant pool to duplicate
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ Code c = (Code) clone();
+ if (code != null) {
+ c.code = new byte[code.length];
+ System.arraycopy(code, 0, c.code, 0, code.length);
+ }
+ c.constant_pool = _constant_pool;
+ c.exception_table = new CodeException[exception_table_length];
+ for (int i = 0; i < exception_table_length; i++) {
+ c.exception_table[i] = exception_table[i].copy();
+ }
+ c.attributes = new Attribute[attributes_count];
+ for (int i = 0; i < attributes_count; i++) {
+ c.attributes[i] = attributes[i].copy(_constant_pool);
+ }
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/CodeException.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/CodeException.java
index 007d2298..f89db535 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/CodeException.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/CodeException.java
@@ -1,215 +1,215 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents an entry in the exception table of the Code
- * attribute and is used only there. It contains a range in which a
- * particular exception handler is active.
- *
- * @version $Id: CodeException.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Code
- */
-public final class CodeException implements Cloneable, Constants, Node, Serializable {
-
- private int start_pc; // Range in the code the exception handler is
- private int end_pc; // active. start_pc is inclusive, end_pc exclusive
- private int handler_pc; /* Starting address of exception handler, i.e.,
- * an offset from start of code.
- */
- private int catch_type; /* If this is zero the handler catches any
- * exception, otherwise it points to the
- * exception class which is to be caught.
- */
-
-
- /**
- * Initialize from another object.
- */
- public CodeException(CodeException c) {
- this(c.getStartPC(), c.getEndPC(), c.getHandlerPC(), c.getCatchType());
- }
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- CodeException(DataInputStream file) throws IOException {
- this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file
- .readUnsignedShort());
- }
-
-
- /**
- * @param start_pc Range in the code the exception handler is active,
- * start_pc is inclusive while
- * @param end_pc is exclusive
- * @param handler_pc Starting address of exception handler, i.e.,
- * an offset from start of code.
- * @param catch_type If zero the handler catches any
- * exception, otherwise it points to the exception class which is
- * to be caught.
- */
- public CodeException(int start_pc, int end_pc, int handler_pc, int catch_type) {
- this.start_pc = start_pc;
- this.end_pc = end_pc;
- this.handler_pc = handler_pc;
- this.catch_type = catch_type;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitCodeException(this);
- }
-
-
- /**
- * Dump code exception to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeShort(start_pc);
- file.writeShort(end_pc);
- file.writeShort(handler_pc);
- file.writeShort(catch_type);
- }
-
-
- /**
- * @return 0, if the handler catches any exception, otherwise it points to
- * the exception class which is to be caught.
- */
- public final int getCatchType() {
- return catch_type;
- }
-
-
- /**
- * @return Exclusive end index of the region where the handler is active.
- */
- public final int getEndPC() {
- return end_pc;
- }
-
-
- /**
- * @return Starting address of exception handler, relative to the code.
- */
- public final int getHandlerPC() {
- return handler_pc;
- }
-
-
- /**
- * @return Inclusive start index of the region where the handler is active.
- */
- public final int getStartPC() {
- return start_pc;
- }
-
-
- /**
- * @param catch_type the type of exception that is caught
- */
- public final void setCatchType( int catch_type ) {
- this.catch_type = catch_type;
- }
-
-
- /**
- * @param end_pc end of handled block
- */
- public final void setEndPC( int end_pc ) {
- this.end_pc = end_pc;
- }
-
-
- /**
- * @param handler_pc where the actual code is
- */
- public final void setHandlerPC( int handler_pc ) {
- this.handler_pc = handler_pc;
- }
-
-
- /**
- * @param start_pc start of handled block
- */
- public final void setStartPC( int start_pc ) {
- this.start_pc = start_pc;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return "CodeException(start_pc = " + start_pc + ", end_pc = " + end_pc + ", handler_pc = "
- + handler_pc + ", catch_type = " + catch_type + ")";
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString( ConstantPool cp, boolean verbose ) {
- String str;
- if (catch_type == 0) {
- str = "(0)";
- } else {
- str = Utility.compactClassName(cp.getConstantString(catch_type, CONSTANT_Class), false)
- + (verbose ? "(" + catch_type + ")" : "");
- }
- return start_pc + "\t" + end_pc + "\t" + handler_pc + "\t" + str;
- }
-
-
- public final String toString( ConstantPool cp ) {
- return toString(cp, true);
- }
-
-
- /**
- * @return deep copy of this object
- */
- public CodeException copy() {
- try {
- return (CodeException) clone();
- } catch (CloneNotSupportedException e) {
- }
- return null;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents an entry in the exception table of the Code
+ * attribute and is used only there. It contains a range in which a
+ * particular exception handler is active.
+ *
+ * @version $Id: CodeException.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Code
+ */
+public final class CodeException implements Cloneable, Constants, Node, Serializable {
+
+ private int start_pc; // Range in the code the exception handler is
+ private int end_pc; // active. start_pc is inclusive, end_pc exclusive
+ private int handler_pc; /* Starting address of exception handler, i.e.,
+ * an offset from start of code.
+ */
+ private int catch_type; /* If this is zero the handler catches any
+ * exception, otherwise it points to the
+ * exception class which is to be caught.
+ */
+
+
+ /**
+ * Initialize from another object.
+ */
+ public CodeException(CodeException c) {
+ this(c.getStartPC(), c.getEndPC(), c.getHandlerPC(), c.getCatchType());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ CodeException(DataInputStream file) throws IOException {
+ this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file
+ .readUnsignedShort());
+ }
+
+
+ /**
+ * @param start_pc Range in the code the exception handler is active,
+ * start_pc is inclusive while
+ * @param end_pc is exclusive
+ * @param handler_pc Starting address of exception handler, i.e.,
+ * an offset from start of code.
+ * @param catch_type If zero the handler catches any
+ * exception, otherwise it points to the exception class which is
+ * to be caught.
+ */
+ public CodeException(int start_pc, int end_pc, int handler_pc, int catch_type) {
+ this.start_pc = start_pc;
+ this.end_pc = end_pc;
+ this.handler_pc = handler_pc;
+ this.catch_type = catch_type;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitCodeException(this);
+ }
+
+
+ /**
+ * Dump code exception to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(start_pc);
+ file.writeShort(end_pc);
+ file.writeShort(handler_pc);
+ file.writeShort(catch_type);
+ }
+
+
+ /**
+ * @return 0, if the handler catches any exception, otherwise it points to
+ * the exception class which is to be caught.
+ */
+ public final int getCatchType() {
+ return catch_type;
+ }
+
+
+ /**
+ * @return Exclusive end index of the region where the handler is active.
+ */
+ public final int getEndPC() {
+ return end_pc;
+ }
+
+
+ /**
+ * @return Starting address of exception handler, relative to the code.
+ */
+ public final int getHandlerPC() {
+ return handler_pc;
+ }
+
+
+ /**
+ * @return Inclusive start index of the region where the handler is active.
+ */
+ public final int getStartPC() {
+ return start_pc;
+ }
+
+
+ /**
+ * @param catch_type the type of exception that is caught
+ */
+ public final void setCatchType( int catch_type ) {
+ this.catch_type = catch_type;
+ }
+
+
+ /**
+ * @param end_pc end of handled block
+ */
+ public final void setEndPC( int end_pc ) {
+ this.end_pc = end_pc;
+ }
+
+
+ /**
+ * @param handler_pc where the actual code is
+ */
+ public final void setHandlerPC( int handler_pc ) {
+ this.handler_pc = handler_pc;
+ }
+
+
+ /**
+ * @param start_pc start of handled block
+ */
+ public final void setStartPC( int start_pc ) {
+ this.start_pc = start_pc;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return "CodeException(start_pc = " + start_pc + ", end_pc = " + end_pc + ", handler_pc = "
+ + handler_pc + ", catch_type = " + catch_type + ")";
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString( ConstantPool cp, boolean verbose ) {
+ String str;
+ if (catch_type == 0) {
+ str = "(0)";
+ } else {
+ str = Utility.compactClassName(cp.getConstantString(catch_type, CONSTANT_Class), false)
+ + (verbose ? "(" + catch_type + ")" : "");
+ }
+ return start_pc + "\t" + end_pc + "\t" + handler_pc + "\t" + str;
+ }
+
+
+ public final String toString( ConstantPool cp ) {
+ return toString(cp, true);
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public CodeException copy() {
+ try {
+ return (CodeException) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Constant.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Constant.java
index cbc213ad..97a4ccbc 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Constant.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Constant.java
@@ -1,189 +1,189 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.util.BCELComparator;
-
-/**
- * Abstract superclass for classes to represent the different constant types
- * in the constant pool of a class file. The classes keep closely to
- * the JVM specification.
- *
- * @version $Id: Constant.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class Constant implements Cloneable, Node, Serializable {
-
- private static BCELComparator _cmp = new BCELComparator() {
-
- public boolean equals( Object o1, Object o2 ) {
- Constant THIS = (Constant) o1;
- Constant THAT = (Constant) o2;
- return THIS.toString().equals(THAT.toString());
- }
-
-
- public int hashCode( Object o ) {
- Constant THIS = (Constant) o;
- return THIS.toString().hashCode();
- }
- };
- /* In fact this tag is redundant since we can distinguish different
- * `Constant' objects by their type, i.e., via `instanceof'. In some
- * places we will use the tag for switch()es anyway.
- *
- * First, we want match the specification as closely as possible. Second we
- * need the tag as an index to select the corresponding class name from the
- * `CONSTANT_NAMES' array.
- */
- protected byte tag;
-
-
- Constant(byte tag) {
- this.tag = tag;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public abstract void accept( Visitor v );
-
-
- public abstract void dump( DataOutputStream file ) throws IOException;
-
-
- /**
- * @return Tag of constant, i.e., its type. No setTag() method to avoid
- * confusion.
- */
- public final byte getTag() {
- return tag;
- }
-
-
- /**
- * @return String representation.
- */
- public String toString() {
- return Constants.CONSTANT_NAMES[tag] + "[" + tag + "]";
- }
-
-
- /**
- * @return deep copy of this constant
- */
- public Constant copy() {
- try {
- return (Constant) super.clone();
- } catch (CloneNotSupportedException e) {
- }
- return null;
- }
-
-
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
-
- /**
- * Read one constant from the given file, the type depends on a tag byte.
- *
- * @param file Input stream
- * @return Constant object
- */
- static final Constant readConstant( DataInputStream file ) throws IOException,
- ClassFormatException {
- byte b = file.readByte(); // Read tag byte
- switch (b) {
- case Constants.CONSTANT_Class:
- return new ConstantClass(file);
- case Constants.CONSTANT_Fieldref:
- return new ConstantFieldref(file);
- case Constants.CONSTANT_Methodref:
- return new ConstantMethodref(file);
- case Constants.CONSTANT_InterfaceMethodref:
- return new ConstantInterfaceMethodref(file);
- case Constants.CONSTANT_String:
- return new ConstantString(file);
- case Constants.CONSTANT_Integer:
- return new ConstantInteger(file);
- case Constants.CONSTANT_Float:
- return new ConstantFloat(file);
- case Constants.CONSTANT_Long:
- return new ConstantLong(file);
- case Constants.CONSTANT_Double:
- return new ConstantDouble(file);
- case Constants.CONSTANT_NameAndType:
- return new ConstantNameAndType(file);
- case Constants.CONSTANT_Utf8:
- return new ConstantUtf8(file);
- default:
- throw new ClassFormatException("Invalid byte tag in constant pool: " + b);
- }
- }
-
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator( BCELComparator comparator ) {
- _cmp = comparator;
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two Constant objects are said to be equal when
- * the result of toString() is equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals( Object obj ) {
- return _cmp.equals(this, obj);
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the result of toString().
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.util.BCELComparator;
+
+/**
+ * Abstract superclass for classes to represent the different constant types
+ * in the constant pool of a class file. The classes keep closely to
+ * the JVM specification.
+ *
+ * @version $Id: Constant.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class Constant implements Cloneable, Node, Serializable {
+
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ Constant THIS = (Constant) o1;
+ Constant THAT = (Constant) o2;
+ return THIS.toString().equals(THAT.toString());
+ }
+
+
+ public int hashCode( Object o ) {
+ Constant THIS = (Constant) o;
+ return THIS.toString().hashCode();
+ }
+ };
+ /* In fact this tag is redundant since we can distinguish different
+ * `Constant' objects by their type, i.e., via `instanceof'. In some
+ * places we will use the tag for switch()es anyway.
+ *
+ * First, we want match the specification as closely as possible. Second we
+ * need the tag as an index to select the corresponding class name from the
+ * `CONSTANT_NAMES' array.
+ */
+ protected byte tag;
+
+
+ Constant(byte tag) {
+ this.tag = tag;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public abstract void accept( Visitor v );
+
+
+ public abstract void dump( DataOutputStream file ) throws IOException;
+
+
+ /**
+ * @return Tag of constant, i.e., its type. No setTag() method to avoid
+ * confusion.
+ */
+ public final byte getTag() {
+ return tag;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public String toString() {
+ return Constants.CONSTANT_NAMES[tag] + "[" + tag + "]";
+ }
+
+
+ /**
+ * @return deep copy of this constant
+ */
+ public Constant copy() {
+ try {
+ return (Constant) super.clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+
+
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
+
+ /**
+ * Read one constant from the given file, the type depends on a tag byte.
+ *
+ * @param file Input stream
+ * @return Constant object
+ */
+ static final Constant readConstant( DataInputStream file ) throws IOException,
+ ClassFormatException {
+ byte b = file.readByte(); // Read tag byte
+ switch (b) {
+ case Constants.CONSTANT_Class:
+ return new ConstantClass(file);
+ case Constants.CONSTANT_Fieldref:
+ return new ConstantFieldref(file);
+ case Constants.CONSTANT_Methodref:
+ return new ConstantMethodref(file);
+ case Constants.CONSTANT_InterfaceMethodref:
+ return new ConstantInterfaceMethodref(file);
+ case Constants.CONSTANT_String:
+ return new ConstantString(file);
+ case Constants.CONSTANT_Integer:
+ return new ConstantInteger(file);
+ case Constants.CONSTANT_Float:
+ return new ConstantFloat(file);
+ case Constants.CONSTANT_Long:
+ return new ConstantLong(file);
+ case Constants.CONSTANT_Double:
+ return new ConstantDouble(file);
+ case Constants.CONSTANT_NameAndType:
+ return new ConstantNameAndType(file);
+ case Constants.CONSTANT_Utf8:
+ return new ConstantUtf8(file);
+ default:
+ throw new ClassFormatException("Invalid byte tag in constant pool: " + b);
+ }
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two Constant objects are said to be equal when
+ * the result of toString() is equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the result of toString().
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantCP.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantCP.java
index bec15e07..24a53306 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantCP.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantCP.java
@@ -1,132 +1,132 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Abstract super class for Fieldref and Methodref constants.
- *
- * @version $Id: ConstantCP.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see ConstantFieldref
- * @see ConstantMethodref
- * @see ConstantInterfaceMethodref
- */
-public abstract class ConstantCP extends Constant {
-
- /** References to the constants containing the class and the field signature
- */
- protected int class_index, name_and_type_index;
-
-
- /**
- * Initialize from another object.
- */
- public ConstantCP(ConstantCP c) {
- this(c.getTag(), c.getClassIndex(), c.getNameAndTypeIndex());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param tag Constant type tag
- * @param file Input stream
- * @throws IOException
- */
- ConstantCP(byte tag, DataInputStream file) throws IOException {
- this(tag, file.readUnsignedShort(), file.readUnsignedShort());
- }
-
-
- /**
- * @param class_index Reference to the class containing the field
- * @param name_and_type_index and the field signature
- */
- protected ConstantCP(byte tag, int class_index, int name_and_type_index) {
- super(tag);
- this.class_index = class_index;
- this.name_and_type_index = name_and_type_index;
- }
-
-
- /**
- * Dump constant field reference to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeShort(class_index);
- file.writeShort(name_and_type_index);
- }
-
-
- /**
- * @return Reference (index) to class this field or method belongs to.
- */
- public final int getClassIndex() {
- return class_index;
- }
-
-
- /**
- * @return Reference (index) to signature of the field.
- */
- public final int getNameAndTypeIndex() {
- return name_and_type_index;
- }
-
-
- /**
- * @param class_index points to Constant_class
- */
- public final void setClassIndex( int class_index ) {
- this.class_index = class_index;
- }
-
-
- /**
- * @return Class this field belongs to.
- */
- public String getClass( ConstantPool cp ) {
- return cp.constantToString(class_index, Constants.CONSTANT_Class);
- }
-
-
- /**
- * @param name_and_type_index points to Constant_NameAndType
- */
- public final void setNameAndTypeIndex( int name_and_type_index ) {
- this.name_and_type_index = name_and_type_index;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return super.toString() + "(class_index = " + class_index + ", name_and_type_index = "
- + name_and_type_index + ")";
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Abstract super class for Fieldref and Methodref constants.
+ *
+ * @version $Id: ConstantCP.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see ConstantFieldref
+ * @see ConstantMethodref
+ * @see ConstantInterfaceMethodref
+ */
+public abstract class ConstantCP extends Constant {
+
+ /** References to the constants containing the class and the field signature
+ */
+ protected int class_index, name_and_type_index;
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantCP(ConstantCP c) {
+ this(c.getTag(), c.getClassIndex(), c.getNameAndTypeIndex());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param tag Constant type tag
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantCP(byte tag, DataInputStream file) throws IOException {
+ this(tag, file.readUnsignedShort(), file.readUnsignedShort());
+ }
+
+
+ /**
+ * @param class_index Reference to the class containing the field
+ * @param name_and_type_index and the field signature
+ */
+ protected ConstantCP(byte tag, int class_index, int name_and_type_index) {
+ super(tag);
+ this.class_index = class_index;
+ this.name_and_type_index = name_and_type_index;
+ }
+
+
+ /**
+ * Dump constant field reference to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeShort(class_index);
+ file.writeShort(name_and_type_index);
+ }
+
+
+ /**
+ * @return Reference (index) to class this field or method belongs to.
+ */
+ public final int getClassIndex() {
+ return class_index;
+ }
+
+
+ /**
+ * @return Reference (index) to signature of the field.
+ */
+ public final int getNameAndTypeIndex() {
+ return name_and_type_index;
+ }
+
+
+ /**
+ * @param class_index points to Constant_class
+ */
+ public final void setClassIndex( int class_index ) {
+ this.class_index = class_index;
+ }
+
+
+ /**
+ * @return Class this field belongs to.
+ */
+ public String getClass( ConstantPool cp ) {
+ return cp.constantToString(class_index, Constants.CONSTANT_Class);
+ }
+
+
+ /**
+ * @param name_and_type_index points to Constant_NameAndType
+ */
+ public final void setNameAndTypeIndex( int name_and_type_index ) {
+ this.name_and_type_index = name_and_type_index;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return super.toString() + "(class_index = " + class_index + ", name_and_type_index = "
+ + name_and_type_index + ")";
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantClass.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantClass.java
index aa67cad8..b951e057 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantClass.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantClass.java
@@ -1,129 +1,129 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to a (external) class.
- *
- * @version $Id: ConstantClass.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantClass extends Constant implements ConstantObject {
-
- private int name_index; // Identical to ConstantString except for the name
-
-
- /**
- * Initialize from another object.
- */
- public ConstantClass(ConstantClass c) {
- this(c.getNameIndex());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantClass(DataInputStream file) throws IOException {
- this(file.readUnsignedShort());
- }
-
-
- /**
- * @param name_index Name index in constant pool. Should refer to a
- * ConstantUtf8.
- */
- public ConstantClass(int name_index) {
- super(Constants.CONSTANT_Class);
- this.name_index = name_index;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantClass(this);
- }
-
-
- /**
- * Dump constant class to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeShort(name_index);
- }
-
-
- /**
- * @return Name index in constant pool of class name.
- */
- public final int getNameIndex() {
- return name_index;
- }
-
-
- /**
- * @param name_index the name index in the constant pool of this Constant Class
- */
- public final void setNameIndex( int name_index ) {
- this.name_index = name_index;
- }
-
-
- /** @return String object
- */
- public Object getConstantValue( ConstantPool cp ) {
- Constant c = cp.getConstant(name_index, Constants.CONSTANT_Utf8);
- return ((ConstantUtf8) c).getBytes();
- }
-
-
- /** @return dereferenced string
- */
- public String getBytes( ConstantPool cp ) {
- return (String) getConstantValue(cp);
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return super.toString() + "(name_index = " + name_index + ")";
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to a (external) class.
+ *
+ * @version $Id: ConstantClass.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantClass extends Constant implements ConstantObject {
+
+ private int name_index; // Identical to ConstantString except for the name
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantClass(ConstantClass c) {
+ this(c.getNameIndex());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantClass(DataInputStream file) throws IOException {
+ this(file.readUnsignedShort());
+ }
+
+
+ /**
+ * @param name_index Name index in constant pool. Should refer to a
+ * ConstantUtf8.
+ */
+ public ConstantClass(int name_index) {
+ super(Constants.CONSTANT_Class);
+ this.name_index = name_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantClass(this);
+ }
+
+
+ /**
+ * Dump constant class to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeShort(name_index);
+ }
+
+
+ /**
+ * @return Name index in constant pool of class name.
+ */
+ public final int getNameIndex() {
+ return name_index;
+ }
+
+
+ /**
+ * @param name_index the name index in the constant pool of this Constant Class
+ */
+ public final void setNameIndex( int name_index ) {
+ this.name_index = name_index;
+ }
+
+
+ /** @return String object
+ */
+ public Object getConstantValue( ConstantPool cp ) {
+ Constant c = cp.getConstant(name_index, Constants.CONSTANT_Utf8);
+ return ((ConstantUtf8) c).getBytes();
+ }
+
+
+ /** @return dereferenced string
+ */
+ public String getBytes( ConstantPool cp ) {
+ return (String) getConstantValue(cp);
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return super.toString() + "(name_index = " + name_index + ")";
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantDouble.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantDouble.java
index 831ca968..c781c4ca 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantDouble.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantDouble.java
@@ -1,120 +1,120 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to a Double object.
- *
- * @version $Id: ConstantDouble.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantDouble extends Constant implements ConstantObject {
-
- private double bytes;
-
-
- /**
- * @param bytes Data
- */
- public ConstantDouble(double bytes) {
- super(Constants.CONSTANT_Double);
- this.bytes = bytes;
- }
-
-
- /**
- * Initialize from another object.
- */
- public ConstantDouble(ConstantDouble c) {
- this(c.getBytes());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantDouble(DataInputStream file) throws IOException {
- this(file.readDouble());
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantDouble(this);
- }
-
-
- /**
- * Dump constant double to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeDouble(bytes);
- }
-
-
- /**
- * @return data, i.e., 8 bytes.
- */
- public final double getBytes() {
- return bytes;
- }
-
-
- /**
- * @param bytes the raw bytes that represent the double value
- */
- public final void setBytes( double bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return super.toString() + "(bytes = " + bytes + ")";
- }
-
-
- /** @return Double object
- */
- public Object getConstantValue( ConstantPool cp ) {
- return new Double(bytes);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to a Double object.
+ *
+ * @version $Id: ConstantDouble.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantDouble extends Constant implements ConstantObject {
+
+ private double bytes;
+
+
+ /**
+ * @param bytes Data
+ */
+ public ConstantDouble(double bytes) {
+ super(Constants.CONSTANT_Double);
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantDouble(ConstantDouble c) {
+ this(c.getBytes());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantDouble(DataInputStream file) throws IOException {
+ this(file.readDouble());
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantDouble(this);
+ }
+
+
+ /**
+ * Dump constant double to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeDouble(bytes);
+ }
+
+
+ /**
+ * @return data, i.e., 8 bytes.
+ */
+ public final double getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @param bytes the raw bytes that represent the double value
+ */
+ public final void setBytes( double bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return super.toString() + "(bytes = " + bytes + ")";
+ }
+
+
+ /** @return Double object
+ */
+ public Object getConstantValue( ConstantPool cp ) {
+ return new Double(bytes);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFieldref.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFieldref.java
index d06a59af..32ee762b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFieldref.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFieldref.java
@@ -1,70 +1,70 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a constant pool reference to a field.
- *
- * @version $Id: ConstantFieldref.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class ConstantFieldref extends ConstantCP {
-
- /**
- * Initialize from another object.
- */
- public ConstantFieldref(ConstantFieldref c) {
- super(Constants.CONSTANT_Fieldref, c.getClassIndex(), c.getNameAndTypeIndex());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file input stream
- * @throws IOException
- */
- ConstantFieldref(DataInputStream file) throws IOException {
- super(Constants.CONSTANT_Fieldref, file);
- }
-
-
- /**
- * @param class_index Reference to the class containing the Field
- * @param name_and_type_index and the Field signature
- */
- public ConstantFieldref(int class_index, int name_and_type_index) {
- super(Constants.CONSTANT_Fieldref, class_index, name_and_type_index);
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of Fields,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantFieldref(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a constant pool reference to a field.
+ *
+ * @version $Id: ConstantFieldref.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class ConstantFieldref extends ConstantCP {
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantFieldref(ConstantFieldref c) {
+ super(Constants.CONSTANT_Fieldref, c.getClassIndex(), c.getNameAndTypeIndex());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file input stream
+ * @throws IOException
+ */
+ ConstantFieldref(DataInputStream file) throws IOException {
+ super(Constants.CONSTANT_Fieldref, file);
+ }
+
+
+ /**
+ * @param class_index Reference to the class containing the Field
+ * @param name_and_type_index and the Field signature
+ */
+ public ConstantFieldref(int class_index, int name_and_type_index) {
+ super(Constants.CONSTANT_Fieldref, class_index, name_and_type_index);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of Fields,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantFieldref(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFloat.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFloat.java
index 023ff4c0..89864027 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFloat.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantFloat.java
@@ -1,121 +1,121 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to a float object.
- *
- * @version $Id: ConstantFloat.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantFloat extends Constant implements ConstantObject {
-
- private float bytes;
-
-
- /**
- * @param bytes Data
- */
- public ConstantFloat(float bytes) {
- super(Constants.CONSTANT_Float);
- this.bytes = bytes;
- }
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public ConstantFloat(ConstantFloat c) {
- this(c.getBytes());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantFloat(DataInputStream file) throws IOException {
- this(file.readFloat());
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantFloat(this);
- }
-
-
- /**
- * Dump constant float to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeFloat(bytes);
- }
-
-
- /**
- * @return data, i.e., 4 bytes.
- */
- public final float getBytes() {
- return bytes;
- }
-
-
- /**
- * @param bytes the raw bytes that represent this float
- */
- public final void setBytes( float bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return super.toString() + "(bytes = " + bytes + ")";
- }
-
-
- /** @return Float object
- */
- public Object getConstantValue( ConstantPool cp ) {
- return new Float(bytes);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to a float object.
+ *
+ * @version $Id: ConstantFloat.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantFloat extends Constant implements ConstantObject {
+
+ private float bytes;
+
+
+ /**
+ * @param bytes Data
+ */
+ public ConstantFloat(float bytes) {
+ super(Constants.CONSTANT_Float);
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public ConstantFloat(ConstantFloat c) {
+ this(c.getBytes());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantFloat(DataInputStream file) throws IOException {
+ this(file.readFloat());
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantFloat(this);
+ }
+
+
+ /**
+ * Dump constant float to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeFloat(bytes);
+ }
+
+
+ /**
+ * @return data, i.e., 4 bytes.
+ */
+ public final float getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @param bytes the raw bytes that represent this float
+ */
+ public final void setBytes( float bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return super.toString() + "(bytes = " + bytes + ")";
+ }
+
+
+ /** @return Float object
+ */
+ public Object getConstantValue( ConstantPool cp ) {
+ return new Float(bytes);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInteger.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInteger.java
index b4b8c347..158487ef 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInteger.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInteger.java
@@ -1,120 +1,120 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to an int object.
- *
- * @version $Id: ConstantInteger.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantInteger extends Constant implements ConstantObject {
-
- private int bytes;
-
-
- /**
- * @param bytes Data
- */
- public ConstantInteger(int bytes) {
- super(Constants.CONSTANT_Integer);
- this.bytes = bytes;
- }
-
-
- /**
- * Initialize from another object.
- */
- public ConstantInteger(ConstantInteger c) {
- this(c.getBytes());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantInteger(DataInputStream file) throws IOException {
- this(file.readInt());
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantInteger(this);
- }
-
-
- /**
- * Dump constant integer to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeInt(bytes);
- }
-
-
- /**
- * @return data, i.e., 4 bytes.
- */
- public final int getBytes() {
- return bytes;
- }
-
-
- /**
- * @param bytes the raw bytes that represent this integer
- */
- public final void setBytes( int bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return super.toString() + "(bytes = " + bytes + ")";
- }
-
-
- /** @return Integer object
- */
- public Object getConstantValue( ConstantPool cp ) {
- return new Integer(bytes);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to an int object.
+ *
+ * @version $Id: ConstantInteger.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantInteger extends Constant implements ConstantObject {
+
+ private int bytes;
+
+
+ /**
+ * @param bytes Data
+ */
+ public ConstantInteger(int bytes) {
+ super(Constants.CONSTANT_Integer);
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantInteger(ConstantInteger c) {
+ this(c.getBytes());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantInteger(DataInputStream file) throws IOException {
+ this(file.readInt());
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantInteger(this);
+ }
+
+
+ /**
+ * Dump constant integer to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeInt(bytes);
+ }
+
+
+ /**
+ * @return data, i.e., 4 bytes.
+ */
+ public final int getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @param bytes the raw bytes that represent this integer
+ */
+ public final void setBytes( int bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return super.toString() + "(bytes = " + bytes + ")";
+ }
+
+
+ /** @return Integer object
+ */
+ public Object getConstantValue( ConstantPool cp ) {
+ return new Integer(bytes);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInterfaceMethodref.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInterfaceMethodref.java
index 2a6d4373..fbcb5099 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInterfaceMethodref.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantInterfaceMethodref.java
@@ -1,70 +1,70 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a constant pool reference to an interface method.
- *
- * @version $Id: ConstantInterfaceMethodref.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class ConstantInterfaceMethodref extends ConstantCP {
-
- /**
- * Initialize from another object.
- */
- public ConstantInterfaceMethodref(ConstantInterfaceMethodref c) {
- super(Constants.CONSTANT_InterfaceMethodref, c.getClassIndex(), c.getNameAndTypeIndex());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file input stream
- * @throws IOException
- */
- ConstantInterfaceMethodref(DataInputStream file) throws IOException {
- super(Constants.CONSTANT_InterfaceMethodref, file);
- }
-
-
- /**
- * @param class_index Reference to the class containing the method
- * @param name_and_type_index and the method signature
- */
- public ConstantInterfaceMethodref(int class_index, int name_and_type_index) {
- super(Constants.CONSTANT_InterfaceMethodref, class_index, name_and_type_index);
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantInterfaceMethodref(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a constant pool reference to an interface method.
+ *
+ * @version $Id: ConstantInterfaceMethodref.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class ConstantInterfaceMethodref extends ConstantCP {
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantInterfaceMethodref(ConstantInterfaceMethodref c) {
+ super(Constants.CONSTANT_InterfaceMethodref, c.getClassIndex(), c.getNameAndTypeIndex());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file input stream
+ * @throws IOException
+ */
+ ConstantInterfaceMethodref(DataInputStream file) throws IOException {
+ super(Constants.CONSTANT_InterfaceMethodref, file);
+ }
+
+
+ /**
+ * @param class_index Reference to the class containing the method
+ * @param name_and_type_index and the method signature
+ */
+ public ConstantInterfaceMethodref(int class_index, int name_and_type_index) {
+ super(Constants.CONSTANT_InterfaceMethodref, class_index, name_and_type_index);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantInterfaceMethodref(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantLong.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantLong.java
index b950c636..5398c889 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantLong.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantLong.java
@@ -1,120 +1,120 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to a long object.
- *
- * @version $Id: ConstantLong.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantLong extends Constant implements ConstantObject {
-
- private long bytes;
-
-
- /**
- * @param bytes Data
- */
- public ConstantLong(long bytes) {
- super(Constants.CONSTANT_Long);
- this.bytes = bytes;
- }
-
-
- /**
- * Initialize from another object.
- */
- public ConstantLong(ConstantLong c) {
- this(c.getBytes());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantLong(DataInputStream file) throws IOException {
- this(file.readLong());
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantLong(this);
- }
-
-
- /**
- * Dump constant long to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeLong(bytes);
- }
-
-
- /**
- * @return data, i.e., 8 bytes.
- */
- public final long getBytes() {
- return bytes;
- }
-
-
- /**
- * @param bytes thr raw bytes that represent this long
- */
- public final void setBytes( long bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return super.toString() + "(bytes = " + bytes + ")";
- }
-
-
- /** @return Long object
- */
- public Object getConstantValue( ConstantPool cp ) {
- return new Long(bytes);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to a long object.
+ *
+ * @version $Id: ConstantLong.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantLong extends Constant implements ConstantObject {
+
+ private long bytes;
+
+
+ /**
+ * @param bytes Data
+ */
+ public ConstantLong(long bytes) {
+ super(Constants.CONSTANT_Long);
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantLong(ConstantLong c) {
+ this(c.getBytes());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantLong(DataInputStream file) throws IOException {
+ this(file.readLong());
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantLong(this);
+ }
+
+
+ /**
+ * Dump constant long to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeLong(bytes);
+ }
+
+
+ /**
+ * @return data, i.e., 8 bytes.
+ */
+ public final long getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @param bytes thr raw bytes that represent this long
+ */
+ public final void setBytes( long bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return super.toString() + "(bytes = " + bytes + ")";
+ }
+
+
+ /** @return Long object
+ */
+ public Object getConstantValue( ConstantPool cp ) {
+ return new Long(bytes);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantMethodref.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantMethodref.java
index 2bbc76db..c11827a1 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantMethodref.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantMethodref.java
@@ -1,70 +1,70 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a constant pool reference to a method.
- *
- * @version $Id: ConstantMethodref.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class ConstantMethodref extends ConstantCP {
-
- /**
- * Initialize from another object.
- */
- public ConstantMethodref(ConstantMethodref c) {
- super(Constants.CONSTANT_Methodref, c.getClassIndex(), c.getNameAndTypeIndex());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file input stream
- * @throws IOException
- */
- ConstantMethodref(DataInputStream file) throws IOException {
- super(Constants.CONSTANT_Methodref, file);
- }
-
-
- /**
- * @param class_index Reference to the class containing the method
- * @param name_and_type_index and the method signature
- */
- public ConstantMethodref(int class_index, int name_and_type_index) {
- super(Constants.CONSTANT_Methodref, class_index, name_and_type_index);
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantMethodref(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a constant pool reference to a method.
+ *
+ * @version $Id: ConstantMethodref.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class ConstantMethodref extends ConstantCP {
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantMethodref(ConstantMethodref c) {
+ super(Constants.CONSTANT_Methodref, c.getClassIndex(), c.getNameAndTypeIndex());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file input stream
+ * @throws IOException
+ */
+ ConstantMethodref(DataInputStream file) throws IOException {
+ super(Constants.CONSTANT_Methodref, file);
+ }
+
+
+ /**
+ * @param class_index Reference to the class containing the method
+ * @param name_and_type_index and the method signature
+ */
+ public ConstantMethodref(int class_index, int name_and_type_index) {
+ super(Constants.CONSTANT_Methodref, class_index, name_and_type_index);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantMethodref(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantNameAndType.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantNameAndType.java
index 2c6846f1..f6119204 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantNameAndType.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantNameAndType.java
@@ -1,149 +1,149 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to the name and signature
- * of a field or method.
- *
- * @version $Id: ConstantNameAndType.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantNameAndType extends Constant {
-
- private int name_index; // Name of field/method
- private int signature_index; // and its signature.
-
-
- /**
- * Initialize from another object.
- */
- public ConstantNameAndType(ConstantNameAndType c) {
- this(c.getNameIndex(), c.getSignatureIndex());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantNameAndType(DataInputStream file) throws IOException {
- this(file.readUnsignedShort(), file.readUnsignedShort());
- }
-
-
- /**
- * @param name_index Name of field/method
- * @param signature_index and its signature
- */
- public ConstantNameAndType(int name_index, int signature_index) {
- super(Constants.CONSTANT_NameAndType);
- this.name_index = name_index;
- this.signature_index = signature_index;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantNameAndType(this);
- }
-
-
- /**
- * Dump name and signature index to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeShort(name_index);
- file.writeShort(signature_index);
- }
-
-
- /**
- * @return Name index in constant pool of field/method name.
- */
- public final int getNameIndex() {
- return name_index;
- }
-
-
- /** @return name
- */
- public final String getName( ConstantPool cp ) {
- return cp.constantToString(getNameIndex(), Constants.CONSTANT_Utf8);
- }
-
-
- /**
- * @return Index in constant pool of field/method signature.
- */
- public final int getSignatureIndex() {
- return signature_index;
- }
-
-
- /** @return signature
- */
- public final String getSignature( ConstantPool cp ) {
- return cp.constantToString(getSignatureIndex(), Constants.CONSTANT_Utf8);
- }
-
-
- /**
- * @param name_index the name index of this constant
- */
- public final void setNameIndex( int name_index ) {
- this.name_index = name_index;
- }
-
-
- /**
- * @param signature_index the signature index in the constant pool of this type
- */
- public final void setSignatureIndex( int signature_index ) {
- this.signature_index = signature_index;
- }
-
-
- /**
- * @return String representation
- */
- public final String toString() {
- return super.toString() + "(name_index = " + name_index + ", signature_index = "
- + signature_index + ")";
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to the name and signature
+ * of a field or method.
+ *
+ * @version $Id: ConstantNameAndType.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantNameAndType extends Constant {
+
+ private int name_index; // Name of field/method
+ private int signature_index; // and its signature.
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantNameAndType(ConstantNameAndType c) {
+ this(c.getNameIndex(), c.getSignatureIndex());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantNameAndType(DataInputStream file) throws IOException {
+ this(file.readUnsignedShort(), file.readUnsignedShort());
+ }
+
+
+ /**
+ * @param name_index Name of field/method
+ * @param signature_index and its signature
+ */
+ public ConstantNameAndType(int name_index, int signature_index) {
+ super(Constants.CONSTANT_NameAndType);
+ this.name_index = name_index;
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantNameAndType(this);
+ }
+
+
+ /**
+ * Dump name and signature index to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeShort(name_index);
+ file.writeShort(signature_index);
+ }
+
+
+ /**
+ * @return Name index in constant pool of field/method name.
+ */
+ public final int getNameIndex() {
+ return name_index;
+ }
+
+
+ /** @return name
+ */
+ public final String getName( ConstantPool cp ) {
+ return cp.constantToString(getNameIndex(), Constants.CONSTANT_Utf8);
+ }
+
+
+ /**
+ * @return Index in constant pool of field/method signature.
+ */
+ public final int getSignatureIndex() {
+ return signature_index;
+ }
+
+
+ /** @return signature
+ */
+ public final String getSignature( ConstantPool cp ) {
+ return cp.constantToString(getSignatureIndex(), Constants.CONSTANT_Utf8);
+ }
+
+
+ /**
+ * @param name_index the name index of this constant
+ */
+ public final void setNameIndex( int name_index ) {
+ this.name_index = name_index;
+ }
+
+
+ /**
+ * @param signature_index the signature index in the constant pool of this type
+ */
+ public final void setSignatureIndex( int signature_index ) {
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return super.toString() + "(name_index = " + name_index + ", signature_index = "
+ + signature_index + ")";
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantObject.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantObject.java
index 10d611dd..d4843937 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantObject.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantObject.java
@@ -1,32 +1,32 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-/**
- * This interface denotes those constants that have a "natural" value,
- * such as ConstantLong, ConstantString, etc..
- *
- * @version $Id: ConstantObject.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public interface ConstantObject {
-
- /** @return object representing the constant, e.g., Long for ConstantLong
- */
- public abstract Object getConstantValue( ConstantPool cp );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+/**
+ * This interface denotes those constants that have a "natural" value,
+ * such as ConstantLong, ConstantString, etc..
+ *
+ * @version $Id: ConstantObject.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public interface ConstantObject {
+
+ /** @return object representing the constant, e.g., Long for ConstantLong
+ */
+ public abstract Object getConstantValue( ConstantPool cp );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantPool.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantPool.java
index 31216424..235f70ed 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantPool.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantPool.java
@@ -1,354 +1,354 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents the constant pool, i.e., a table of constants, of
- * a parsed classfile. It may contain null references, due to the JVM
- * specification that skips an entry after an 8-byte constant (double,
- * long) entry. Those interested in generating constant pools
- * programatically should see
- * ConstantPoolGen.
-
- * @version $Id: ConstantPool.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @see Constant
- * @see org.apache.bcel5_2_0.generic.ConstantPoolGen
- * @author M. Dahm
- */
-public class ConstantPool implements Cloneable, Node, Serializable {
-
- private int constant_pool_count;
- private Constant[] constant_pool;
-
-
- /**
- * @param constant_pool Array of constants
- */
- public ConstantPool(Constant[] constant_pool) {
- setConstantPool(constant_pool);
- }
-
-
- /**
- * Read constants from given file stream.
- *
- * @param file Input stream
- * @throws IOException
- * @throws ClassFormatException
- */
- ConstantPool(DataInputStream file) throws IOException, ClassFormatException {
- byte tag;
- constant_pool_count = file.readUnsignedShort();
- constant_pool = new Constant[constant_pool_count];
- /* constant_pool[0] is unused by the compiler and may be used freely
- * by the implementation.
- */
- for (int i = 1; i < constant_pool_count; i++) {
- constant_pool[i] = Constant.readConstant(file);
- /* Quote from the JVM specification:
- * "All eight byte constants take up two spots in the constant pool.
- * If this is the n'th byte in the constant pool, then the next item
- * will be numbered n+2"
- *
- * Thus we have to increment the index counter.
- */
- tag = constant_pool[i].getTag();
- if ((tag == Constants.CONSTANT_Double) || (tag == Constants.CONSTANT_Long)) {
- i++;
- }
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantPool(this);
- }
-
-
- /**
- * Resolve constant to a string representation.
- *
- * @param c Constant to be printed
- * @return String representation
- */
- public String constantToString( Constant c ) throws ClassFormatException {
- String str;
- int i;
- byte tag = c.getTag();
- switch (tag) {
- case Constants.CONSTANT_Class:
- i = ((ConstantClass) c).getNameIndex();
- c = getConstant(i, Constants.CONSTANT_Utf8);
- str = Utility.compactClassName(((ConstantUtf8) c).getBytes(), false);
- break;
- case Constants.CONSTANT_String:
- i = ((ConstantString) c).getStringIndex();
- c = getConstant(i, Constants.CONSTANT_Utf8);
- str = "\"" + escape(((ConstantUtf8) c).getBytes()) + "\"";
- break;
- case Constants.CONSTANT_Utf8:
- str = ((ConstantUtf8) c).getBytes();
- break;
- case Constants.CONSTANT_Double:
- str = "" + ((ConstantDouble) c).getBytes();
- break;
- case Constants.CONSTANT_Float:
- str = "" + ((ConstantFloat) c).getBytes();
- break;
- case Constants.CONSTANT_Long:
- str = "" + ((ConstantLong) c).getBytes();
- break;
- case Constants.CONSTANT_Integer:
- str = "" + ((ConstantInteger) c).getBytes();
- break;
- case Constants.CONSTANT_NameAndType:
- str = (constantToString(((ConstantNameAndType) c).getNameIndex(),
- Constants.CONSTANT_Utf8)
- + " " + constantToString(((ConstantNameAndType) c).getSignatureIndex(),
- Constants.CONSTANT_Utf8));
- break;
- case Constants.CONSTANT_InterfaceMethodref:
- case Constants.CONSTANT_Methodref:
- case Constants.CONSTANT_Fieldref:
- str = (constantToString(((ConstantCP) c).getClassIndex(), Constants.CONSTANT_Class)
- + "." + constantToString(((ConstantCP) c).getNameAndTypeIndex(),
- Constants.CONSTANT_NameAndType));
- break;
- default: // Never reached
- throw new RuntimeException("Unknown constant type " + tag);
- }
- return str;
- }
-
-
- private static final String escape( String str ) {
- int len = str.length();
- StringBuilder buf = new StringBuilder(len + 5);
- char[] ch = str.toCharArray();
- for (int i = 0; i < len; i++) {
- switch (ch[i]) {
- case '\n':
- buf.append("\\n");
- break;
- case '\r':
- buf.append("\\r");
- break;
- case '\t':
- buf.append("\\t");
- break;
- case '\b':
- buf.append("\\b");
- break;
- case '"':
- buf.append("\\\"");
- break;
- default:
- buf.append(ch[i]);
- }
- }
- return buf.toString();
- }
-
-
- /**
- * Retrieve constant at `index' from constant pool and resolve it to
- * a string representation.
- *
- * @param index of constant in constant pool
- * @param tag expected type
- * @return String representation
- */
- public String constantToString( int index, byte tag ) throws ClassFormatException {
- Constant c = getConstant(index, tag);
- return constantToString(c);
- }
-
-
- /**
- * Dump constant pool to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public void dump( DataOutputStream file ) throws IOException {
- file.writeShort(constant_pool_count);
- for (int i = 1; i < constant_pool_count; i++) {
- if (constant_pool[i] != null) {
- constant_pool[i].dump(file);
- }
- }
- }
-
-
- /**
- * Get constant from constant pool.
- *
- * @param index Index in constant pool
- * @return Constant value
- * @see Constant
- */
- public Constant getConstant( int index ) {
- if (index >= constant_pool.length || index < 0) {
- throw new ClassFormatException("Invalid constant pool reference: " + index
- + ". Constant pool size is: " + constant_pool.length);
- }
- return constant_pool[index];
- }
-
-
- /**
- * Get constant from constant pool and check whether it has the
- * expected type.
- *
- * @param index Index in constant pool
- * @param tag Tag of expected constant, i.e., its type
- * @return Constant value
- * @see Constant
- * @throws ClassFormatException
- */
- public Constant getConstant( int index, byte tag ) throws ClassFormatException {
- Constant c;
- c = getConstant(index);
- if (c == null) {
- throw new ClassFormatException("Constant pool at index " + index + " is null.");
- }
- if (c.getTag() != tag) {
- throw new ClassFormatException("Expected class `" + Constants.CONSTANT_NAMES[tag]
- + "' at index " + index + " and got " + c);
- }
- return c;
- }
-
-
- /**
- * @return Array of constants.
- * @see Constant
- */
- public Constant[] getConstantPool() {
- return constant_pool;
- }
-
-
- /**
- * Get string from constant pool and bypass the indirection of
- * `ConstantClass' and `ConstantString' objects. I.e. these classes have
- * an index field that points to another entry of the constant pool of
- * type `ConstantUtf8' which contains the real data.
- *
- * @param index Index in constant pool
- * @param tag Tag of expected constant, either ConstantClass or ConstantString
- * @return Contents of string reference
- * @see ConstantClass
- * @see ConstantString
- * @throws ClassFormatException
- */
- public String getConstantString( int index, byte tag ) throws ClassFormatException {
- Constant c;
- int i;
- c = getConstant(index, tag);
- /* This switch() is not that elegant, since the two classes have the
- * same contents, they just differ in the name of the index
- * field variable.
- * But we want to stick to the JVM naming conventions closely though
- * we could have solved these more elegantly by using the same
- * variable name or by subclassing.
- */
- switch (tag) {
- case Constants.CONSTANT_Class:
- i = ((ConstantClass) c).getNameIndex();
- break;
- case Constants.CONSTANT_String:
- i = ((ConstantString) c).getStringIndex();
- break;
- default:
- throw new RuntimeException("getConstantString called with illegal tag " + tag);
- }
- // Finally get the string from the constant pool
- c = getConstant(i, Constants.CONSTANT_Utf8);
- return ((ConstantUtf8) c).getBytes();
- }
-
-
- /**
- * @return Length of constant pool.
- */
- public int getLength() {
- return constant_pool_count;
- }
-
-
- /**
- * @param constant Constant to set
- */
- public void setConstant( int index, Constant constant ) {
- constant_pool[index] = constant;
- }
-
-
- /**
- * @param constant_pool
- */
- public void setConstantPool( Constant[] constant_pool ) {
- this.constant_pool = constant_pool;
- constant_pool_count = (constant_pool == null) ? 0 : constant_pool.length;
- }
-
-
- /**
- * @return String representation.
- */
- public String toString() {
- StringBuilder buf = new StringBuilder();
- for (int i = 1; i < constant_pool_count; i++) {
- buf.append(i).append(")").append(constant_pool[i]).append("\n");
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this constant pool
- */
- public ConstantPool copy() {
- ConstantPool c = null;
- try {
- c = (ConstantPool) clone();
- c.constant_pool = new Constant[constant_pool_count];
- for (int i = 1; i < constant_pool_count; i++) {
- if (constant_pool[i] != null) {
- c.constant_pool[i] = constant_pool[i].copy();
- }
- }
- } catch (CloneNotSupportedException e) {
- }
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents the constant pool, i.e., a table of constants, of
+ * a parsed classfile. It may contain null references, due to the JVM
+ * specification that skips an entry after an 8-byte constant (double,
+ * long) entry. Those interested in generating constant pools
+ * programatically should see
+ * ConstantPoolGen.
+
+ * @version $Id: ConstantPool.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @see Constant
+ * @see org.apache.bcel5_2_0.generic.ConstantPoolGen
+ * @author M. Dahm
+ */
+public class ConstantPool implements Cloneable, Node, Serializable {
+
+ private int constant_pool_count;
+ private Constant[] constant_pool;
+
+
+ /**
+ * @param constant_pool Array of constants
+ */
+ public ConstantPool(Constant[] constant_pool) {
+ setConstantPool(constant_pool);
+ }
+
+
+ /**
+ * Read constants from given file stream.
+ *
+ * @param file Input stream
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ ConstantPool(DataInputStream file) throws IOException, ClassFormatException {
+ byte tag;
+ constant_pool_count = file.readUnsignedShort();
+ constant_pool = new Constant[constant_pool_count];
+ /* constant_pool[0] is unused by the compiler and may be used freely
+ * by the implementation.
+ */
+ for (int i = 1; i < constant_pool_count; i++) {
+ constant_pool[i] = Constant.readConstant(file);
+ /* Quote from the JVM specification:
+ * "All eight byte constants take up two spots in the constant pool.
+ * If this is the n'th byte in the constant pool, then the next item
+ * will be numbered n+2"
+ *
+ * Thus we have to increment the index counter.
+ */
+ tag = constant_pool[i].getTag();
+ if ((tag == Constants.CONSTANT_Double) || (tag == Constants.CONSTANT_Long)) {
+ i++;
+ }
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantPool(this);
+ }
+
+
+ /**
+ * Resolve constant to a string representation.
+ *
+ * @param c Constant to be printed
+ * @return String representation
+ */
+ public String constantToString( Constant c ) throws ClassFormatException {
+ String str;
+ int i;
+ byte tag = c.getTag();
+ switch (tag) {
+ case Constants.CONSTANT_Class:
+ i = ((ConstantClass) c).getNameIndex();
+ c = getConstant(i, Constants.CONSTANT_Utf8);
+ str = Utility.compactClassName(((ConstantUtf8) c).getBytes(), false);
+ break;
+ case Constants.CONSTANT_String:
+ i = ((ConstantString) c).getStringIndex();
+ c = getConstant(i, Constants.CONSTANT_Utf8);
+ str = "\"" + escape(((ConstantUtf8) c).getBytes()) + "\"";
+ break;
+ case Constants.CONSTANT_Utf8:
+ str = ((ConstantUtf8) c).getBytes();
+ break;
+ case Constants.CONSTANT_Double:
+ str = "" + ((ConstantDouble) c).getBytes();
+ break;
+ case Constants.CONSTANT_Float:
+ str = "" + ((ConstantFloat) c).getBytes();
+ break;
+ case Constants.CONSTANT_Long:
+ str = "" + ((ConstantLong) c).getBytes();
+ break;
+ case Constants.CONSTANT_Integer:
+ str = "" + ((ConstantInteger) c).getBytes();
+ break;
+ case Constants.CONSTANT_NameAndType:
+ str = (constantToString(((ConstantNameAndType) c).getNameIndex(),
+ Constants.CONSTANT_Utf8)
+ + " " + constantToString(((ConstantNameAndType) c).getSignatureIndex(),
+ Constants.CONSTANT_Utf8));
+ break;
+ case Constants.CONSTANT_InterfaceMethodref:
+ case Constants.CONSTANT_Methodref:
+ case Constants.CONSTANT_Fieldref:
+ str = (constantToString(((ConstantCP) c).getClassIndex(), Constants.CONSTANT_Class)
+ + "." + constantToString(((ConstantCP) c).getNameAndTypeIndex(),
+ Constants.CONSTANT_NameAndType));
+ break;
+ default: // Never reached
+ throw new RuntimeException("Unknown constant type " + tag);
+ }
+ return str;
+ }
+
+
+ private static final String escape( String str ) {
+ int len = str.length();
+ StringBuilder buf = new StringBuilder(len + 5);
+ char[] ch = str.toCharArray();
+ for (int i = 0; i < len; i++) {
+ switch (ch[i]) {
+ case '\n':
+ buf.append("\\n");
+ break;
+ case '\r':
+ buf.append("\\r");
+ break;
+ case '\t':
+ buf.append("\\t");
+ break;
+ case '\b':
+ buf.append("\\b");
+ break;
+ case '"':
+ buf.append("\\\"");
+ break;
+ default:
+ buf.append(ch[i]);
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * Retrieve constant at `index' from constant pool and resolve it to
+ * a string representation.
+ *
+ * @param index of constant in constant pool
+ * @param tag expected type
+ * @return String representation
+ */
+ public String constantToString( int index, byte tag ) throws ClassFormatException {
+ Constant c = getConstant(index, tag);
+ return constantToString(c);
+ }
+
+
+ /**
+ * Dump constant pool to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(constant_pool_count);
+ for (int i = 1; i < constant_pool_count; i++) {
+ if (constant_pool[i] != null) {
+ constant_pool[i].dump(file);
+ }
+ }
+ }
+
+
+ /**
+ * Get constant from constant pool.
+ *
+ * @param index Index in constant pool
+ * @return Constant value
+ * @see Constant
+ */
+ public Constant getConstant( int index ) {
+ if (index >= constant_pool.length || index < 0) {
+ throw new ClassFormatException("Invalid constant pool reference: " + index
+ + ". Constant pool size is: " + constant_pool.length);
+ }
+ return constant_pool[index];
+ }
+
+
+ /**
+ * Get constant from constant pool and check whether it has the
+ * expected type.
+ *
+ * @param index Index in constant pool
+ * @param tag Tag of expected constant, i.e., its type
+ * @return Constant value
+ * @see Constant
+ * @throws ClassFormatException
+ */
+ public Constant getConstant( int index, byte tag ) throws ClassFormatException {
+ Constant c;
+ c = getConstant(index);
+ if (c == null) {
+ throw new ClassFormatException("Constant pool at index " + index + " is null.");
+ }
+ if (c.getTag() != tag) {
+ throw new ClassFormatException("Expected class `" + Constants.CONSTANT_NAMES[tag]
+ + "' at index " + index + " and got " + c);
+ }
+ return c;
+ }
+
+
+ /**
+ * @return Array of constants.
+ * @see Constant
+ */
+ public Constant[] getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * Get string from constant pool and bypass the indirection of
+ * `ConstantClass' and `ConstantString' objects. I.e. these classes have
+ * an index field that points to another entry of the constant pool of
+ * type `ConstantUtf8' which contains the real data.
+ *
+ * @param index Index in constant pool
+ * @param tag Tag of expected constant, either ConstantClass or ConstantString
+ * @return Contents of string reference
+ * @see ConstantClass
+ * @see ConstantString
+ * @throws ClassFormatException
+ */
+ public String getConstantString( int index, byte tag ) throws ClassFormatException {
+ Constant c;
+ int i;
+ c = getConstant(index, tag);
+ /* This switch() is not that elegant, since the two classes have the
+ * same contents, they just differ in the name of the index
+ * field variable.
+ * But we want to stick to the JVM naming conventions closely though
+ * we could have solved these more elegantly by using the same
+ * variable name or by subclassing.
+ */
+ switch (tag) {
+ case Constants.CONSTANT_Class:
+ i = ((ConstantClass) c).getNameIndex();
+ break;
+ case Constants.CONSTANT_String:
+ i = ((ConstantString) c).getStringIndex();
+ break;
+ default:
+ throw new RuntimeException("getConstantString called with illegal tag " + tag);
+ }
+ // Finally get the string from the constant pool
+ c = getConstant(i, Constants.CONSTANT_Utf8);
+ return ((ConstantUtf8) c).getBytes();
+ }
+
+
+ /**
+ * @return Length of constant pool.
+ */
+ public int getLength() {
+ return constant_pool_count;
+ }
+
+
+ /**
+ * @param constant Constant to set
+ */
+ public void setConstant( int index, Constant constant ) {
+ constant_pool[index] = constant;
+ }
+
+
+ /**
+ * @param constant_pool
+ */
+ public void setConstantPool( Constant[] constant_pool ) {
+ this.constant_pool = constant_pool;
+ constant_pool_count = (constant_pool == null) ? 0 : constant_pool.length;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public String toString() {
+ StringBuilder buf = new StringBuilder();
+ for (int i = 1; i < constant_pool_count; i++) {
+ buf.append(i).append(")").append(constant_pool[i]).append("\n");
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this constant pool
+ */
+ public ConstantPool copy() {
+ ConstantPool c = null;
+ try {
+ c = (ConstantPool) clone();
+ c.constant_pool = new Constant[constant_pool_count];
+ for (int i = 1; i < constant_pool_count; i++) {
+ if (constant_pool[i] != null) {
+ c.constant_pool[i] = constant_pool[i].copy();
+ }
+ }
+ } catch (CloneNotSupportedException e) {
+ }
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantString.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantString.java
index be5cbdbd..38f6ce1f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantString.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantString.java
@@ -1,128 +1,128 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to a String object.
- *
- * @version $Id: ConstantString.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantString extends Constant implements ConstantObject {
-
- private int string_index; // Identical to ConstantClass except for this name
-
-
- /**
- * Initialize from another object.
- */
- public ConstantString(ConstantString c) {
- this(c.getStringIndex());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantString(DataInputStream file) throws IOException {
- this(file.readUnsignedShort());
- }
-
-
- /**
- * @param string_index Index of Constant_Utf8 in constant pool
- */
- public ConstantString(int string_index) {
- super(Constants.CONSTANT_String);
- this.string_index = string_index;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantString(this);
- }
-
-
- /**
- * Dump constant field reference to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeShort(string_index);
- }
-
-
- /**
- * @return Index in constant pool of the string (ConstantUtf8).
- */
- public final int getStringIndex() {
- return string_index;
- }
-
-
- /**
- * @param string_index the index into the constant of the string value
- */
- public final void setStringIndex( int string_index ) {
- this.string_index = string_index;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return super.toString() + "(string_index = " + string_index + ")";
- }
-
-
- /** @return String object
- */
- public Object getConstantValue( ConstantPool cp ) {
- Constant c = cp.getConstant(string_index, Constants.CONSTANT_Utf8);
- return ((ConstantUtf8) c).getBytes();
- }
-
-
- /** @return dereferenced string
- */
- public String getBytes( ConstantPool cp ) {
- return (String) getConstantValue(cp);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to a String object.
+ *
+ * @version $Id: ConstantString.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantString extends Constant implements ConstantObject {
+
+ private int string_index; // Identical to ConstantClass except for this name
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantString(ConstantString c) {
+ this(c.getStringIndex());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantString(DataInputStream file) throws IOException {
+ this(file.readUnsignedShort());
+ }
+
+
+ /**
+ * @param string_index Index of Constant_Utf8 in constant pool
+ */
+ public ConstantString(int string_index) {
+ super(Constants.CONSTANT_String);
+ this.string_index = string_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantString(this);
+ }
+
+
+ /**
+ * Dump constant field reference to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeShort(string_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of the string (ConstantUtf8).
+ */
+ public final int getStringIndex() {
+ return string_index;
+ }
+
+
+ /**
+ * @param string_index the index into the constant of the string value
+ */
+ public final void setStringIndex( int string_index ) {
+ this.string_index = string_index;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return super.toString() + "(string_index = " + string_index + ")";
+ }
+
+
+ /** @return String object
+ */
+ public Object getConstantValue( ConstantPool cp ) {
+ Constant c = cp.getConstant(string_index, Constants.CONSTANT_Utf8);
+ return ((ConstantUtf8) c).getBytes();
+ }
+
+
+ /** @return dereferenced string
+ */
+ public String getBytes( ConstantPool cp ) {
+ return (String) getConstantValue(cp);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantUtf8.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantUtf8.java
index fcd833ec..eecee207 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantUtf8.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantUtf8.java
@@ -1,117 +1,117 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from the abstract
- * Constant class
- * and represents a reference to a Utf8 encoded string.
- *
- * @version $Id: ConstantUtf8.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public final class ConstantUtf8 extends Constant {
-
- private String bytes;
-
-
- /**
- * Initialize from another object.
- */
- public ConstantUtf8(ConstantUtf8 c) {
- this(c.getBytes());
- }
-
-
- /**
- * Initialize instance from file data.
- *
- * @param file Input stream
- * @throws IOException
- */
- ConstantUtf8(DataInputStream file) throws IOException {
- super(Constants.CONSTANT_Utf8);
- bytes = file.readUTF();
- }
-
-
- /**
- * @param bytes Data
- */
- public ConstantUtf8(String bytes) {
- super(Constants.CONSTANT_Utf8);
- if (bytes == null) {
- throw new IllegalArgumentException("bytes must not be null!");
- }
- this.bytes = bytes;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantUtf8(this);
- }
-
-
- /**
- * Dump String in Utf8 format to file stream.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(tag);
- file.writeUTF(bytes);
- }
-
-
- /**
- * @return Data converted to string.
- */
- public final String getBytes() {
- return bytes;
- }
-
-
- /**
- * @param bytes the raw bytes of this Utf-8
- */
- public final void setBytes( String bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return String representation
- */
- public final String toString() {
- return super.toString() + "(\"" + Utility.replace(bytes, "\n", "\\n") + "\")";
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from the abstract
+ * Constant class
+ * and represents a reference to a Utf8 encoded string.
+ *
+ * @version $Id: ConstantUtf8.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public final class ConstantUtf8 extends Constant {
+
+ private String bytes;
+
+
+ /**
+ * Initialize from another object.
+ */
+ public ConstantUtf8(ConstantUtf8 c) {
+ this(c.getBytes());
+ }
+
+
+ /**
+ * Initialize instance from file data.
+ *
+ * @param file Input stream
+ * @throws IOException
+ */
+ ConstantUtf8(DataInputStream file) throws IOException {
+ super(Constants.CONSTANT_Utf8);
+ bytes = file.readUTF();
+ }
+
+
+ /**
+ * @param bytes Data
+ */
+ public ConstantUtf8(String bytes) {
+ super(Constants.CONSTANT_Utf8);
+ if (bytes == null) {
+ throw new IllegalArgumentException("bytes must not be null!");
+ }
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantUtf8(this);
+ }
+
+
+ /**
+ * Dump String in Utf8 format to file stream.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(tag);
+ file.writeUTF(bytes);
+ }
+
+
+ /**
+ * @return Data converted to string.
+ */
+ public final String getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @param bytes the raw bytes of this Utf-8
+ */
+ public final void setBytes( String bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return super.toString() + "(\"" + Utility.replace(bytes, "\n", "\\n") + "\")";
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantValue.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantValue.java
index 671d9b44..a3948fad 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantValue.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ConstantValue.java
@@ -1,156 +1,156 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from Attribute and represents a constant
- * value, i.e., a default value for initializing a class field.
- * This class is instantiated by the Attribute.readAttribute() method.
- *
- * @version $Id: ConstantValue.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- */
-public final class ConstantValue extends Attribute {
-
- private int constantvalue_index;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public ConstantValue(ConstantValue c) {
- this(c.getNameIndex(), c.getLength(), c.getConstantValueIndex(), c.getConstantPool());
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Name index in constant pool
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- ConstantValue(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, file.readUnsignedShort(), constant_pool);
- }
-
-
- /**
- * @param name_index Name index in constant pool
- * @param length Content length in bytes
- * @param constantvalue_index Index in constant pool
- * @param constant_pool Array of constants
- */
- public ConstantValue(int name_index, int length, int constantvalue_index,
- ConstantPool constant_pool) {
- super(Constants.ATTR_CONSTANT_VALUE, name_index, length, constant_pool);
- this.constantvalue_index = constantvalue_index;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitConstantValue(this);
- }
-
-
- /**
- * Dump constant value attribute to file stream on binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(constantvalue_index);
- }
-
-
- /**
- * @return Index in constant pool of constant value.
- */
- public final int getConstantValueIndex() {
- return constantvalue_index;
- }
-
-
- /**
- * @param constantvalue_index the index info the constant pool of this constant value
- */
- public final void setConstantValueIndex( int constantvalue_index ) {
- this.constantvalue_index = constantvalue_index;
- }
-
-
- /**
- * @return String representation of constant value.
- */
- public final String toString() {
- Constant c = constant_pool.getConstant(constantvalue_index);
- String buf;
- int i;
- // Print constant to string depending on its type
- switch (c.getTag()) {
- case Constants.CONSTANT_Long:
- buf = "" + ((ConstantLong) c).getBytes();
- break;
- case Constants.CONSTANT_Float:
- buf = "" + ((ConstantFloat) c).getBytes();
- break;
- case Constants.CONSTANT_Double:
- buf = "" + ((ConstantDouble) c).getBytes();
- break;
- case Constants.CONSTANT_Integer:
- buf = "" + ((ConstantInteger) c).getBytes();
- break;
- case Constants.CONSTANT_String:
- i = ((ConstantString) c).getStringIndex();
- c = constant_pool.getConstant(i, Constants.CONSTANT_Utf8);
- buf = "\"" + Utility.convertString(((ConstantUtf8) c).getBytes()) + "\"";
- break;
- default:
- throw new IllegalStateException("Type of ConstValue invalid: " + c);
- }
- return buf;
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- ConstantValue c = (ConstantValue) clone();
- c.constant_pool = _constant_pool;
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from Attribute and represents a constant
+ * value, i.e., a default value for initializing a class field.
+ * This class is instantiated by the Attribute.readAttribute() method.
+ *
+ * @version $Id: ConstantValue.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ */
+public final class ConstantValue extends Attribute {
+
+ private int constantvalue_index;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public ConstantValue(ConstantValue c) {
+ this(c.getNameIndex(), c.getLength(), c.getConstantValueIndex(), c.getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Name index in constant pool
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ ConstantValue(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param name_index Name index in constant pool
+ * @param length Content length in bytes
+ * @param constantvalue_index Index in constant pool
+ * @param constant_pool Array of constants
+ */
+ public ConstantValue(int name_index, int length, int constantvalue_index,
+ ConstantPool constant_pool) {
+ super(Constants.ATTR_CONSTANT_VALUE, name_index, length, constant_pool);
+ this.constantvalue_index = constantvalue_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitConstantValue(this);
+ }
+
+
+ /**
+ * Dump constant value attribute to file stream on binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(constantvalue_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of constant value.
+ */
+ public final int getConstantValueIndex() {
+ return constantvalue_index;
+ }
+
+
+ /**
+ * @param constantvalue_index the index info the constant pool of this constant value
+ */
+ public final void setConstantValueIndex( int constantvalue_index ) {
+ this.constantvalue_index = constantvalue_index;
+ }
+
+
+ /**
+ * @return String representation of constant value.
+ */
+ public final String toString() {
+ Constant c = constant_pool.getConstant(constantvalue_index);
+ String buf;
+ int i;
+ // Print constant to string depending on its type
+ switch (c.getTag()) {
+ case Constants.CONSTANT_Long:
+ buf = "" + ((ConstantLong) c).getBytes();
+ break;
+ case Constants.CONSTANT_Float:
+ buf = "" + ((ConstantFloat) c).getBytes();
+ break;
+ case Constants.CONSTANT_Double:
+ buf = "" + ((ConstantDouble) c).getBytes();
+ break;
+ case Constants.CONSTANT_Integer:
+ buf = "" + ((ConstantInteger) c).getBytes();
+ break;
+ case Constants.CONSTANT_String:
+ i = ((ConstantString) c).getStringIndex();
+ c = constant_pool.getConstant(i, Constants.CONSTANT_Utf8);
+ buf = "\"" + Utility.convertString(((ConstantUtf8) c).getBytes()) + "\"";
+ break;
+ default:
+ throw new IllegalStateException("Type of ConstValue invalid: " + c);
+ }
+ return buf;
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ ConstantValue c = (ConstantValue) clone();
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Deprecated.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Deprecated.java
index 0623063e..a12cbf87 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Deprecated.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Deprecated.java
@@ -1,141 +1,141 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from Attribute and denotes that this is a
- * deprecated method.
- * It is instantiated from the Attribute.readAttribute() method.
- *
- * @version $Id: Deprecated.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- */
-public final class Deprecated extends Attribute {
-
- private byte[] bytes;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public Deprecated(Deprecated c) {
- this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
- }
-
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param bytes Attribute contents
- * @param constant_pool Array of constants
- */
- public Deprecated(int name_index, int length, byte[] bytes, ConstantPool constant_pool) {
- super(Constants.ATTR_DEPRECATED, name_index, length, constant_pool);
- this.bytes = bytes;
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- Deprecated(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (byte[]) null, constant_pool);
- if (length > 0) {
- bytes = new byte[length];
- file.readFully(bytes);
- System.err.println("Deprecated attribute with length > 0");
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitDeprecated(this);
- }
-
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- if (length > 0) {
- file.write(bytes, 0, length);
- }
- }
-
-
- /**
- * @return data bytes.
- */
- public final byte[] getBytes() {
- return bytes;
- }
-
-
- /**
- * @param bytes the raw bytes that represents this byte array
- */
- public final void setBytes( byte[] bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return attribute name
- */
- public final String toString() {
- return Constants.ATTRIBUTE_NAMES[Constants.ATTR_DEPRECATED];
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- Deprecated c = (Deprecated) clone();
- if (bytes != null) {
- c.bytes = new byte[bytes.length];
- System.arraycopy(bytes, 0, c.bytes, 0, bytes.length);
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from Attribute and denotes that this is a
+ * deprecated method.
+ * It is instantiated from the Attribute.readAttribute() method.
+ *
+ * @version $Id: Deprecated.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ */
+public final class Deprecated extends Attribute {
+
+ private byte[] bytes;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public Deprecated(Deprecated c) {
+ this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param bytes Attribute contents
+ * @param constant_pool Array of constants
+ */
+ public Deprecated(int name_index, int length, byte[] bytes, ConstantPool constant_pool) {
+ super(Constants.ATTR_DEPRECATED, name_index, length, constant_pool);
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ Deprecated(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (byte[]) null, constant_pool);
+ if (length > 0) {
+ bytes = new byte[length];
+ file.readFully(bytes);
+ System.err.println("Deprecated attribute with length > 0");
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitDeprecated(this);
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ if (length > 0) {
+ file.write(bytes, 0, length);
+ }
+ }
+
+
+ /**
+ * @return data bytes.
+ */
+ public final byte[] getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @param bytes the raw bytes that represents this byte array
+ */
+ public final void setBytes( byte[] bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return attribute name
+ */
+ public final String toString() {
+ return Constants.ATTRIBUTE_NAMES[Constants.ATTR_DEPRECATED];
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ Deprecated c = (Deprecated) clone();
+ if (bytes != null) {
+ c.bytes = new byte[bytes.length];
+ System.arraycopy(bytes, 0, c.bytes, 0, bytes.length);
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/DescendingVisitor.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/DescendingVisitor.java
index a1ec7938..69e44665 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/DescendingVisitor.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/DescendingVisitor.java
@@ -1,356 +1,356 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.util.Stack;
-
-/**
- * Traverses a JavaClass with another Visitor object 'piggy-backed'
- * that is applied to all components of a JavaClass object. I.e. this
- * class supplies the traversal strategy, other classes can make use
- * of it.
- *
- * @version $Id: DescendingVisitor.java 388707 2006-03-25 05:40:28Z tcurdt $
- * @author M. Dahm
- */
-public class DescendingVisitor implements Visitor {
-
- private JavaClass clazz;
- private Visitor visitor;
- private Stack stack = new Stack();
-
-
- /** @return container of current entitity, i.e., predecessor during traversal
- */
- public Object predecessor() {
- return predecessor(0);
- }
-
-
- /**
- * @param level nesting level, i.e., 0 returns the direct predecessor
- * @return container of current entitity, i.e., predecessor during traversal
- */
- public Object predecessor( int level ) {
- int size = stack.size();
- if ((size < 2) || (level < 0)) {
- return null;
- } else {
- return stack.elementAt(size - (level + 2)); // size - 1 == current
- }
- }
-
-
- /** @return current object
- */
- public Object current() {
- return stack.peek();
- }
-
-
- /**
- * @param clazz Class to traverse
- * @param visitor visitor object to apply to all components
- */
- public DescendingVisitor(JavaClass clazz, Visitor visitor) {
- this.clazz = clazz;
- this.visitor = visitor;
- }
-
-
- /**
- * Start traversal.
- */
- public void visit() {
- clazz.accept(this);
- }
-
-
- public void visitJavaClass( JavaClass _clazz ) {
- stack.push(_clazz);
- _clazz.accept(visitor);
- Field[] fields = _clazz.getFields();
- for (int i = 0; i < fields.length; i++) {
- fields[i].accept(this);
- }
- Method[] methods = _clazz.getMethods();
- for (int i = 0; i < methods.length; i++) {
- methods[i].accept(this);
- }
- Attribute[] attributes = _clazz.getAttributes();
- for (int i = 0; i < attributes.length; i++) {
- attributes[i].accept(this);
- }
- _clazz.getConstantPool().accept(this);
- stack.pop();
- }
-
-
- public void visitField( Field field ) {
- stack.push(field);
- field.accept(visitor);
- Attribute[] attributes = field.getAttributes();
- for (int i = 0; i < attributes.length; i++) {
- attributes[i].accept(this);
- }
- stack.pop();
- }
-
-
- public void visitConstantValue( ConstantValue cv ) {
- stack.push(cv);
- cv.accept(visitor);
- stack.pop();
- }
-
-
- public void visitMethod( Method method ) {
- stack.push(method);
- method.accept(visitor);
- Attribute[] attributes = method.getAttributes();
- for (int i = 0; i < attributes.length; i++) {
- attributes[i].accept(this);
- }
- stack.pop();
- }
-
-
- public void visitExceptionTable( ExceptionTable table ) {
- stack.push(table);
- table.accept(visitor);
- stack.pop();
- }
-
-
- public void visitCode( Code code ) {
- stack.push(code);
- code.accept(visitor);
- CodeException[] table = code.getExceptionTable();
- for (int i = 0; i < table.length; i++) {
- table[i].accept(this);
- }
- Attribute[] attributes = code.getAttributes();
- for (int i = 0; i < attributes.length; i++) {
- attributes[i].accept(this);
- }
- stack.pop();
- }
-
-
- public void visitCodeException( CodeException ce ) {
- stack.push(ce);
- ce.accept(visitor);
- stack.pop();
- }
-
-
- public void visitLineNumberTable( LineNumberTable table ) {
- stack.push(table);
- table.accept(visitor);
- LineNumber[] numbers = table.getLineNumberTable();
- for (int i = 0; i < numbers.length; i++) {
- numbers[i].accept(this);
- }
- stack.pop();
- }
-
-
- public void visitLineNumber( LineNumber number ) {
- stack.push(number);
- number.accept(visitor);
- stack.pop();
- }
-
-
- public void visitLocalVariableTable( LocalVariableTable table ) {
- stack.push(table);
- table.accept(visitor);
- LocalVariable[] vars = table.getLocalVariableTable();
- for (int i = 0; i < vars.length; i++) {
- vars[i].accept(this);
- }
- stack.pop();
- }
-
-
- public void visitStackMap( StackMap table ) {
- stack.push(table);
- table.accept(visitor);
- StackMapEntry[] vars = table.getStackMap();
- for (int i = 0; i < vars.length; i++) {
- vars[i].accept(this);
- }
- stack.pop();
- }
-
-
- public void visitStackMapEntry( StackMapEntry var ) {
- stack.push(var);
- var.accept(visitor);
- stack.pop();
- }
-
-
- public void visitLocalVariable( LocalVariable var ) {
- stack.push(var);
- var.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantPool( ConstantPool cp ) {
- stack.push(cp);
- cp.accept(visitor);
- Constant[] constants = cp.getConstantPool();
- for (int i = 1; i < constants.length; i++) {
- if (constants[i] != null) {
- constants[i].accept(this);
- }
- }
- stack.pop();
- }
-
-
- public void visitConstantClass( ConstantClass constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantDouble( ConstantDouble constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantFieldref( ConstantFieldref constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantFloat( ConstantFloat constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantInteger( ConstantInteger constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantInterfaceMethodref( ConstantInterfaceMethodref constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantLong( ConstantLong constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantMethodref( ConstantMethodref constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantNameAndType( ConstantNameAndType constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantString( ConstantString constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitConstantUtf8( ConstantUtf8 constant ) {
- stack.push(constant);
- constant.accept(visitor);
- stack.pop();
- }
-
-
- public void visitInnerClasses( InnerClasses ic ) {
- stack.push(ic);
- ic.accept(visitor);
- InnerClass[] ics = ic.getInnerClasses();
- for (int i = 0; i < ics.length; i++) {
- ics[i].accept(this);
- }
- stack.pop();
- }
-
-
- public void visitInnerClass( InnerClass inner ) {
- stack.push(inner);
- inner.accept(visitor);
- stack.pop();
- }
-
-
- public void visitDeprecated( Deprecated attribute ) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
-
- public void visitSignature( Signature attribute ) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
-
- public void visitSourceFile( SourceFile attribute ) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
-
- public void visitSynthetic( Synthetic attribute ) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-
-
- public void visitUnknown( Unknown attribute ) {
- stack.push(attribute);
- attribute.accept(visitor);
- stack.pop();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.util.Stack;
+
+/**
+ * Traverses a JavaClass with another Visitor object 'piggy-backed'
+ * that is applied to all components of a JavaClass object. I.e. this
+ * class supplies the traversal strategy, other classes can make use
+ * of it.
+ *
+ * @version $Id: DescendingVisitor.java 388707 2006-03-25 05:40:28Z tcurdt $
+ * @author M. Dahm
+ */
+public class DescendingVisitor implements Visitor {
+
+ private JavaClass clazz;
+ private Visitor visitor;
+ private Stack stack = new Stack();
+
+
+ /** @return container of current entitity, i.e., predecessor during traversal
+ */
+ public Object predecessor() {
+ return predecessor(0);
+ }
+
+
+ /**
+ * @param level nesting level, i.e., 0 returns the direct predecessor
+ * @return container of current entitity, i.e., predecessor during traversal
+ */
+ public Object predecessor( int level ) {
+ int size = stack.size();
+ if ((size < 2) || (level < 0)) {
+ return null;
+ } else {
+ return stack.elementAt(size - (level + 2)); // size - 1 == current
+ }
+ }
+
+
+ /** @return current object
+ */
+ public Object current() {
+ return stack.peek();
+ }
+
+
+ /**
+ * @param clazz Class to traverse
+ * @param visitor visitor object to apply to all components
+ */
+ public DescendingVisitor(JavaClass clazz, Visitor visitor) {
+ this.clazz = clazz;
+ this.visitor = visitor;
+ }
+
+
+ /**
+ * Start traversal.
+ */
+ public void visit() {
+ clazz.accept(this);
+ }
+
+
+ public void visitJavaClass( JavaClass _clazz ) {
+ stack.push(_clazz);
+ _clazz.accept(visitor);
+ Field[] fields = _clazz.getFields();
+ for (int i = 0; i < fields.length; i++) {
+ fields[i].accept(this);
+ }
+ Method[] methods = _clazz.getMethods();
+ for (int i = 0; i < methods.length; i++) {
+ methods[i].accept(this);
+ }
+ Attribute[] attributes = _clazz.getAttributes();
+ for (int i = 0; i < attributes.length; i++) {
+ attributes[i].accept(this);
+ }
+ _clazz.getConstantPool().accept(this);
+ stack.pop();
+ }
+
+
+ public void visitField( Field field ) {
+ stack.push(field);
+ field.accept(visitor);
+ Attribute[] attributes = field.getAttributes();
+ for (int i = 0; i < attributes.length; i++) {
+ attributes[i].accept(this);
+ }
+ stack.pop();
+ }
+
+
+ public void visitConstantValue( ConstantValue cv ) {
+ stack.push(cv);
+ cv.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitMethod( Method method ) {
+ stack.push(method);
+ method.accept(visitor);
+ Attribute[] attributes = method.getAttributes();
+ for (int i = 0; i < attributes.length; i++) {
+ attributes[i].accept(this);
+ }
+ stack.pop();
+ }
+
+
+ public void visitExceptionTable( ExceptionTable table ) {
+ stack.push(table);
+ table.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitCode( Code code ) {
+ stack.push(code);
+ code.accept(visitor);
+ CodeException[] table = code.getExceptionTable();
+ for (int i = 0; i < table.length; i++) {
+ table[i].accept(this);
+ }
+ Attribute[] attributes = code.getAttributes();
+ for (int i = 0; i < attributes.length; i++) {
+ attributes[i].accept(this);
+ }
+ stack.pop();
+ }
+
+
+ public void visitCodeException( CodeException ce ) {
+ stack.push(ce);
+ ce.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitLineNumberTable( LineNumberTable table ) {
+ stack.push(table);
+ table.accept(visitor);
+ LineNumber[] numbers = table.getLineNumberTable();
+ for (int i = 0; i < numbers.length; i++) {
+ numbers[i].accept(this);
+ }
+ stack.pop();
+ }
+
+
+ public void visitLineNumber( LineNumber number ) {
+ stack.push(number);
+ number.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitLocalVariableTable( LocalVariableTable table ) {
+ stack.push(table);
+ table.accept(visitor);
+ LocalVariable[] vars = table.getLocalVariableTable();
+ for (int i = 0; i < vars.length; i++) {
+ vars[i].accept(this);
+ }
+ stack.pop();
+ }
+
+
+ public void visitStackMap( StackMap table ) {
+ stack.push(table);
+ table.accept(visitor);
+ StackMapEntry[] vars = table.getStackMap();
+ for (int i = 0; i < vars.length; i++) {
+ vars[i].accept(this);
+ }
+ stack.pop();
+ }
+
+
+ public void visitStackMapEntry( StackMapEntry var ) {
+ stack.push(var);
+ var.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitLocalVariable( LocalVariable var ) {
+ stack.push(var);
+ var.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantPool( ConstantPool cp ) {
+ stack.push(cp);
+ cp.accept(visitor);
+ Constant[] constants = cp.getConstantPool();
+ for (int i = 1; i < constants.length; i++) {
+ if (constants[i] != null) {
+ constants[i].accept(this);
+ }
+ }
+ stack.pop();
+ }
+
+
+ public void visitConstantClass( ConstantClass constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantDouble( ConstantDouble constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantFieldref( ConstantFieldref constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantFloat( ConstantFloat constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantInteger( ConstantInteger constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantInterfaceMethodref( ConstantInterfaceMethodref constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantLong( ConstantLong constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantMethodref( ConstantMethodref constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantNameAndType( ConstantNameAndType constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantString( ConstantString constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitConstantUtf8( ConstantUtf8 constant ) {
+ stack.push(constant);
+ constant.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitInnerClasses( InnerClasses ic ) {
+ stack.push(ic);
+ ic.accept(visitor);
+ InnerClass[] ics = ic.getInnerClasses();
+ for (int i = 0; i < ics.length; i++) {
+ ics[i].accept(this);
+ }
+ stack.pop();
+ }
+
+
+ public void visitInnerClass( InnerClass inner ) {
+ stack.push(inner);
+ inner.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitDeprecated( Deprecated attribute ) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitSignature( Signature attribute ) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitSourceFile( SourceFile attribute ) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitSynthetic( Synthetic attribute ) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+
+
+ public void visitUnknown( Unknown attribute ) {
+ stack.push(attribute);
+ attribute.accept(visitor);
+ stack.pop();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/EmptyVisitor.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/EmptyVisitor.java
index 340c4edf..9093b216 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/EmptyVisitor.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/EmptyVisitor.java
@@ -1,161 +1,161 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-/**
- * Visitor with empty method bodies, can be extended and used in conjunction with the
- * DescendingVisitor class, e.g.
- *
- * By courtesy of David Spencer.
- *
- * @see DescendingVisitor
- * @version $Id: EmptyVisitor.java 388707 2006-03-25 05:40:28Z tcurdt $
- *
- */
-public class EmptyVisitor implements Visitor {
-
- protected EmptyVisitor() {
- }
-
-
- public void visitCode( Code obj ) {
- }
-
-
- public void visitCodeException( CodeException obj ) {
- }
-
-
- public void visitConstantClass( ConstantClass obj ) {
- }
-
-
- public void visitConstantDouble( ConstantDouble obj ) {
- }
-
-
- public void visitConstantFieldref( ConstantFieldref obj ) {
- }
-
-
- public void visitConstantFloat( ConstantFloat obj ) {
- }
-
-
- public void visitConstantInteger( ConstantInteger obj ) {
- }
-
-
- public void visitConstantInterfaceMethodref( ConstantInterfaceMethodref obj ) {
- }
-
-
- public void visitConstantLong( ConstantLong obj ) {
- }
-
-
- public void visitConstantMethodref( ConstantMethodref obj ) {
- }
-
-
- public void visitConstantNameAndType( ConstantNameAndType obj ) {
- }
-
-
- public void visitConstantPool( ConstantPool obj ) {
- }
-
-
- public void visitConstantString( ConstantString obj ) {
- }
-
-
- public void visitConstantUtf8( ConstantUtf8 obj ) {
- }
-
-
- public void visitConstantValue( ConstantValue obj ) {
- }
-
-
- public void visitDeprecated( Deprecated obj ) {
- }
-
-
- public void visitExceptionTable( ExceptionTable obj ) {
- }
-
-
- public void visitField( Field obj ) {
- }
-
-
- public void visitInnerClass( InnerClass obj ) {
- }
-
-
- public void visitInnerClasses( InnerClasses obj ) {
- }
-
-
- public void visitJavaClass( JavaClass obj ) {
- }
-
-
- public void visitLineNumber( LineNumber obj ) {
- }
-
-
- public void visitLineNumberTable( LineNumberTable obj ) {
- }
-
-
- public void visitLocalVariable( LocalVariable obj ) {
- }
-
-
- public void visitLocalVariableTable( LocalVariableTable obj ) {
- }
-
-
- public void visitMethod( Method obj ) {
- }
-
-
- public void visitSignature( Signature obj ) {
- }
-
-
- public void visitSourceFile( SourceFile obj ) {
- }
-
-
- public void visitSynthetic( Synthetic obj ) {
- }
-
-
- public void visitUnknown( Unknown obj ) {
- }
-
-
- public void visitStackMap( StackMap obj ) {
- }
-
-
- public void visitStackMapEntry( StackMapEntry obj ) {
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+/**
+ * Visitor with empty method bodies, can be extended and used in conjunction with the
+ * DescendingVisitor class, e.g.
+ *
+ * By courtesy of David Spencer.
+ *
+ * @see DescendingVisitor
+ * @version $Id: EmptyVisitor.java 388707 2006-03-25 05:40:28Z tcurdt $
+ *
+ */
+public class EmptyVisitor implements Visitor {
+
+ protected EmptyVisitor() {
+ }
+
+
+ public void visitCode( Code obj ) {
+ }
+
+
+ public void visitCodeException( CodeException obj ) {
+ }
+
+
+ public void visitConstantClass( ConstantClass obj ) {
+ }
+
+
+ public void visitConstantDouble( ConstantDouble obj ) {
+ }
+
+
+ public void visitConstantFieldref( ConstantFieldref obj ) {
+ }
+
+
+ public void visitConstantFloat( ConstantFloat obj ) {
+ }
+
+
+ public void visitConstantInteger( ConstantInteger obj ) {
+ }
+
+
+ public void visitConstantInterfaceMethodref( ConstantInterfaceMethodref obj ) {
+ }
+
+
+ public void visitConstantLong( ConstantLong obj ) {
+ }
+
+
+ public void visitConstantMethodref( ConstantMethodref obj ) {
+ }
+
+
+ public void visitConstantNameAndType( ConstantNameAndType obj ) {
+ }
+
+
+ public void visitConstantPool( ConstantPool obj ) {
+ }
+
+
+ public void visitConstantString( ConstantString obj ) {
+ }
+
+
+ public void visitConstantUtf8( ConstantUtf8 obj ) {
+ }
+
+
+ public void visitConstantValue( ConstantValue obj ) {
+ }
+
+
+ public void visitDeprecated( Deprecated obj ) {
+ }
+
+
+ public void visitExceptionTable( ExceptionTable obj ) {
+ }
+
+
+ public void visitField( Field obj ) {
+ }
+
+
+ public void visitInnerClass( InnerClass obj ) {
+ }
+
+
+ public void visitInnerClasses( InnerClasses obj ) {
+ }
+
+
+ public void visitJavaClass( JavaClass obj ) {
+ }
+
+
+ public void visitLineNumber( LineNumber obj ) {
+ }
+
+
+ public void visitLineNumberTable( LineNumberTable obj ) {
+ }
+
+
+ public void visitLocalVariable( LocalVariable obj ) {
+ }
+
+
+ public void visitLocalVariableTable( LocalVariableTable obj ) {
+ }
+
+
+ public void visitMethod( Method obj ) {
+ }
+
+
+ public void visitSignature( Signature obj ) {
+ }
+
+
+ public void visitSourceFile( SourceFile obj ) {
+ }
+
+
+ public void visitSynthetic( Synthetic obj ) {
+ }
+
+
+ public void visitUnknown( Unknown obj ) {
+ }
+
+
+ public void visitStackMap( StackMap obj ) {
+ }
+
+
+ public void visitStackMapEntry( StackMapEntry obj ) {
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ExceptionTable.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ExceptionTable.java
index ba091e55..7f052bce 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ExceptionTable.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/ExceptionTable.java
@@ -1,181 +1,181 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents the table of exceptions that are thrown by a
- * method. This attribute may be used once per method. The name of
- * this class is ExceptionTable for historical reasons; The
- * Java Virtual Machine Specification, Second Edition defines this
- * attribute using the name Exceptions (which is inconsistent
- * with the other classes).
- *
- * @version $Id: ExceptionTable.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Code
- */
-public final class ExceptionTable extends Attribute {
-
- private int number_of_exceptions; // Table of indices into
- private int[] exception_index_table; // constant pool
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use copy() for a physical copy.
- */
- public ExceptionTable(ExceptionTable c) {
- this(c.getNameIndex(), c.getLength(), c.getExceptionIndexTable(), c.getConstantPool());
- }
-
-
- /**
- * @param name_index Index in constant pool
- * @param length Content length in bytes
- * @param exception_index_table Table of indices in constant pool
- * @param constant_pool Array of constants
- */
- public ExceptionTable(int name_index, int length, int[] exception_index_table,
- ConstantPool constant_pool) {
- super(Constants.ATTR_EXCEPTIONS, name_index, length, constant_pool);
- setExceptionIndexTable(exception_index_table);
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- ExceptionTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (int[]) null, constant_pool);
- number_of_exceptions = file.readUnsignedShort();
- exception_index_table = new int[number_of_exceptions];
- for (int i = 0; i < number_of_exceptions; i++) {
- exception_index_table[i] = file.readUnsignedShort();
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionTable(this);
- }
-
-
- /**
- * Dump exceptions attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(number_of_exceptions);
- for (int i = 0; i < number_of_exceptions; i++) {
- file.writeShort(exception_index_table[i]);
- }
- }
-
-
- /**
- * @return Array of indices into constant pool of thrown exceptions.
- */
- public final int[] getExceptionIndexTable() {
- return exception_index_table;
- }
-
-
- /**
- * @return Length of exception table.
- */
- public final int getNumberOfExceptions() {
- return number_of_exceptions;
- }
-
-
- /**
- * @return class names of thrown exceptions
- */
- public final String[] getExceptionNames() {
- String[] names = new String[number_of_exceptions];
- for (int i = 0; i < number_of_exceptions; i++) {
- names[i] = constant_pool.getConstantString(exception_index_table[i],
- Constants.CONSTANT_Class).replace('/', '.');
- }
- return names;
- }
-
-
- /**
- * @param exception_index_table the list of exception indexes
- * Also redefines number_of_exceptions according to table length.
- */
- public final void setExceptionIndexTable( int[] exception_index_table ) {
- this.exception_index_table = exception_index_table;
- number_of_exceptions = (exception_index_table == null) ? 0 : exception_index_table.length;
- }
-
-
- /**
- * @return String representation, i.e., a list of thrown exceptions.
- */
- public final String toString() {
- StringBuilder buf = new StringBuilder("");
- String str;
- for (int i = 0; i < number_of_exceptions; i++) {
- str = constant_pool.getConstantString(exception_index_table[i],
- Constants.CONSTANT_Class);
- buf.append(Utility.compactClassName(str, false));
- if (i < number_of_exceptions - 1) {
- buf.append(", ");
- }
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- ExceptionTable c = (ExceptionTable) clone();
- if (exception_index_table != null) {
- c.exception_index_table = new int[exception_index_table.length];
- System.arraycopy(exception_index_table, 0, c.exception_index_table, 0,
- exception_index_table.length);
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents the table of exceptions that are thrown by a
+ * method. This attribute may be used once per method. The name of
+ * this class is ExceptionTable for historical reasons; The
+ * Java Virtual Machine Specification, Second Edition defines this
+ * attribute using the name Exceptions (which is inconsistent
+ * with the other classes).
+ *
+ * @version $Id: ExceptionTable.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Code
+ */
+public final class ExceptionTable extends Attribute {
+
+ private int number_of_exceptions; // Table of indices into
+ private int[] exception_index_table; // constant pool
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use copy() for a physical copy.
+ */
+ public ExceptionTable(ExceptionTable c) {
+ this(c.getNameIndex(), c.getLength(), c.getExceptionIndexTable(), c.getConstantPool());
+ }
+
+
+ /**
+ * @param name_index Index in constant pool
+ * @param length Content length in bytes
+ * @param exception_index_table Table of indices in constant pool
+ * @param constant_pool Array of constants
+ */
+ public ExceptionTable(int name_index, int length, int[] exception_index_table,
+ ConstantPool constant_pool) {
+ super(Constants.ATTR_EXCEPTIONS, name_index, length, constant_pool);
+ setExceptionIndexTable(exception_index_table);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ ExceptionTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (int[]) null, constant_pool);
+ number_of_exceptions = file.readUnsignedShort();
+ exception_index_table = new int[number_of_exceptions];
+ for (int i = 0; i < number_of_exceptions; i++) {
+ exception_index_table[i] = file.readUnsignedShort();
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionTable(this);
+ }
+
+
+ /**
+ * Dump exceptions attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(number_of_exceptions);
+ for (int i = 0; i < number_of_exceptions; i++) {
+ file.writeShort(exception_index_table[i]);
+ }
+ }
+
+
+ /**
+ * @return Array of indices into constant pool of thrown exceptions.
+ */
+ public final int[] getExceptionIndexTable() {
+ return exception_index_table;
+ }
+
+
+ /**
+ * @return Length of exception table.
+ */
+ public final int getNumberOfExceptions() {
+ return number_of_exceptions;
+ }
+
+
+ /**
+ * @return class names of thrown exceptions
+ */
+ public final String[] getExceptionNames() {
+ String[] names = new String[number_of_exceptions];
+ for (int i = 0; i < number_of_exceptions; i++) {
+ names[i] = constant_pool.getConstantString(exception_index_table[i],
+ Constants.CONSTANT_Class).replace('/', '.');
+ }
+ return names;
+ }
+
+
+ /**
+ * @param exception_index_table the list of exception indexes
+ * Also redefines number_of_exceptions according to table length.
+ */
+ public final void setExceptionIndexTable( int[] exception_index_table ) {
+ this.exception_index_table = exception_index_table;
+ number_of_exceptions = (exception_index_table == null) ? 0 : exception_index_table.length;
+ }
+
+
+ /**
+ * @return String representation, i.e., a list of thrown exceptions.
+ */
+ public final String toString() {
+ StringBuilder buf = new StringBuilder("");
+ String str;
+ for (int i = 0; i < number_of_exceptions; i++) {
+ str = constant_pool.getConstantString(exception_index_table[i],
+ Constants.CONSTANT_Class);
+ buf.append(Utility.compactClassName(str, false));
+ if (i < number_of_exceptions - 1) {
+ buf.append(", ");
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ ExceptionTable c = (ExceptionTable) clone();
+ if (exception_index_table != null) {
+ c.exception_index_table = new int[exception_index_table.length];
+ System.arraycopy(exception_index_table, 0, c.exception_index_table, 0,
+ exception_index_table.length);
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Field.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Field.java
index b8253936..4fa16d6c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Field.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Field.java
@@ -1,191 +1,191 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.generic.Type;
-import org.apache.bcel5_2_0.util.BCELComparator;
-
-/**
- * This class represents the field info structure, i.e., the representation
- * for a variable in the class. See JVM specification for details.
- *
- * @version $Id: Field.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class Field extends FieldOrMethod {
-
- private static BCELComparator _cmp = new BCELComparator() {
-
- public boolean equals( Object o1, Object o2 ) {
- Field THIS = (Field) o1;
- Field THAT = (Field) o2;
- return THIS.getName().equals(THAT.getName())
- && THIS.getSignature().equals(THAT.getSignature());
- }
-
-
- public int hashCode( Object o ) {
- Field THIS = (Field) o;
- return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
- }
- };
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public Field(Field c) {
- super(c);
- }
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- */
- Field(DataInputStream file, ConstantPool constant_pool) throws IOException,
- ClassFormatException {
- super(file, constant_pool);
- }
-
-
- /**
- * @param access_flags Access rights of field
- * @param name_index Points to field name in constant pool
- * @param signature_index Points to encoded signature
- * @param attributes Collection of attributes
- * @param constant_pool Array of constants
- */
- public Field(int access_flags, int name_index, int signature_index, Attribute[] attributes,
- ConstantPool constant_pool) {
- super(access_flags, name_index, signature_index, attributes, constant_pool);
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitField(this);
- }
-
-
- /**
- * @return constant value associated with this field (may be null)
- */
- public final ConstantValue getConstantValue() {
- for (int i = 0; i < attributes_count; i++) {
- if (attributes[i].getTag() == Constants.ATTR_CONSTANT_VALUE) {
- return (ConstantValue) attributes[i];
- }
- }
- return null;
- }
-
-
- /**
- * Return string representation close to declaration format,
- * `public static final short MAX = 100', e.g..
- *
- * @return String representation of field, including the signature.
- */
- public final String toString() {
- String name, signature, access; // Short cuts to constant pool
- // Get names from constant pool
- access = Utility.accessToString(access_flags);
- access = access.equals("") ? "" : (access + " ");
- signature = Utility.signatureToString(getSignature());
- name = getName();
- StringBuilder buf = new StringBuilder(64);
- buf.append(access).append(signature).append(" ").append(name);
- ConstantValue cv = getConstantValue();
- if (cv != null) {
- buf.append(" = ").append(cv);
- }
- for (int i = 0; i < attributes_count; i++) {
- Attribute a = attributes[i];
- if (!(a instanceof ConstantValue)) {
- buf.append(" [").append(a.toString()).append("]");
- }
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this field
- */
- public final Field copy( ConstantPool _constant_pool ) {
- return (Field) copy_(_constant_pool);
- }
-
-
- /**
- * @return type of field
- */
- public Type getType() {
- return Type.getReturnType(getSignature());
- }
-
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator( BCELComparator comparator ) {
- _cmp = comparator;
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two Field objects are said to be equal when
- * their names and signatures are equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals( Object obj ) {
- return _cmp.equals(this, obj);
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the field's name XOR signature.
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.generic.Type;
+import org.apache.bcel5_2_0.util.BCELComparator;
+
+/**
+ * This class represents the field info structure, i.e., the representation
+ * for a variable in the class. See JVM specification for details.
+ *
+ * @version $Id: Field.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class Field extends FieldOrMethod {
+
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ Field THIS = (Field) o1;
+ Field THAT = (Field) o2;
+ return THIS.getName().equals(THAT.getName())
+ && THIS.getSignature().equals(THAT.getSignature());
+ }
+
+
+ public int hashCode( Object o ) {
+ Field THIS = (Field) o;
+ return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
+ }
+ };
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public Field(Field c) {
+ super(c);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ */
+ Field(DataInputStream file, ConstantPool constant_pool) throws IOException,
+ ClassFormatException {
+ super(file, constant_pool);
+ }
+
+
+ /**
+ * @param access_flags Access rights of field
+ * @param name_index Points to field name in constant pool
+ * @param signature_index Points to encoded signature
+ * @param attributes Collection of attributes
+ * @param constant_pool Array of constants
+ */
+ public Field(int access_flags, int name_index, int signature_index, Attribute[] attributes,
+ ConstantPool constant_pool) {
+ super(access_flags, name_index, signature_index, attributes, constant_pool);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitField(this);
+ }
+
+
+ /**
+ * @return constant value associated with this field (may be null)
+ */
+ public final ConstantValue getConstantValue() {
+ for (int i = 0; i < attributes_count; i++) {
+ if (attributes[i].getTag() == Constants.ATTR_CONSTANT_VALUE) {
+ return (ConstantValue) attributes[i];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Return string representation close to declaration format,
+ * `public static final short MAX = 100', e.g..
+ *
+ * @return String representation of field, including the signature.
+ */
+ public final String toString() {
+ String name, signature, access; // Short cuts to constant pool
+ // Get names from constant pool
+ access = Utility.accessToString(access_flags);
+ access = access.equals("") ? "" : (access + " ");
+ signature = Utility.signatureToString(getSignature());
+ name = getName();
+ StringBuilder buf = new StringBuilder(64);
+ buf.append(access).append(signature).append(" ").append(name);
+ ConstantValue cv = getConstantValue();
+ if (cv != null) {
+ buf.append(" = ").append(cv);
+ }
+ for (int i = 0; i < attributes_count; i++) {
+ Attribute a = attributes[i];
+ if (!(a instanceof ConstantValue)) {
+ buf.append(" [").append(a.toString()).append("]");
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this field
+ */
+ public final Field copy( ConstantPool _constant_pool ) {
+ return (Field) copy_(_constant_pool);
+ }
+
+
+ /**
+ * @return type of field
+ */
+ public Type getType() {
+ return Type.getReturnType(getSignature());
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two Field objects are said to be equal when
+ * their names and signatures are equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the field's name XOR signature.
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/FieldOrMethod.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/FieldOrMethod.java
index 6261057f..e91334b3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/FieldOrMethod.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/FieldOrMethod.java
@@ -1,207 +1,207 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Abstract super class for fields and methods.
- *
- * @version $Id: FieldOrMethod.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class FieldOrMethod extends AccessFlags implements Cloneable, Node {
-
- protected int name_index; // Points to field name in constant pool
- protected int signature_index; // Points to encoded signature
- protected int attributes_count; // No. of attributes
- protected Attribute[] attributes; // Collection of attributes
- protected ConstantPool constant_pool;
-
-
- FieldOrMethod() {
- }
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- protected FieldOrMethod(FieldOrMethod c) {
- this(c.getAccessFlags(), c.getNameIndex(), c.getSignatureIndex(), c.getAttributes(), c
- .getConstantPool());
- }
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- * @throws ClassFormatException
- */
- protected FieldOrMethod(DataInputStream file, ConstantPool constant_pool) throws IOException,
- ClassFormatException {
- this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), null,
- constant_pool);
- attributes_count = file.readUnsignedShort();
- attributes = new Attribute[attributes_count];
- for (int i = 0; i < attributes_count; i++) {
- attributes[i] = Attribute.readAttribute(file, constant_pool);
- }
- }
-
-
- /**
- * @param access_flags Access rights of method
- * @param name_index Points to field name in constant pool
- * @param signature_index Points to encoded signature
- * @param attributes Collection of attributes
- * @param constant_pool Array of constants
- */
- protected FieldOrMethod(int access_flags, int name_index, int signature_index,
- Attribute[] attributes, ConstantPool constant_pool) {
- this.access_flags = access_flags;
- this.name_index = name_index;
- this.signature_index = signature_index;
- this.constant_pool = constant_pool;
- setAttributes(attributes);
- }
-
-
- /**
- * Dump object to file stream on binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeShort(access_flags);
- file.writeShort(name_index);
- file.writeShort(signature_index);
- file.writeShort(attributes_count);
- for (int i = 0; i < attributes_count; i++) {
- attributes[i].dump(file);
- }
- }
-
-
- /**
- * @return Collection of object attributes.
- */
- public final Attribute[] getAttributes() {
- return attributes;
- }
-
-
- /**
- * @param attributes Collection of object attributes.
- */
- public final void setAttributes( Attribute[] attributes ) {
- this.attributes = attributes;
- attributes_count = (attributes == null) ? 0 : attributes.length;
- }
-
-
- /**
- * @return Constant pool used by this object.
- */
- public final ConstantPool getConstantPool() {
- return constant_pool;
- }
-
-
- /**
- * @param constant_pool Constant pool to be used for this object.
- */
- public final void setConstantPool( ConstantPool constant_pool ) {
- this.constant_pool = constant_pool;
- }
-
-
- /**
- * @return Index in constant pool of object's name.
- */
- public final int getNameIndex() {
- return name_index;
- }
-
-
- /**
- * @param name_index Index in constant pool of object's name.
- */
- public final void setNameIndex( int name_index ) {
- this.name_index = name_index;
- }
-
-
- /**
- * @return Index in constant pool of field signature.
- */
- public final int getSignatureIndex() {
- return signature_index;
- }
-
-
- /**
- * @param signature_index Index in constant pool of field signature.
- */
- public final void setSignatureIndex( int signature_index ) {
- this.signature_index = signature_index;
- }
-
-
- /**
- * @return Name of object, i.e., method name or field name
- */
- public final String getName() {
- ConstantUtf8 c;
- c = (ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
-
- /**
- * @return String representation of object's type signature (java style)
- */
- public final String getSignature() {
- ConstantUtf8 c;
- c = (ConstantUtf8) constant_pool.getConstant(signature_index, Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
-
- /**
- * @return deep copy of this field
- */
- protected FieldOrMethod copy_( ConstantPool _constant_pool ) {
- try {
- FieldOrMethod c = (FieldOrMethod) clone();
- c.constant_pool = _constant_pool;
- c.attributes = new Attribute[attributes_count];
- for (int i = 0; i < attributes_count; i++) {
- c.attributes[i] = attributes[i].copy(_constant_pool);
- }
- return c;
- } catch (CloneNotSupportedException e) {
- return null;
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Abstract super class for fields and methods.
+ *
+ * @version $Id: FieldOrMethod.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class FieldOrMethod extends AccessFlags implements Cloneable, Node {
+
+ protected int name_index; // Points to field name in constant pool
+ protected int signature_index; // Points to encoded signature
+ protected int attributes_count; // No. of attributes
+ protected Attribute[] attributes; // Collection of attributes
+ protected ConstantPool constant_pool;
+
+
+ FieldOrMethod() {
+ }
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ protected FieldOrMethod(FieldOrMethod c) {
+ this(c.getAccessFlags(), c.getNameIndex(), c.getSignatureIndex(), c.getAttributes(), c
+ .getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ protected FieldOrMethod(DataInputStream file, ConstantPool constant_pool) throws IOException,
+ ClassFormatException {
+ this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), null,
+ constant_pool);
+ attributes_count = file.readUnsignedShort();
+ attributes = new Attribute[attributes_count];
+ for (int i = 0; i < attributes_count; i++) {
+ attributes[i] = Attribute.readAttribute(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * @param access_flags Access rights of method
+ * @param name_index Points to field name in constant pool
+ * @param signature_index Points to encoded signature
+ * @param attributes Collection of attributes
+ * @param constant_pool Array of constants
+ */
+ protected FieldOrMethod(int access_flags, int name_index, int signature_index,
+ Attribute[] attributes, ConstantPool constant_pool) {
+ this.access_flags = access_flags;
+ this.name_index = name_index;
+ this.signature_index = signature_index;
+ this.constant_pool = constant_pool;
+ setAttributes(attributes);
+ }
+
+
+ /**
+ * Dump object to file stream on binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(access_flags);
+ file.writeShort(name_index);
+ file.writeShort(signature_index);
+ file.writeShort(attributes_count);
+ for (int i = 0; i < attributes_count; i++) {
+ attributes[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return Collection of object attributes.
+ */
+ public final Attribute[] getAttributes() {
+ return attributes;
+ }
+
+
+ /**
+ * @param attributes Collection of object attributes.
+ */
+ public final void setAttributes( Attribute[] attributes ) {
+ this.attributes = attributes;
+ attributes_count = (attributes == null) ? 0 : attributes.length;
+ }
+
+
+ /**
+ * @return Constant pool used by this object.
+ */
+ public final ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @param constant_pool Constant pool to be used for this object.
+ */
+ public final void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * @return Index in constant pool of object's name.
+ */
+ public final int getNameIndex() {
+ return name_index;
+ }
+
+
+ /**
+ * @param name_index Index in constant pool of object's name.
+ */
+ public final void setNameIndex( int name_index ) {
+ this.name_index = name_index;
+ }
+
+
+ /**
+ * @return Index in constant pool of field signature.
+ */
+ public final int getSignatureIndex() {
+ return signature_index;
+ }
+
+
+ /**
+ * @param signature_index Index in constant pool of field signature.
+ */
+ public final void setSignatureIndex( int signature_index ) {
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * @return Name of object, i.e., method name or field name
+ */
+ public final String getName() {
+ ConstantUtf8 c;
+ c = (ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return String representation of object's type signature (java style)
+ */
+ public final String getSignature() {
+ ConstantUtf8 c;
+ c = (ConstantUtf8) constant_pool.getConstant(signature_index, Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return deep copy of this field
+ */
+ protected FieldOrMethod copy_( ConstantPool _constant_pool ) {
+ try {
+ FieldOrMethod c = (FieldOrMethod) clone();
+ c.constant_pool = _constant_pool;
+ c.attributes = new Attribute[attributes_count];
+ for (int i = 0; i < attributes_count; i++) {
+ c.attributes[i] = attributes[i].copy(_constant_pool);
+ }
+ return c;
+ } catch (CloneNotSupportedException e) {
+ return null;
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClass.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClass.java
index 825eb261..b6cc5a04 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClass.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClass.java
@@ -1,215 +1,215 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a inner class attribute, i.e., the class
- * indices of the inner and outer classes, the name and the attributes
- * of the inner class.
- *
- * @version $Id: InnerClass.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see InnerClasses
- */
-public final class InnerClass implements Cloneable, Node, Serializable {
-
- private int inner_class_index;
- private int outer_class_index;
- private int inner_name_index;
- private int inner_access_flags;
-
-
- /**
- * Initialize from another object.
- */
- public InnerClass(InnerClass c) {
- this(c.getInnerClassIndex(), c.getOuterClassIndex(), c.getInnerNameIndex(), c
- .getInnerAccessFlags());
- }
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- InnerClass(DataInputStream file) throws IOException {
- this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file
- .readUnsignedShort());
- }
-
-
- /**
- * @param inner_class_index Class index in constant pool of inner class
- * @param outer_class_index Class index in constant pool of outer class
- * @param inner_name_index Name index in constant pool of inner class
- * @param inner_access_flags Access flags of inner class
- */
- public InnerClass(int inner_class_index, int outer_class_index, int inner_name_index,
- int inner_access_flags) {
- this.inner_class_index = inner_class_index;
- this.outer_class_index = outer_class_index;
- this.inner_name_index = inner_name_index;
- this.inner_access_flags = inner_access_flags;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitInnerClass(this);
- }
-
-
- /**
- * Dump inner class attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeShort(inner_class_index);
- file.writeShort(outer_class_index);
- file.writeShort(inner_name_index);
- file.writeShort(inner_access_flags);
- }
-
-
- /**
- * @return access flags of inner class.
- */
- public final int getInnerAccessFlags() {
- return inner_access_flags;
- }
-
-
- /**
- * @return class index of inner class.
- */
- public final int getInnerClassIndex() {
- return inner_class_index;
- }
-
-
- /**
- * @return name index of inner class.
- */
- public final int getInnerNameIndex() {
- return inner_name_index;
- }
-
-
- /**
- * @return class index of outer class.
- */
- public final int getOuterClassIndex() {
- return outer_class_index;
- }
-
-
- /**
- * @param inner_access_flags access flags for this inner class
- */
- public final void setInnerAccessFlags( int inner_access_flags ) {
- this.inner_access_flags = inner_access_flags;
- }
-
-
- /**
- * @param inner_class_index index into the constant pool for this class
- */
- public final void setInnerClassIndex( int inner_class_index ) {
- this.inner_class_index = inner_class_index;
- }
-
-
- /**
- * @param inner_name_index index into the constant pool for this class's name
- */
- public final void setInnerNameIndex( int inner_name_index ) {
- this.inner_name_index = inner_name_index;
- }
-
-
- /**
- * @param outer_class_index index into the constant pool for the owning class
- */
- public final void setOuterClassIndex( int outer_class_index ) {
- this.outer_class_index = outer_class_index;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- return "InnerClass(" + inner_class_index + ", " + outer_class_index + ", "
- + inner_name_index + ", " + inner_access_flags + ")";
- }
-
-
- /**
- * @return Resolved string representation
- */
- public final String toString( ConstantPool constant_pool ) {
- String inner_class_name, outer_class_name, inner_name, access;
- inner_class_name = constant_pool.getConstantString(inner_class_index,
- Constants.CONSTANT_Class);
- inner_class_name = Utility.compactClassName(inner_class_name);
- if (outer_class_index != 0) {
- outer_class_name = constant_pool.getConstantString(outer_class_index,
- Constants.CONSTANT_Class);
- outer_class_name = Utility.compactClassName(outer_class_name);
- } else {
- outer_class_name = "";
- }
- if (inner_name_index != 0) {
- inner_name = ((ConstantUtf8) constant_pool.getConstant(inner_name_index,
- Constants.CONSTANT_Utf8)).getBytes();
- } else {
- inner_name = "";
- }
- access = Utility.accessToString(inner_access_flags, true);
- access = access.equals("") ? "" : (access + " ");
- return "InnerClass:" + access + inner_class_name + "(\"" + outer_class_name + "\", \""
- + inner_name + "\")";
- }
-
-
- /**
- * @return deep copy of this object
- */
- public InnerClass copy() {
- try {
- return (InnerClass) clone();
- } catch (CloneNotSupportedException e) {
- }
- return null;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a inner class attribute, i.e., the class
+ * indices of the inner and outer classes, the name and the attributes
+ * of the inner class.
+ *
+ * @version $Id: InnerClass.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see InnerClasses
+ */
+public final class InnerClass implements Cloneable, Node, Serializable {
+
+ private int inner_class_index;
+ private int outer_class_index;
+ private int inner_name_index;
+ private int inner_access_flags;
+
+
+ /**
+ * Initialize from another object.
+ */
+ public InnerClass(InnerClass c) {
+ this(c.getInnerClassIndex(), c.getOuterClassIndex(), c.getInnerNameIndex(), c
+ .getInnerAccessFlags());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ InnerClass(DataInputStream file) throws IOException {
+ this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file
+ .readUnsignedShort());
+ }
+
+
+ /**
+ * @param inner_class_index Class index in constant pool of inner class
+ * @param outer_class_index Class index in constant pool of outer class
+ * @param inner_name_index Name index in constant pool of inner class
+ * @param inner_access_flags Access flags of inner class
+ */
+ public InnerClass(int inner_class_index, int outer_class_index, int inner_name_index,
+ int inner_access_flags) {
+ this.inner_class_index = inner_class_index;
+ this.outer_class_index = outer_class_index;
+ this.inner_name_index = inner_name_index;
+ this.inner_access_flags = inner_access_flags;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitInnerClass(this);
+ }
+
+
+ /**
+ * Dump inner class attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(inner_class_index);
+ file.writeShort(outer_class_index);
+ file.writeShort(inner_name_index);
+ file.writeShort(inner_access_flags);
+ }
+
+
+ /**
+ * @return access flags of inner class.
+ */
+ public final int getInnerAccessFlags() {
+ return inner_access_flags;
+ }
+
+
+ /**
+ * @return class index of inner class.
+ */
+ public final int getInnerClassIndex() {
+ return inner_class_index;
+ }
+
+
+ /**
+ * @return name index of inner class.
+ */
+ public final int getInnerNameIndex() {
+ return inner_name_index;
+ }
+
+
+ /**
+ * @return class index of outer class.
+ */
+ public final int getOuterClassIndex() {
+ return outer_class_index;
+ }
+
+
+ /**
+ * @param inner_access_flags access flags for this inner class
+ */
+ public final void setInnerAccessFlags( int inner_access_flags ) {
+ this.inner_access_flags = inner_access_flags;
+ }
+
+
+ /**
+ * @param inner_class_index index into the constant pool for this class
+ */
+ public final void setInnerClassIndex( int inner_class_index ) {
+ this.inner_class_index = inner_class_index;
+ }
+
+
+ /**
+ * @param inner_name_index index into the constant pool for this class's name
+ */
+ public final void setInnerNameIndex( int inner_name_index ) {
+ this.inner_name_index = inner_name_index;
+ }
+
+
+ /**
+ * @param outer_class_index index into the constant pool for the owning class
+ */
+ public final void setOuterClassIndex( int outer_class_index ) {
+ this.outer_class_index = outer_class_index;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ return "InnerClass(" + inner_class_index + ", " + outer_class_index + ", "
+ + inner_name_index + ", " + inner_access_flags + ")";
+ }
+
+
+ /**
+ * @return Resolved string representation
+ */
+ public final String toString( ConstantPool constant_pool ) {
+ String inner_class_name, outer_class_name, inner_name, access;
+ inner_class_name = constant_pool.getConstantString(inner_class_index,
+ Constants.CONSTANT_Class);
+ inner_class_name = Utility.compactClassName(inner_class_name);
+ if (outer_class_index != 0) {
+ outer_class_name = constant_pool.getConstantString(outer_class_index,
+ Constants.CONSTANT_Class);
+ outer_class_name = Utility.compactClassName(outer_class_name);
+ } else {
+ outer_class_name = "";
+ }
+ if (inner_name_index != 0) {
+ inner_name = ((ConstantUtf8) constant_pool.getConstant(inner_name_index,
+ Constants.CONSTANT_Utf8)).getBytes();
+ } else {
+ inner_name = "";
+ }
+ access = Utility.accessToString(inner_access_flags, true);
+ access = access.equals("") ? "" : (access + " ");
+ return "InnerClass:" + access + inner_class_name + "(\"" + outer_class_name + "\", \""
+ + inner_name + "\")";
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public InnerClass copy() {
+ try {
+ return (InnerClass) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClasses.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClasses.java
index 90c31cdc..73bb252a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClasses.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/InnerClasses.java
@@ -1,151 +1,151 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from Attribute and denotes that this class
- * is an Inner class of another.
- * to the source file of this class.
- * It is instantiated from the Attribute.readAttribute() method.
- *
- * @version $Id: InnerClasses.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- */
-public final class InnerClasses extends Attribute {
-
- private InnerClass[] inner_classes;
- private int number_of_classes;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public InnerClasses(InnerClasses c) {
- this(c.getNameIndex(), c.getLength(), c.getInnerClasses(), c.getConstantPool());
- }
-
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param inner_classes array of inner classes attributes
- * @param constant_pool Array of constants
- */
- public InnerClasses(int name_index, int length, InnerClass[] inner_classes,
- ConstantPool constant_pool) {
- super(Constants.ATTR_INNER_CLASSES, name_index, length, constant_pool);
- setInnerClasses(inner_classes);
- }
-
-
- /**
- * Construct object from file stream.
- *
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- InnerClasses(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (InnerClass[]) null, constant_pool);
- number_of_classes = file.readUnsignedShort();
- inner_classes = new InnerClass[number_of_classes];
- for (int i = 0; i < number_of_classes; i++) {
- inner_classes[i] = new InnerClass(file);
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitInnerClasses(this);
- }
-
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(number_of_classes);
- for (int i = 0; i < number_of_classes; i++) {
- inner_classes[i].dump(file);
- }
- }
-
-
- /**
- * @return array of inner class "records"
- */
- public final InnerClass[] getInnerClasses() {
- return inner_classes;
- }
-
-
- /**
- * @param inner_classes the array of inner classes
- */
- public final void setInnerClasses( InnerClass[] inner_classes ) {
- this.inner_classes = inner_classes;
- number_of_classes = (inner_classes == null) ? 0 : inner_classes.length;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuilder buf = new StringBuilder();
- for (int i = 0; i < number_of_classes; i++) {
- buf.append(inner_classes[i].toString(constant_pool)).append("\n");
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- InnerClasses c = (InnerClasses) clone();
- c.inner_classes = new InnerClass[number_of_classes];
- for (int i = 0; i < number_of_classes; i++) {
- c.inner_classes[i] = inner_classes[i].copy();
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from Attribute and denotes that this class
+ * is an Inner class of another.
+ * to the source file of this class.
+ * It is instantiated from the Attribute.readAttribute() method.
+ *
+ * @version $Id: InnerClasses.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ */
+public final class InnerClasses extends Attribute {
+
+ private InnerClass[] inner_classes;
+ private int number_of_classes;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public InnerClasses(InnerClasses c) {
+ this(c.getNameIndex(), c.getLength(), c.getInnerClasses(), c.getConstantPool());
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param inner_classes array of inner classes attributes
+ * @param constant_pool Array of constants
+ */
+ public InnerClasses(int name_index, int length, InnerClass[] inner_classes,
+ ConstantPool constant_pool) {
+ super(Constants.ATTR_INNER_CLASSES, name_index, length, constant_pool);
+ setInnerClasses(inner_classes);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ *
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ InnerClasses(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (InnerClass[]) null, constant_pool);
+ number_of_classes = file.readUnsignedShort();
+ inner_classes = new InnerClass[number_of_classes];
+ for (int i = 0; i < number_of_classes; i++) {
+ inner_classes[i] = new InnerClass(file);
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitInnerClasses(this);
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(number_of_classes);
+ for (int i = 0; i < number_of_classes; i++) {
+ inner_classes[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return array of inner class "records"
+ */
+ public final InnerClass[] getInnerClasses() {
+ return inner_classes;
+ }
+
+
+ /**
+ * @param inner_classes the array of inner classes
+ */
+ public final void setInnerClasses( InnerClass[] inner_classes ) {
+ this.inner_classes = inner_classes;
+ number_of_classes = (inner_classes == null) ? 0 : inner_classes.length;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuilder buf = new StringBuilder();
+ for (int i = 0; i < number_of_classes; i++) {
+ buf.append(inner_classes[i].toString(constant_pool)).append("\n");
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ InnerClasses c = (InnerClasses) clone();
+ c.inner_classes = new InnerClass[number_of_classes];
+ for (int i = 0; i < number_of_classes; i++) {
+ c.inner_classes[i] = inner_classes[i].copy();
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/JavaClass.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/JavaClass.java
index 652a3156..b8018400 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/JavaClass.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/JavaClass.java
@@ -1,867 +1,867 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.TreeSet;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.generic.Type;
-import org.apache.bcel5_2_0.util.BCELComparator;
-import org.apache.bcel5_2_0.util.ClassQueue;
-import org.apache.bcel5_2_0.util.SyntheticRepository;
-
-/**
- * Represents a Java class, i.e., the data structures, constant pool,
- * fields, methods and commands contained in a Java .class file.
- * See JVM specification for details.
- * The intent of this class is to represent a parsed or otherwise existing
- * class file. Those interested in programatically generating classes
- * should see the ClassGen class.
-
- * @version $Id: JavaClass.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @see org.apache.bcel5_2_0.generic.ClassGen
- * @author M. Dahm
- */
-public class JavaClass extends AccessFlags implements Cloneable, Node, Comparable {
-
- private String file_name;
- private String package_name;
- private String source_file_name = "";
- private int class_name_index;
- private int superclass_name_index;
- private String class_name;
- private String superclass_name;
- private int major, minor; // Compiler version
- private ConstantPool constant_pool; // Constant pool
- private int[] interfaces; // implemented interfaces
- private String[] interface_names;
- private Field[] fields; // Fields, i.e., variables of class
- private Method[] methods; // methods defined in the class
- private Attribute[] attributes; // attributes defined in the class
- private byte source = HEAP; // Generated in memory
- public static final byte HEAP = 1;
- public static final byte FILE = 2;
- public static final byte ZIP = 3;
- static boolean debug = false; // Debugging on/off
- static char sep = '/'; // directory separator
- private static BCELComparator _cmp = new BCELComparator() {
-
- public boolean equals( Object o1, Object o2 ) {
- JavaClass THIS = (JavaClass) o1;
- JavaClass THAT = (JavaClass) o2;
- return THIS.getClassName().equals(THAT.getClassName());
- }
-
-
- public int hashCode( Object o ) {
- JavaClass THIS = (JavaClass) o;
- return THIS.getClassName().hashCode();
- }
- };
- /**
- * In cases where we go ahead and create something,
- * use the default SyntheticRepository, because we
- * don't know any better.
- */
- private transient org.apache.bcel5_2_0.util.Repository repository = SyntheticRepository
- .getInstance();
-
-
- /**
- * Constructor gets all contents as arguments.
- *
- * @param class_name_index Index into constant pool referencing a
- * ConstantClass that represents this class.
- * @param superclass_name_index Index into constant pool referencing a
- * ConstantClass that represents this class's superclass.
- * @param file_name File name
- * @param major Major compiler version
- * @param minor Minor compiler version
- * @param access_flags Access rights defined by bit flags
- * @param constant_pool Array of constants
- * @param interfaces Implemented interfaces
- * @param fields Class fields
- * @param methods Class methods
- * @param attributes Class attributes
- * @param source Read from file or generated in memory?
- */
- public JavaClass(int class_name_index, int superclass_name_index, String file_name, int major,
- int minor, int access_flags, ConstantPool constant_pool, int[] interfaces,
- Field[] fields, Method[] methods, Attribute[] attributes, byte source) {
- if (interfaces == null) {
- interfaces = new int[0];
- }
- if (attributes == null) {
- attributes = new Attribute[0];
- }
- if (fields == null) {
- fields = new Field[0];
- }
- if (methods == null) {
- methods = new Method[0];
- }
- this.class_name_index = class_name_index;
- this.superclass_name_index = superclass_name_index;
- this.file_name = file_name;
- this.major = major;
- this.minor = minor;
- this.access_flags = access_flags;
- this.constant_pool = constant_pool;
- this.interfaces = interfaces;
- this.fields = fields;
- this.methods = methods;
- this.attributes = attributes;
- this.source = source;
- // Get source file name if available
- for (int i = 0; i < attributes.length; i++) {
- if (attributes[i] instanceof SourceFile) {
- source_file_name = ((SourceFile) attributes[i]).getSourceFileName();
- break;
- }
- }
- /* According to the specification the following entries must be of type
- * `ConstantClass' but we check that anyway via the
- * `ConstPool.getConstant' method.
- */
- class_name = constant_pool.getConstantString(class_name_index, Constants.CONSTANT_Class);
- class_name = Utility.compactClassName(class_name, false);
- int index = class_name.lastIndexOf('.');
- if (index < 0) {
- package_name = "";
- } else {
- package_name = class_name.substring(0, index);
- }
- if (superclass_name_index > 0) {
- // May be zero -> class is java.lang.Object
- superclass_name = constant_pool.getConstantString(superclass_name_index,
- Constants.CONSTANT_Class);
- superclass_name = Utility.compactClassName(superclass_name, false);
- } else {
- superclass_name = "java.lang.Object";
- }
- interface_names = new String[interfaces.length];
- for (int i = 0; i < interfaces.length; i++) {
- String str = constant_pool.getConstantString(interfaces[i], Constants.CONSTANT_Class);
- interface_names[i] = Utility.compactClassName(str, false);
- }
- }
-
-
- /**
- * Constructor gets all contents as arguments.
- *
- * @param class_name_index Class name
- * @param superclass_name_index Superclass name
- * @param file_name File name
- * @param major Major compiler version
- * @param minor Minor compiler version
- * @param access_flags Access rights defined by bit flags
- * @param constant_pool Array of constants
- * @param interfaces Implemented interfaces
- * @param fields Class fields
- * @param methods Class methods
- * @param attributes Class attributes
- */
- public JavaClass(int class_name_index, int superclass_name_index, String file_name, int major,
- int minor, int access_flags, ConstantPool constant_pool, int[] interfaces,
- Field[] fields, Method[] methods, Attribute[] attributes) {
- this(class_name_index, superclass_name_index, file_name, major, minor, access_flags,
- constant_pool, interfaces, fields, methods, attributes, HEAP);
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitJavaClass(this);
- }
-
-
- /* Print debug information depending on `JavaClass.debug'
- */
- static final void Debug( String str ) {
- if (debug) {
- System.out.println(str);
- }
- }
-
-
- /**
- * Dump class to a file.
- *
- * @param file Output file
- * @throws IOException
- */
- public void dump( File file ) throws IOException {
- String parent = file.getParent();
- if (parent != null) {
- File dir = new File(parent);
- dir.mkdirs();
- }
- DataOutputStream dos = null;
- try {
- dos = new DataOutputStream(new FileOutputStream(file));
- dump(dos);
- } finally {
- if (dos != null) {
- dos.close();
- }
- }
- }
-
-
- /**
- * Dump class to a file named file_name.
- *
- * @param _file_name Output file name
- * @exception IOException
- */
- public void dump( String _file_name ) throws IOException {
- dump(new File(_file_name));
- }
-
-
- /**
- * @return class in binary format
- */
- public byte[] getBytes() {
- ByteArrayOutputStream s = new ByteArrayOutputStream();
- DataOutputStream ds = new DataOutputStream(s);
- try {
- dump(ds);
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- ds.close();
- } catch (IOException e2) {
- e2.printStackTrace();
- }
- }
- return s.toByteArray();
- }
-
-
- /**
- * Dump Java class to output stream in binary format.
- *
- * @param file Output stream
- * @exception IOException
- */
- public void dump( OutputStream file ) throws IOException {
- dump(new DataOutputStream(file));
- }
-
-
- /**
- * Dump Java class to output stream in binary format.
- *
- * @param file Output stream
- * @exception IOException
- */
- public void dump( DataOutputStream file ) throws IOException {
- file.writeInt(0xcafebabe);
- file.writeShort(minor);
- file.writeShort(major);
- constant_pool.dump(file);
- file.writeShort(access_flags);
- file.writeShort(class_name_index);
- file.writeShort(superclass_name_index);
- file.writeShort(interfaces.length);
- for (int i = 0; i < interfaces.length; i++) {
- file.writeShort(interfaces[i]);
- }
- file.writeShort(fields.length);
- for (int i = 0; i < fields.length; i++) {
- fields[i].dump(file);
- }
- file.writeShort(methods.length);
- for (int i = 0; i < methods.length; i++) {
- methods[i].dump(file);
- }
- if (attributes != null) {
- file.writeShort(attributes.length);
- for (int i = 0; i < attributes.length; i++) {
- attributes[i].dump(file);
- }
- } else {
- file.writeShort(0);
- }
- file.flush();
- }
-
-
- /**
- * @return Attributes of the class.
- */
- public Attribute[] getAttributes() {
- return attributes;
- }
-
-
- /**
- * @return Class name.
- */
- public String getClassName() {
- return class_name;
- }
-
-
- /**
- * @return Package name.
- */
- public String getPackageName() {
- return package_name;
- }
-
-
- /**
- * @return Class name index.
- */
- public int getClassNameIndex() {
- return class_name_index;
- }
-
-
- /**
- * @return Constant pool.
- */
- public ConstantPool getConstantPool() {
- return constant_pool;
- }
-
-
- /**
- * @return Fields, i.e., variables of the class. Like the JVM spec
- * mandates for the classfile format, these fields are those specific to
- * this class, and not those of the superclass or superinterfaces.
- */
- public Field[] getFields() {
- return fields;
- }
-
-
- /**
- * @return File name of class, aka SourceFile attribute value
- */
- public String getFileName() {
- return file_name;
- }
-
-
- /**
- * @return Names of implemented interfaces.
- */
- public String[] getInterfaceNames() {
- return interface_names;
- }
-
-
- /**
- * @return Indices in constant pool of implemented interfaces.
- */
- public int[] getInterfaceIndices() {
- return interfaces;
- }
-
-
- /**
- * @return Major number of class file version.
- */
- public int getMajor() {
- return major;
- }
-
-
- /**
- * @return Methods of the class.
- */
- public Method[] getMethods() {
- return methods;
- }
-
-
- /**
- * @return A org.apache.bcel.classfile.Method corresponding to
- * java.lang.reflect.Method if any
- */
- public Method getMethod( java.lang.reflect.Method m ) {
- for (int i = 0; i < methods.length; i++) {
- Method method = methods[i];
- if (m.getName().equals(method.getName()) && (m.getModifiers() == method.getModifiers())
- && Type.getSignature(m).equals(method.getSignature())) {
- return method;
- }
- }
- return null;
- }
-
-
- /**
- * @return Minor number of class file version.
- */
- public int getMinor() {
- return minor;
- }
-
-
- /**
- * @return sbsolute path to file where this class was read from
- */
- public String getSourceFileName() {
- return source_file_name;
- }
-
-
- /**
- * @return Superclass name.
- */
- public String getSuperclassName() {
- return superclass_name;
- }
-
-
- /**
- * @return Class name index.
- */
- public int getSuperclassNameIndex() {
- return superclass_name_index;
- }
-
- static {
- // Debugging ... on/off
- debug = Boolean.getBoolean("JavaClass.debug");
- // Get path separator either / or \ usually
- String _sep = System.getProperty("file.separator");
- if (_sep != null) {
- try {
- JavaClass.sep = _sep.charAt(0);
- } catch (StringIndexOutOfBoundsException e) {
- } // Never reached
- }
- }
-
-
- /**
- * @param attributes .
- */
- public void setAttributes( Attribute[] attributes ) {
- this.attributes = attributes;
- }
-
-
- /**
- * @param class_name .
- */
- public void setClassName( String class_name ) {
- this.class_name = class_name;
- }
-
-
- /**
- * @param class_name_index .
- */
- public void setClassNameIndex( int class_name_index ) {
- this.class_name_index = class_name_index;
- }
-
-
- /**
- * @param constant_pool .
- */
- public void setConstantPool( ConstantPool constant_pool ) {
- this.constant_pool = constant_pool;
- }
-
-
- /**
- * @param fields .
- */
- public void setFields( Field[] fields ) {
- this.fields = fields;
- }
-
-
- /**
- * Set File name of class, aka SourceFile attribute value
- */
- public void setFileName( String file_name ) {
- this.file_name = file_name;
- }
-
-
- /**
- * @param interface_names .
- */
- public void setInterfaceNames( String[] interface_names ) {
- this.interface_names = interface_names;
- }
-
-
- /**
- * @param interfaces .
- */
- public void setInterfaces( int[] interfaces ) {
- this.interfaces = interfaces;
- }
-
-
- /**
- * @param major .
- */
- public void setMajor( int major ) {
- this.major = major;
- }
-
-
- /**
- * @param methods .
- */
- public void setMethods( Method[] methods ) {
- this.methods = methods;
- }
-
-
- /**
- * @param minor .
- */
- public void setMinor( int minor ) {
- this.minor = minor;
- }
-
-
- /**
- * Set absolute path to file this class was read from.
- */
- public void setSourceFileName( String source_file_name ) {
- this.source_file_name = source_file_name;
- }
-
-
- /**
- * @param superclass_name .
- */
- public void setSuperclassName( String superclass_name ) {
- this.superclass_name = superclass_name;
- }
-
-
- /**
- * @param superclass_name_index .
- */
- public void setSuperclassNameIndex( int superclass_name_index ) {
- this.superclass_name_index = superclass_name_index;
- }
-
-
- /**
- * @return String representing class contents.
- */
- public String toString() {
- String access = Utility.accessToString(access_flags, true);
- access = access.equals("") ? "" : (access + " ");
- StringBuilder buf = new StringBuilder(128);
- buf.append(access).append(Utility.classOrInterface(access_flags)).append(" ").append(
- class_name).append(" extends ").append(
- Utility.compactClassName(superclass_name, false)).append('\n');
- int size = interfaces.length;
- if (size > 0) {
- buf.append("implements\t\t");
- for (int i = 0; i < size; i++) {
- buf.append(interface_names[i]);
- if (i < size - 1) {
- buf.append(", ");
- }
- }
- buf.append('\n');
- }
- buf.append("filename\t\t").append(file_name).append('\n');
- buf.append("compiled from\t\t").append(source_file_name).append('\n');
- buf.append("compiler version\t").append(major).append(".").append(minor).append('\n');
- buf.append("access flags\t\t").append(access_flags).append('\n');
- buf.append("constant pool\t\t").append(constant_pool.getLength()).append(" entries\n");
- buf.append("ACC_SUPER flag\t\t").append(isSuper()).append("\n");
- if (attributes.length > 0) {
- buf.append("\nAttribute(s):\n");
- for (int i = 0; i < attributes.length; i++) {
- buf.append(indent(attributes[i]));
- }
- }
- if (fields.length > 0) {
- buf.append("\n").append(fields.length).append(" fields:\n");
- for (int i = 0; i < fields.length; i++) {
- buf.append("\t").append(fields[i]).append('\n');
- }
- }
- if (methods.length > 0) {
- buf.append("\n").append(methods.length).append(" methods:\n");
- for (int i = 0; i < methods.length; i++) {
- buf.append("\t").append(methods[i]).append('\n');
- }
- }
- return buf.toString();
- }
-
-
- private static final String indent( Object obj ) {
- StringTokenizer tok = new StringTokenizer(obj.toString(), "\n");
- StringBuilder buf = new StringBuilder();
- while (tok.hasMoreTokens()) {
- buf.append("\t").append(tok.nextToken()).append("\n");
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this class
- */
- public JavaClass copy() {
- JavaClass c = null;
- try {
- c = (JavaClass) clone();
- c.constant_pool = constant_pool.copy();
- c.interfaces = (int[]) interfaces.clone();
- c.interface_names = (String[]) interface_names.clone();
- c.fields = new Field[fields.length];
- for (int i = 0; i < fields.length; i++) {
- c.fields[i] = fields[i].copy(c.constant_pool);
- }
- c.methods = new Method[methods.length];
- for (int i = 0; i < methods.length; i++) {
- c.methods[i] = methods[i].copy(c.constant_pool);
- }
- c.attributes = new Attribute[attributes.length];
- for (int i = 0; i < attributes.length; i++) {
- c.attributes[i] = attributes[i].copy(c.constant_pool);
- }
- } catch (CloneNotSupportedException e) {
- }
- return c;
- }
-
-
- public final boolean isSuper() {
- return (access_flags & Constants.ACC_SUPER) != 0;
- }
-
-
- public final boolean isClass() {
- return (access_flags & Constants.ACC_INTERFACE) == 0;
- }
-
-
- /** @return returns either HEAP (generated), FILE, or ZIP
- */
- public final byte getSource() {
- return source;
- }
-
-
- /********************* New repository functionality *********************/
- /**
- * Gets the ClassRepository which holds its definition. By default
- * this is the same as SyntheticRepository.getInstance();
- */
- public org.apache.bcel5_2_0.util.Repository getRepository() {
- return repository;
- }
-
-
- /**
- * Sets the ClassRepository which loaded the JavaClass.
- * Should be called immediately after parsing is done.
- */
- public void setRepository( org.apache.bcel5_2_0.util.Repository repository ) {
- this.repository = repository;
- }
-
-
- /** Equivalent to runtime "instanceof" operator.
- *
- * @return true if this JavaClass is derived from the super class
- * @throws ClassNotFoundException if superclasses or superinterfaces
- * of this object can't be found
- */
- public final boolean instanceOf( JavaClass super_class ) throws ClassNotFoundException {
- if (this.equals(super_class)) {
- return true;
- }
- JavaClass[] super_classes = getSuperClasses();
- for (int i = 0; i < super_classes.length; i++) {
- if (super_classes[i].equals(super_class)) {
- return true;
- }
- }
- if (super_class.isInterface()) {
- return implementationOf(super_class);
- }
- return false;
- }
-
-
- /**
- * @return true, if this class is an implementation of interface inter
- * @throws ClassNotFoundException if superclasses or superinterfaces
- * of this class can't be found
- */
- public boolean implementationOf( JavaClass inter ) throws ClassNotFoundException {
- if (!inter.isInterface()) {
- throw new IllegalArgumentException(inter.getClassName() + " is no interface");
- }
- if (this.equals(inter)) {
- return true;
- }
- JavaClass[] super_interfaces = getAllInterfaces();
- for (int i = 0; i < super_interfaces.length; i++) {
- if (super_interfaces[i].equals(inter)) {
- return true;
- }
- }
- return false;
- }
-
-
- /**
- * @return the superclass for this JavaClass object, or null if this
- * is java.lang.Object
- * @throws ClassNotFoundException if the superclass can't be found
- */
- public JavaClass getSuperClass() throws ClassNotFoundException {
- if ("java.lang.Object".equals(getClassName())) {
- return null;
- }
- return repository.loadClass(getSuperclassName());
- }
-
-
- /**
- * @return list of super classes of this class in ascending order, i.e.,
- * java.lang.Object is always the last element
- * @throws ClassNotFoundException if any of the superclasses can't be found
- */
- public JavaClass[] getSuperClasses() throws ClassNotFoundException {
- JavaClass clazz = this;
- List allSuperClasses = new ArrayList();
- for (clazz = clazz.getSuperClass(); clazz != null; clazz = clazz.getSuperClass()) {
- allSuperClasses.add(clazz);
- }
- return (JavaClass[]) allSuperClasses.toArray(new JavaClass[allSuperClasses.size()]);
- }
-
-
- /**
- * Get interfaces directly implemented by this JavaClass.
- */
- public JavaClass[] getInterfaces() throws ClassNotFoundException {
- String[] _interfaces = getInterfaceNames();
- JavaClass[] classes = new JavaClass[_interfaces.length];
- for (int i = 0; i < _interfaces.length; i++) {
- classes[i] = repository.loadClass(_interfaces[i]);
- }
- return classes;
- }
-
-
- /**
- * Get all interfaces implemented by this JavaClass (transitively).
- */
- public JavaClass[] getAllInterfaces() throws ClassNotFoundException {
- ClassQueue queue = new ClassQueue();
- Set allInterfaces = new TreeSet();
- queue.enqueue(this);
- while (!queue.empty()) {
- JavaClass clazz = queue.dequeue();
- JavaClass souper = clazz.getSuperClass();
- JavaClass[] _interfaces = clazz.getInterfaces();
- if (clazz.isInterface()) {
- allInterfaces.add(clazz);
- } else {
- if (souper != null) {
- queue.enqueue(souper);
- }
- }
- for (int i = 0; i < _interfaces.length; i++) {
- queue.enqueue(_interfaces[i]);
- }
- }
- return (JavaClass[]) allInterfaces.toArray(new JavaClass[allInterfaces.size()]);
- }
-
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator( BCELComparator comparator ) {
- _cmp = comparator;
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two JavaClass objects are said to be equal when
- * their class names are equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals( Object obj ) {
- return _cmp.equals(this, obj);
- }
-
-
- /**
- * Return the natural ordering of two JavaClasses.
- * This ordering is based on the class name
- */
- public int compareTo( Object obj ) {
- return getClassName().compareTo(((JavaClass) obj).getClassName());
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the class name.
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.TreeSet;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.generic.Type;
+import org.apache.bcel5_2_0.util.BCELComparator;
+import org.apache.bcel5_2_0.util.ClassQueue;
+import org.apache.bcel5_2_0.util.SyntheticRepository;
+
+/**
+ * Represents a Java class, i.e., the data structures, constant pool,
+ * fields, methods and commands contained in a Java .class file.
+ * See JVM specification for details.
+ * The intent of this class is to represent a parsed or otherwise existing
+ * class file. Those interested in programatically generating classes
+ * should see the ClassGen class.
+
+ * @version $Id: JavaClass.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @see org.apache.bcel5_2_0.generic.ClassGen
+ * @author M. Dahm
+ */
+public class JavaClass extends AccessFlags implements Cloneable, Node, Comparable {
+
+ private String file_name;
+ private String package_name;
+ private String source_file_name = "";
+ private int class_name_index;
+ private int superclass_name_index;
+ private String class_name;
+ private String superclass_name;
+ private int major, minor; // Compiler version
+ private ConstantPool constant_pool; // Constant pool
+ private int[] interfaces; // implemented interfaces
+ private String[] interface_names;
+ private Field[] fields; // Fields, i.e., variables of class
+ private Method[] methods; // methods defined in the class
+ private Attribute[] attributes; // attributes defined in the class
+ private byte source = HEAP; // Generated in memory
+ public static final byte HEAP = 1;
+ public static final byte FILE = 2;
+ public static final byte ZIP = 3;
+ static boolean debug = false; // Debugging on/off
+ static char sep = '/'; // directory separator
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ JavaClass THIS = (JavaClass) o1;
+ JavaClass THAT = (JavaClass) o2;
+ return THIS.getClassName().equals(THAT.getClassName());
+ }
+
+
+ public int hashCode( Object o ) {
+ JavaClass THIS = (JavaClass) o;
+ return THIS.getClassName().hashCode();
+ }
+ };
+ /**
+ * In cases where we go ahead and create something,
+ * use the default SyntheticRepository, because we
+ * don't know any better.
+ */
+ private transient org.apache.bcel5_2_0.util.Repository repository = SyntheticRepository
+ .getInstance();
+
+
+ /**
+ * Constructor gets all contents as arguments.
+ *
+ * @param class_name_index Index into constant pool referencing a
+ * ConstantClass that represents this class.
+ * @param superclass_name_index Index into constant pool referencing a
+ * ConstantClass that represents this class's superclass.
+ * @param file_name File name
+ * @param major Major compiler version
+ * @param minor Minor compiler version
+ * @param access_flags Access rights defined by bit flags
+ * @param constant_pool Array of constants
+ * @param interfaces Implemented interfaces
+ * @param fields Class fields
+ * @param methods Class methods
+ * @param attributes Class attributes
+ * @param source Read from file or generated in memory?
+ */
+ public JavaClass(int class_name_index, int superclass_name_index, String file_name, int major,
+ int minor, int access_flags, ConstantPool constant_pool, int[] interfaces,
+ Field[] fields, Method[] methods, Attribute[] attributes, byte source) {
+ if (interfaces == null) {
+ interfaces = new int[0];
+ }
+ if (attributes == null) {
+ attributes = new Attribute[0];
+ }
+ if (fields == null) {
+ fields = new Field[0];
+ }
+ if (methods == null) {
+ methods = new Method[0];
+ }
+ this.class_name_index = class_name_index;
+ this.superclass_name_index = superclass_name_index;
+ this.file_name = file_name;
+ this.major = major;
+ this.minor = minor;
+ this.access_flags = access_flags;
+ this.constant_pool = constant_pool;
+ this.interfaces = interfaces;
+ this.fields = fields;
+ this.methods = methods;
+ this.attributes = attributes;
+ this.source = source;
+ // Get source file name if available
+ for (int i = 0; i < attributes.length; i++) {
+ if (attributes[i] instanceof SourceFile) {
+ source_file_name = ((SourceFile) attributes[i]).getSourceFileName();
+ break;
+ }
+ }
+ /* According to the specification the following entries must be of type
+ * `ConstantClass' but we check that anyway via the
+ * `ConstPool.getConstant' method.
+ */
+ class_name = constant_pool.getConstantString(class_name_index, Constants.CONSTANT_Class);
+ class_name = Utility.compactClassName(class_name, false);
+ int index = class_name.lastIndexOf('.');
+ if (index < 0) {
+ package_name = "";
+ } else {
+ package_name = class_name.substring(0, index);
+ }
+ if (superclass_name_index > 0) {
+ // May be zero -> class is java.lang.Object
+ superclass_name = constant_pool.getConstantString(superclass_name_index,
+ Constants.CONSTANT_Class);
+ superclass_name = Utility.compactClassName(superclass_name, false);
+ } else {
+ superclass_name = "java.lang.Object";
+ }
+ interface_names = new String[interfaces.length];
+ for (int i = 0; i < interfaces.length; i++) {
+ String str = constant_pool.getConstantString(interfaces[i], Constants.CONSTANT_Class);
+ interface_names[i] = Utility.compactClassName(str, false);
+ }
+ }
+
+
+ /**
+ * Constructor gets all contents as arguments.
+ *
+ * @param class_name_index Class name
+ * @param superclass_name_index Superclass name
+ * @param file_name File name
+ * @param major Major compiler version
+ * @param minor Minor compiler version
+ * @param access_flags Access rights defined by bit flags
+ * @param constant_pool Array of constants
+ * @param interfaces Implemented interfaces
+ * @param fields Class fields
+ * @param methods Class methods
+ * @param attributes Class attributes
+ */
+ public JavaClass(int class_name_index, int superclass_name_index, String file_name, int major,
+ int minor, int access_flags, ConstantPool constant_pool, int[] interfaces,
+ Field[] fields, Method[] methods, Attribute[] attributes) {
+ this(class_name_index, superclass_name_index, file_name, major, minor, access_flags,
+ constant_pool, interfaces, fields, methods, attributes, HEAP);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitJavaClass(this);
+ }
+
+
+ /* Print debug information depending on `JavaClass.debug'
+ */
+ static final void Debug( String str ) {
+ if (debug) {
+ System.out.println(str);
+ }
+ }
+
+
+ /**
+ * Dump class to a file.
+ *
+ * @param file Output file
+ * @throws IOException
+ */
+ public void dump( File file ) throws IOException {
+ String parent = file.getParent();
+ if (parent != null) {
+ File dir = new File(parent);
+ dir.mkdirs();
+ }
+ DataOutputStream dos = null;
+ try {
+ dos = new DataOutputStream(new FileOutputStream(file));
+ dump(dos);
+ } finally {
+ if (dos != null) {
+ dos.close();
+ }
+ }
+ }
+
+
+ /**
+ * Dump class to a file named file_name.
+ *
+ * @param _file_name Output file name
+ * @exception IOException
+ */
+ public void dump( String _file_name ) throws IOException {
+ dump(new File(_file_name));
+ }
+
+
+ /**
+ * @return class in binary format
+ */
+ public byte[] getBytes() {
+ ByteArrayOutputStream s = new ByteArrayOutputStream();
+ DataOutputStream ds = new DataOutputStream(s);
+ try {
+ dump(ds);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ ds.close();
+ } catch (IOException e2) {
+ e2.printStackTrace();
+ }
+ }
+ return s.toByteArray();
+ }
+
+
+ /**
+ * Dump Java class to output stream in binary format.
+ *
+ * @param file Output stream
+ * @exception IOException
+ */
+ public void dump( OutputStream file ) throws IOException {
+ dump(new DataOutputStream(file));
+ }
+
+
+ /**
+ * Dump Java class to output stream in binary format.
+ *
+ * @param file Output stream
+ * @exception IOException
+ */
+ public void dump( DataOutputStream file ) throws IOException {
+ file.writeInt(0xcafebabe);
+ file.writeShort(minor);
+ file.writeShort(major);
+ constant_pool.dump(file);
+ file.writeShort(access_flags);
+ file.writeShort(class_name_index);
+ file.writeShort(superclass_name_index);
+ file.writeShort(interfaces.length);
+ for (int i = 0; i < interfaces.length; i++) {
+ file.writeShort(interfaces[i]);
+ }
+ file.writeShort(fields.length);
+ for (int i = 0; i < fields.length; i++) {
+ fields[i].dump(file);
+ }
+ file.writeShort(methods.length);
+ for (int i = 0; i < methods.length; i++) {
+ methods[i].dump(file);
+ }
+ if (attributes != null) {
+ file.writeShort(attributes.length);
+ for (int i = 0; i < attributes.length; i++) {
+ attributes[i].dump(file);
+ }
+ } else {
+ file.writeShort(0);
+ }
+ file.flush();
+ }
+
+
+ /**
+ * @return Attributes of the class.
+ */
+ public Attribute[] getAttributes() {
+ return attributes;
+ }
+
+
+ /**
+ * @return Class name.
+ */
+ public String getClassName() {
+ return class_name;
+ }
+
+
+ /**
+ * @return Package name.
+ */
+ public String getPackageName() {
+ return package_name;
+ }
+
+
+ /**
+ * @return Class name index.
+ */
+ public int getClassNameIndex() {
+ return class_name_index;
+ }
+
+
+ /**
+ * @return Constant pool.
+ */
+ public ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @return Fields, i.e., variables of the class. Like the JVM spec
+ * mandates for the classfile format, these fields are those specific to
+ * this class, and not those of the superclass or superinterfaces.
+ */
+ public Field[] getFields() {
+ return fields;
+ }
+
+
+ /**
+ * @return File name of class, aka SourceFile attribute value
+ */
+ public String getFileName() {
+ return file_name;
+ }
+
+
+ /**
+ * @return Names of implemented interfaces.
+ */
+ public String[] getInterfaceNames() {
+ return interface_names;
+ }
+
+
+ /**
+ * @return Indices in constant pool of implemented interfaces.
+ */
+ public int[] getInterfaceIndices() {
+ return interfaces;
+ }
+
+
+ /**
+ * @return Major number of class file version.
+ */
+ public int getMajor() {
+ return major;
+ }
+
+
+ /**
+ * @return Methods of the class.
+ */
+ public Method[] getMethods() {
+ return methods;
+ }
+
+
+ /**
+ * @return A org.apache.bcel.classfile.Method corresponding to
+ * java.lang.reflect.Method if any
+ */
+ public Method getMethod( java.lang.reflect.Method m ) {
+ for (int i = 0; i < methods.length; i++) {
+ Method method = methods[i];
+ if (m.getName().equals(method.getName()) && (m.getModifiers() == method.getModifiers())
+ && Type.getSignature(m).equals(method.getSignature())) {
+ return method;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * @return Minor number of class file version.
+ */
+ public int getMinor() {
+ return minor;
+ }
+
+
+ /**
+ * @return sbsolute path to file where this class was read from
+ */
+ public String getSourceFileName() {
+ return source_file_name;
+ }
+
+
+ /**
+ * @return Superclass name.
+ */
+ public String getSuperclassName() {
+ return superclass_name;
+ }
+
+
+ /**
+ * @return Class name index.
+ */
+ public int getSuperclassNameIndex() {
+ return superclass_name_index;
+ }
+
+ static {
+ // Debugging ... on/off
+ debug = Boolean.getBoolean("JavaClass.debug");
+ // Get path separator either / or \ usually
+ String _sep = System.getProperty("file.separator");
+ if (_sep != null) {
+ try {
+ JavaClass.sep = _sep.charAt(0);
+ } catch (StringIndexOutOfBoundsException e) {
+ } // Never reached
+ }
+ }
+
+
+ /**
+ * @param attributes .
+ */
+ public void setAttributes( Attribute[] attributes ) {
+ this.attributes = attributes;
+ }
+
+
+ /**
+ * @param class_name .
+ */
+ public void setClassName( String class_name ) {
+ this.class_name = class_name;
+ }
+
+
+ /**
+ * @param class_name_index .
+ */
+ public void setClassNameIndex( int class_name_index ) {
+ this.class_name_index = class_name_index;
+ }
+
+
+ /**
+ * @param constant_pool .
+ */
+ public void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * @param fields .
+ */
+ public void setFields( Field[] fields ) {
+ this.fields = fields;
+ }
+
+
+ /**
+ * Set File name of class, aka SourceFile attribute value
+ */
+ public void setFileName( String file_name ) {
+ this.file_name = file_name;
+ }
+
+
+ /**
+ * @param interface_names .
+ */
+ public void setInterfaceNames( String[] interface_names ) {
+ this.interface_names = interface_names;
+ }
+
+
+ /**
+ * @param interfaces .
+ */
+ public void setInterfaces( int[] interfaces ) {
+ this.interfaces = interfaces;
+ }
+
+
+ /**
+ * @param major .
+ */
+ public void setMajor( int major ) {
+ this.major = major;
+ }
+
+
+ /**
+ * @param methods .
+ */
+ public void setMethods( Method[] methods ) {
+ this.methods = methods;
+ }
+
+
+ /**
+ * @param minor .
+ */
+ public void setMinor( int minor ) {
+ this.minor = minor;
+ }
+
+
+ /**
+ * Set absolute path to file this class was read from.
+ */
+ public void setSourceFileName( String source_file_name ) {
+ this.source_file_name = source_file_name;
+ }
+
+
+ /**
+ * @param superclass_name .
+ */
+ public void setSuperclassName( String superclass_name ) {
+ this.superclass_name = superclass_name;
+ }
+
+
+ /**
+ * @param superclass_name_index .
+ */
+ public void setSuperclassNameIndex( int superclass_name_index ) {
+ this.superclass_name_index = superclass_name_index;
+ }
+
+
+ /**
+ * @return String representing class contents.
+ */
+ public String toString() {
+ String access = Utility.accessToString(access_flags, true);
+ access = access.equals("") ? "" : (access + " ");
+ StringBuilder buf = new StringBuilder(128);
+ buf.append(access).append(Utility.classOrInterface(access_flags)).append(" ").append(
+ class_name).append(" extends ").append(
+ Utility.compactClassName(superclass_name, false)).append('\n');
+ int size = interfaces.length;
+ if (size > 0) {
+ buf.append("implements\t\t");
+ for (int i = 0; i < size; i++) {
+ buf.append(interface_names[i]);
+ if (i < size - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append('\n');
+ }
+ buf.append("filename\t\t").append(file_name).append('\n');
+ buf.append("compiled from\t\t").append(source_file_name).append('\n');
+ buf.append("compiler version\t").append(major).append(".").append(minor).append('\n');
+ buf.append("access flags\t\t").append(access_flags).append('\n');
+ buf.append("constant pool\t\t").append(constant_pool.getLength()).append(" entries\n");
+ buf.append("ACC_SUPER flag\t\t").append(isSuper()).append("\n");
+ if (attributes.length > 0) {
+ buf.append("\nAttribute(s):\n");
+ for (int i = 0; i < attributes.length; i++) {
+ buf.append(indent(attributes[i]));
+ }
+ }
+ if (fields.length > 0) {
+ buf.append("\n").append(fields.length).append(" fields:\n");
+ for (int i = 0; i < fields.length; i++) {
+ buf.append("\t").append(fields[i]).append('\n');
+ }
+ }
+ if (methods.length > 0) {
+ buf.append("\n").append(methods.length).append(" methods:\n");
+ for (int i = 0; i < methods.length; i++) {
+ buf.append("\t").append(methods[i]).append('\n');
+ }
+ }
+ return buf.toString();
+ }
+
+
+ private static final String indent( Object obj ) {
+ StringTokenizer tok = new StringTokenizer(obj.toString(), "\n");
+ StringBuilder buf = new StringBuilder();
+ while (tok.hasMoreTokens()) {
+ buf.append("\t").append(tok.nextToken()).append("\n");
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this class
+ */
+ public JavaClass copy() {
+ JavaClass c = null;
+ try {
+ c = (JavaClass) clone();
+ c.constant_pool = constant_pool.copy();
+ c.interfaces = (int[]) interfaces.clone();
+ c.interface_names = (String[]) interface_names.clone();
+ c.fields = new Field[fields.length];
+ for (int i = 0; i < fields.length; i++) {
+ c.fields[i] = fields[i].copy(c.constant_pool);
+ }
+ c.methods = new Method[methods.length];
+ for (int i = 0; i < methods.length; i++) {
+ c.methods[i] = methods[i].copy(c.constant_pool);
+ }
+ c.attributes = new Attribute[attributes.length];
+ for (int i = 0; i < attributes.length; i++) {
+ c.attributes[i] = attributes[i].copy(c.constant_pool);
+ }
+ } catch (CloneNotSupportedException e) {
+ }
+ return c;
+ }
+
+
+ public final boolean isSuper() {
+ return (access_flags & Constants.ACC_SUPER) != 0;
+ }
+
+
+ public final boolean isClass() {
+ return (access_flags & Constants.ACC_INTERFACE) == 0;
+ }
+
+
+ /** @return returns either HEAP (generated), FILE, or ZIP
+ */
+ public final byte getSource() {
+ return source;
+ }
+
+
+ /********************* New repository functionality *********************/
+ /**
+ * Gets the ClassRepository which holds its definition. By default
+ * this is the same as SyntheticRepository.getInstance();
+ */
+ public org.apache.bcel5_2_0.util.Repository getRepository() {
+ return repository;
+ }
+
+
+ /**
+ * Sets the ClassRepository which loaded the JavaClass.
+ * Should be called immediately after parsing is done.
+ */
+ public void setRepository( org.apache.bcel5_2_0.util.Repository repository ) {
+ this.repository = repository;
+ }
+
+
+ /** Equivalent to runtime "instanceof" operator.
+ *
+ * @return true if this JavaClass is derived from the super class
+ * @throws ClassNotFoundException if superclasses or superinterfaces
+ * of this object can't be found
+ */
+ public final boolean instanceOf( JavaClass super_class ) throws ClassNotFoundException {
+ if (this.equals(super_class)) {
+ return true;
+ }
+ JavaClass[] super_classes = getSuperClasses();
+ for (int i = 0; i < super_classes.length; i++) {
+ if (super_classes[i].equals(super_class)) {
+ return true;
+ }
+ }
+ if (super_class.isInterface()) {
+ return implementationOf(super_class);
+ }
+ return false;
+ }
+
+
+ /**
+ * @return true, if this class is an implementation of interface inter
+ * @throws ClassNotFoundException if superclasses or superinterfaces
+ * of this class can't be found
+ */
+ public boolean implementationOf( JavaClass inter ) throws ClassNotFoundException {
+ if (!inter.isInterface()) {
+ throw new IllegalArgumentException(inter.getClassName() + " is no interface");
+ }
+ if (this.equals(inter)) {
+ return true;
+ }
+ JavaClass[] super_interfaces = getAllInterfaces();
+ for (int i = 0; i < super_interfaces.length; i++) {
+ if (super_interfaces[i].equals(inter)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ /**
+ * @return the superclass for this JavaClass object, or null if this
+ * is java.lang.Object
+ * @throws ClassNotFoundException if the superclass can't be found
+ */
+ public JavaClass getSuperClass() throws ClassNotFoundException {
+ if ("java.lang.Object".equals(getClassName())) {
+ return null;
+ }
+ return repository.loadClass(getSuperclassName());
+ }
+
+
+ /**
+ * @return list of super classes of this class in ascending order, i.e.,
+ * java.lang.Object is always the last element
+ * @throws ClassNotFoundException if any of the superclasses can't be found
+ */
+ public JavaClass[] getSuperClasses() throws ClassNotFoundException {
+ JavaClass clazz = this;
+ List allSuperClasses = new ArrayList();
+ for (clazz = clazz.getSuperClass(); clazz != null; clazz = clazz.getSuperClass()) {
+ allSuperClasses.add(clazz);
+ }
+ return (JavaClass[]) allSuperClasses.toArray(new JavaClass[allSuperClasses.size()]);
+ }
+
+
+ /**
+ * Get interfaces directly implemented by this JavaClass.
+ */
+ public JavaClass[] getInterfaces() throws ClassNotFoundException {
+ String[] _interfaces = getInterfaceNames();
+ JavaClass[] classes = new JavaClass[_interfaces.length];
+ for (int i = 0; i < _interfaces.length; i++) {
+ classes[i] = repository.loadClass(_interfaces[i]);
+ }
+ return classes;
+ }
+
+
+ /**
+ * Get all interfaces implemented by this JavaClass (transitively).
+ */
+ public JavaClass[] getAllInterfaces() throws ClassNotFoundException {
+ ClassQueue queue = new ClassQueue();
+ Set allInterfaces = new TreeSet();
+ queue.enqueue(this);
+ while (!queue.empty()) {
+ JavaClass clazz = queue.dequeue();
+ JavaClass souper = clazz.getSuperClass();
+ JavaClass[] _interfaces = clazz.getInterfaces();
+ if (clazz.isInterface()) {
+ allInterfaces.add(clazz);
+ } else {
+ if (souper != null) {
+ queue.enqueue(souper);
+ }
+ }
+ for (int i = 0; i < _interfaces.length; i++) {
+ queue.enqueue(_interfaces[i]);
+ }
+ }
+ return (JavaClass[]) allInterfaces.toArray(new JavaClass[allInterfaces.size()]);
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two JavaClass objects are said to be equal when
+ * their class names are equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return the natural ordering of two JavaClasses.
+ * This ordering is based on the class name
+ */
+ public int compareTo( Object obj ) {
+ return getClassName().compareTo(((JavaClass) obj).getClassName());
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the class name.
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumber.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumber.java
index ca59b115..11866562 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumber.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumber.java
@@ -1,141 +1,141 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-
-/**
- * This class represents a (PC offset, line number) pair, i.e., a line number in
- * the source that corresponds to a relative address in the byte code. This
- * is used for debugging purposes.
- *
- * @version $Id: LineNumber.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see LineNumberTable
- */
-public final class LineNumber implements Cloneable, Node, Serializable {
-
- private int start_pc; // Program Counter (PC) corresponds to line
- private int line_number; // number in source file
-
-
- /**
- * Initialize from another object.
- */
- public LineNumber(LineNumber c) {
- this(c.getStartPC(), c.getLineNumber());
- }
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- LineNumber(DataInputStream file) throws IOException {
- this(file.readUnsignedShort(), file.readUnsignedShort());
- }
-
-
- /**
- * @param start_pc Program Counter (PC) corresponds to
- * @param line_number line number in source file
- */
- public LineNumber(int start_pc, int line_number) {
- this.start_pc = start_pc;
- this.line_number = line_number;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLineNumber(this);
- }
-
-
- /**
- * Dump line number/pc pair to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeShort(start_pc);
- file.writeShort(line_number);
- }
-
-
- /**
- * @return Corresponding source line
- */
- public final int getLineNumber() {
- return line_number;
- }
-
-
- /**
- * @return PC in code
- */
- public final int getStartPC() {
- return start_pc;
- }
-
-
- /**
- * @param line_number the source line number
- */
- public final void setLineNumber( int line_number ) {
- this.line_number = line_number;
- }
-
-
- /**
- * @param start_pc the pc for this line number
- */
- public final void setStartPC( int start_pc ) {
- this.start_pc = start_pc;
- }
-
-
- /**
- * @return String representation
- */
- public final String toString() {
- return "LineNumber(" + start_pc + ", " + line_number + ")";
- }
-
-
- /**
- * @return deep copy of this object
- */
- public LineNumber copy() {
- try {
- return (LineNumber) clone();
- } catch (CloneNotSupportedException e) {
- }
- return null;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+/**
+ * This class represents a (PC offset, line number) pair, i.e., a line number in
+ * the source that corresponds to a relative address in the byte code. This
+ * is used for debugging purposes.
+ *
+ * @version $Id: LineNumber.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see LineNumberTable
+ */
+public final class LineNumber implements Cloneable, Node, Serializable {
+
+ private int start_pc; // Program Counter (PC) corresponds to line
+ private int line_number; // number in source file
+
+
+ /**
+ * Initialize from another object.
+ */
+ public LineNumber(LineNumber c) {
+ this(c.getStartPC(), c.getLineNumber());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ LineNumber(DataInputStream file) throws IOException {
+ this(file.readUnsignedShort(), file.readUnsignedShort());
+ }
+
+
+ /**
+ * @param start_pc Program Counter (PC) corresponds to
+ * @param line_number line number in source file
+ */
+ public LineNumber(int start_pc, int line_number) {
+ this.start_pc = start_pc;
+ this.line_number = line_number;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLineNumber(this);
+ }
+
+
+ /**
+ * Dump line number/pc pair to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(start_pc);
+ file.writeShort(line_number);
+ }
+
+
+ /**
+ * @return Corresponding source line
+ */
+ public final int getLineNumber() {
+ return line_number;
+ }
+
+
+ /**
+ * @return PC in code
+ */
+ public final int getStartPC() {
+ return start_pc;
+ }
+
+
+ /**
+ * @param line_number the source line number
+ */
+ public final void setLineNumber( int line_number ) {
+ this.line_number = line_number;
+ }
+
+
+ /**
+ * @param start_pc the pc for this line number
+ */
+ public final void setStartPC( int start_pc ) {
+ this.start_pc = start_pc;
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return "LineNumber(" + start_pc + ", " + line_number + ")";
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public LineNumber copy() {
+ try {
+ return (LineNumber) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumberTable.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumberTable.java
index 5a92a8ab..c22c925f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumberTable.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LineNumberTable.java
@@ -1,209 +1,209 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a table of line numbers for debugging
- * purposes. This attribute is used by the Code attribute. It
- * contains pairs of PCs and line numbers.
- *
- * @version $Id: LineNumberTable.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Code
- * @see LineNumber
- */
-public final class LineNumberTable extends Attribute {
-
- private int line_number_table_length;
- private LineNumber[] line_number_table; // Table of line/numbers pairs
-
-
- /*
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use copy() for a physical copy.
- */
- public LineNumberTable(LineNumberTable c) {
- this(c.getNameIndex(), c.getLength(), c.getLineNumberTable(), c.getConstantPool());
- }
-
-
- /*
- * @param name_index Index of name
- * @param length Content length in bytes
- * @param line_number_table Table of line/numbers pairs
- * @param constant_pool Array of constants
- */
- public LineNumberTable(int name_index, int length, LineNumber[] line_number_table,
- ConstantPool constant_pool) {
- super(Constants.ATTR_LINE_NUMBER_TABLE, name_index, length, constant_pool);
- setLineNumberTable(line_number_table);
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index of name
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- LineNumberTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (LineNumber[]) null, constant_pool);
- line_number_table_length = (file.readUnsignedShort());
- line_number_table = new LineNumber[line_number_table_length];
- for (int i = 0; i < line_number_table_length; i++) {
- line_number_table[i] = new LineNumber(file);
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLineNumberTable(this);
- }
-
-
- /**
- * Dump line number table attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(line_number_table_length);
- for (int i = 0; i < line_number_table_length; i++) {
- line_number_table[i].dump(file);
- }
- }
-
-
- /**
- * @return Array of (pc offset, line number) pairs.
- */
- public final LineNumber[] getLineNumberTable() {
- return line_number_table;
- }
-
-
- /**
- * @param line_number_table the line number entries for this table
- */
- public final void setLineNumberTable( LineNumber[] line_number_table ) {
- this.line_number_table = line_number_table;
- line_number_table_length = (line_number_table == null) ? 0 : line_number_table.length;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuilder buf = new StringBuilder();
- StringBuilder line = new StringBuilder();
- String newLine = System.getProperty("line.separator", "\n");
- for (int i = 0; i < line_number_table_length; i++) {
- line.append(line_number_table[i].toString());
- if (i < line_number_table_length - 1) {
- line.append(", ");
- }
- if (line.length() > 72) {
- line.append(newLine);
- buf.append(line.toString());
- line.setLength(0);
- }
- }
- buf.append(line);
- return buf.toString();
- }
-
-
- /**
- * Map byte code positions to source code lines.
- *
- * @param pos byte code offset
- * @return corresponding line in source code
- */
- public int getSourceLine( int pos ) {
- int l = 0, r = line_number_table_length - 1;
- if (r < 0) {
- return -1;
- }
- int min_index = -1, min = -1;
- /* Do a binary search since the array is ordered.
- */
- do {
- int i = (l + r) / 2;
- int j = line_number_table[i].getStartPC();
- if (j == pos) {
- return line_number_table[i].getLineNumber();
- } else if (pos < j) {
- r = i - 1;
- } else {
- l = i + 1;
- }
- /* If exact match can't be found (which is the most common case)
- * return the line number that corresponds to the greatest index less
- * than pos.
- */
- if (j < pos && j > min) {
- min = j;
- min_index = i;
- }
- } while (l <= r);
- /* It's possible that we did not find any valid entry for the bytecode
- * offset we were looking for.
- */
- if (min_index < 0) {
- return -1;
- }
- return line_number_table[min_index].getLineNumber();
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- LineNumberTable c = (LineNumberTable) clone();
- c.line_number_table = new LineNumber[line_number_table_length];
- for (int i = 0; i < line_number_table_length; i++) {
- c.line_number_table[i] = line_number_table[i].copy();
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-
-
- public final int getTableLength() {
- return line_number_table_length;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a table of line numbers for debugging
+ * purposes. This attribute is used by the Code attribute. It
+ * contains pairs of PCs and line numbers.
+ *
+ * @version $Id: LineNumberTable.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Code
+ * @see LineNumber
+ */
+public final class LineNumberTable extends Attribute {
+
+ private int line_number_table_length;
+ private LineNumber[] line_number_table; // Table of line/numbers pairs
+
+
+ /*
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use copy() for a physical copy.
+ */
+ public LineNumberTable(LineNumberTable c) {
+ this(c.getNameIndex(), c.getLength(), c.getLineNumberTable(), c.getConstantPool());
+ }
+
+
+ /*
+ * @param name_index Index of name
+ * @param length Content length in bytes
+ * @param line_number_table Table of line/numbers pairs
+ * @param constant_pool Array of constants
+ */
+ public LineNumberTable(int name_index, int length, LineNumber[] line_number_table,
+ ConstantPool constant_pool) {
+ super(Constants.ATTR_LINE_NUMBER_TABLE, name_index, length, constant_pool);
+ setLineNumberTable(line_number_table);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index of name
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ LineNumberTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (LineNumber[]) null, constant_pool);
+ line_number_table_length = (file.readUnsignedShort());
+ line_number_table = new LineNumber[line_number_table_length];
+ for (int i = 0; i < line_number_table_length; i++) {
+ line_number_table[i] = new LineNumber(file);
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLineNumberTable(this);
+ }
+
+
+ /**
+ * Dump line number table attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(line_number_table_length);
+ for (int i = 0; i < line_number_table_length; i++) {
+ line_number_table[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return Array of (pc offset, line number) pairs.
+ */
+ public final LineNumber[] getLineNumberTable() {
+ return line_number_table;
+ }
+
+
+ /**
+ * @param line_number_table the line number entries for this table
+ */
+ public final void setLineNumberTable( LineNumber[] line_number_table ) {
+ this.line_number_table = line_number_table;
+ line_number_table_length = (line_number_table == null) ? 0 : line_number_table.length;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuilder buf = new StringBuilder();
+ StringBuilder line = new StringBuilder();
+ String newLine = System.getProperty("line.separator", "\n");
+ for (int i = 0; i < line_number_table_length; i++) {
+ line.append(line_number_table[i].toString());
+ if (i < line_number_table_length - 1) {
+ line.append(", ");
+ }
+ if (line.length() > 72) {
+ line.append(newLine);
+ buf.append(line.toString());
+ line.setLength(0);
+ }
+ }
+ buf.append(line);
+ return buf.toString();
+ }
+
+
+ /**
+ * Map byte code positions to source code lines.
+ *
+ * @param pos byte code offset
+ * @return corresponding line in source code
+ */
+ public int getSourceLine( int pos ) {
+ int l = 0, r = line_number_table_length - 1;
+ if (r < 0) {
+ return -1;
+ }
+ int min_index = -1, min = -1;
+ /* Do a binary search since the array is ordered.
+ */
+ do {
+ int i = (l + r) / 2;
+ int j = line_number_table[i].getStartPC();
+ if (j == pos) {
+ return line_number_table[i].getLineNumber();
+ } else if (pos < j) {
+ r = i - 1;
+ } else {
+ l = i + 1;
+ }
+ /* If exact match can't be found (which is the most common case)
+ * return the line number that corresponds to the greatest index less
+ * than pos.
+ */
+ if (j < pos && j > min) {
+ min = j;
+ min_index = i;
+ }
+ } while (l <= r);
+ /* It's possible that we did not find any valid entry for the bytecode
+ * offset we were looking for.
+ */
+ if (min_index < 0) {
+ return -1;
+ }
+ return line_number_table[min_index].getLineNumber();
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ LineNumberTable c = (LineNumberTable) clone();
+ c.line_number_table = new LineNumber[line_number_table_length];
+ for (int i = 0; i < line_number_table_length; i++) {
+ c.line_number_table[i] = line_number_table[i].copy();
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+
+
+ public final int getTableLength() {
+ return line_number_table_length;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariable.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariable.java
index 52892885..95508aa4 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariable.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariable.java
@@ -1,249 +1,249 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a local variable within a method. It contains its
- * scope, name, signature and index on the method's frame.
- *
- * @version $Id: LocalVariable.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see LocalVariableTable
- */
-public final class LocalVariable implements Constants, Cloneable, Node, Serializable {
-
- private int start_pc; // Range in which the variable is valid
- private int length;
- private int name_index; // Index in constant pool of variable name
- private int signature_index; // Index of variable signature
- private int index; /* Variable is `index'th local variable on
- * this method's frame.
- */
- private ConstantPool constant_pool;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use copy() for a physical copy.
- */
- public LocalVariable(LocalVariable c) {
- this(c.getStartPC(), c.getLength(), c.getNameIndex(), c.getSignatureIndex(), c.getIndex(),
- c.getConstantPool());
- }
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- LocalVariable(DataInputStream file, ConstantPool constant_pool) throws IOException {
- this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file
- .readUnsignedShort(), file.readUnsignedShort(), constant_pool);
- }
-
-
- /**
- * @param start_pc Range in which the variable
- * @param length ... is valid
- * @param name_index Index in constant pool of variable name
- * @param signature_index Index of variable's signature
- * @param index Variable is `index'th local variable on the method's frame
- * @param constant_pool Array of constants
- */
- public LocalVariable(int start_pc, int length, int name_index, int signature_index, int index,
- ConstantPool constant_pool) {
- this.start_pc = start_pc;
- this.length = length;
- this.name_index = name_index;
- this.signature_index = signature_index;
- this.index = index;
- this.constant_pool = constant_pool;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLocalVariable(this);
- }
-
-
- /**
- * Dump local variable to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeShort(start_pc);
- file.writeShort(length);
- file.writeShort(name_index);
- file.writeShort(signature_index);
- file.writeShort(index);
- }
-
-
- /**
- * @return Constant pool used by this object.
- */
- public final ConstantPool getConstantPool() {
- return constant_pool;
- }
-
-
- /**
- * @return Variable is valid within getStartPC() .. getStartPC()+getLength()
- */
- public final int getLength() {
- return length;
- }
-
-
- /**
- * @return Variable name.
- */
- public final String getName() {
- ConstantUtf8 c;
- c = (ConstantUtf8) constant_pool.getConstant(name_index, CONSTANT_Utf8);
- return c.getBytes();
- }
-
-
- /**
- * @return Index in constant pool of variable name.
- */
- public final int getNameIndex() {
- return name_index;
- }
-
-
- /**
- * @return Signature.
- */
- public final String getSignature() {
- ConstantUtf8 c;
- c = (ConstantUtf8) constant_pool.getConstant(signature_index, CONSTANT_Utf8);
- return c.getBytes();
- }
-
-
- /**
- * @return Index in constant pool of variable signature.
- */
- public final int getSignatureIndex() {
- return signature_index;
- }
-
-
- /**
- * @return index of register where variable is stored
- */
- public final int getIndex() {
- return index;
- }
-
-
- /**
- * @return Start of range where he variable is valid
- */
- public final int getStartPC() {
- return start_pc;
- }
-
-
- /**
- * @param constant_pool Constant pool to be used for this object.
- */
- public final void setConstantPool( ConstantPool constant_pool ) {
- this.constant_pool = constant_pool;
- }
-
-
- /**
- * @param length the length of this local variable
- */
- public final void setLength( int length ) {
- this.length = length;
- }
-
-
- /**
- * @param name_index the index into the constant pool for the name of this variable
- */
- public final void setNameIndex( int name_index ) {
- this.name_index = name_index;
- }
-
-
- /**
- * @param signature_index the index into the constant pool for the signature of this variable
- */
- public final void setSignatureIndex( int signature_index ) {
- this.signature_index = signature_index;
- }
-
-
- /**
- * @param index the index in the local variable table of this variable
- */
- public final void setIndex( int index ) {
- this.index = index;
- }
-
-
- /**
- * @param start_pc Specify range where the local variable is valid.
- */
- public final void setStartPC( int start_pc ) {
- this.start_pc = start_pc;
- }
-
-
- /**
- * @return string representation.
- */
- public final String toString() {
- String name = getName(), signature = Utility.signatureToString(getSignature());
- return "LocalVariable(start_pc = " + start_pc + ", length = " + length + ", index = "
- + index + ":" + signature + " " + name + ")";
- }
-
-
- /**
- * @return deep copy of this object
- */
- public LocalVariable copy() {
- try {
- return (LocalVariable) clone();
- } catch (CloneNotSupportedException e) {
- }
- return null;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a local variable within a method. It contains its
+ * scope, name, signature and index on the method's frame.
+ *
+ * @version $Id: LocalVariable.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see LocalVariableTable
+ */
+public final class LocalVariable implements Constants, Cloneable, Node, Serializable {
+
+ private int start_pc; // Range in which the variable is valid
+ private int length;
+ private int name_index; // Index in constant pool of variable name
+ private int signature_index; // Index of variable signature
+ private int index; /* Variable is `index'th local variable on
+ * this method's frame.
+ */
+ private ConstantPool constant_pool;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use copy() for a physical copy.
+ */
+ public LocalVariable(LocalVariable c) {
+ this(c.getStartPC(), c.getLength(), c.getNameIndex(), c.getSignatureIndex(), c.getIndex(),
+ c.getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ LocalVariable(DataInputStream file, ConstantPool constant_pool) throws IOException {
+ this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file
+ .readUnsignedShort(), file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param start_pc Range in which the variable
+ * @param length ... is valid
+ * @param name_index Index in constant pool of variable name
+ * @param signature_index Index of variable's signature
+ * @param index Variable is `index'th local variable on the method's frame
+ * @param constant_pool Array of constants
+ */
+ public LocalVariable(int start_pc, int length, int name_index, int signature_index, int index,
+ ConstantPool constant_pool) {
+ this.start_pc = start_pc;
+ this.length = length;
+ this.name_index = name_index;
+ this.signature_index = signature_index;
+ this.index = index;
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLocalVariable(this);
+ }
+
+
+ /**
+ * Dump local variable to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(start_pc);
+ file.writeShort(length);
+ file.writeShort(name_index);
+ file.writeShort(signature_index);
+ file.writeShort(index);
+ }
+
+
+ /**
+ * @return Constant pool used by this object.
+ */
+ public final ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @return Variable is valid within getStartPC() .. getStartPC()+getLength()
+ */
+ public final int getLength() {
+ return length;
+ }
+
+
+ /**
+ * @return Variable name.
+ */
+ public final String getName() {
+ ConstantUtf8 c;
+ c = (ConstantUtf8) constant_pool.getConstant(name_index, CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return Index in constant pool of variable name.
+ */
+ public final int getNameIndex() {
+ return name_index;
+ }
+
+
+ /**
+ * @return Signature.
+ */
+ public final String getSignature() {
+ ConstantUtf8 c;
+ c = (ConstantUtf8) constant_pool.getConstant(signature_index, CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return Index in constant pool of variable signature.
+ */
+ public final int getSignatureIndex() {
+ return signature_index;
+ }
+
+
+ /**
+ * @return index of register where variable is stored
+ */
+ public final int getIndex() {
+ return index;
+ }
+
+
+ /**
+ * @return Start of range where he variable is valid
+ */
+ public final int getStartPC() {
+ return start_pc;
+ }
+
+
+ /**
+ * @param constant_pool Constant pool to be used for this object.
+ */
+ public final void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * @param length the length of this local variable
+ */
+ public final void setLength( int length ) {
+ this.length = length;
+ }
+
+
+ /**
+ * @param name_index the index into the constant pool for the name of this variable
+ */
+ public final void setNameIndex( int name_index ) {
+ this.name_index = name_index;
+ }
+
+
+ /**
+ * @param signature_index the index into the constant pool for the signature of this variable
+ */
+ public final void setSignatureIndex( int signature_index ) {
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * @param index the index in the local variable table of this variable
+ */
+ public final void setIndex( int index ) {
+ this.index = index;
+ }
+
+
+ /**
+ * @param start_pc Specify range where the local variable is valid.
+ */
+ public final void setStartPC( int start_pc ) {
+ this.start_pc = start_pc;
+ }
+
+
+ /**
+ * @return string representation.
+ */
+ public final String toString() {
+ String name = getName(), signature = Utility.signatureToString(getSignature());
+ return "LocalVariable(start_pc = " + start_pc + ", length = " + length + ", index = "
+ + index + ":" + signature + " " + name + ")";
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public LocalVariable copy() {
+ try {
+ return (LocalVariable) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariableTable.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariableTable.java
index 2c9d22b8..83ebc558 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariableTable.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/LocalVariableTable.java
@@ -1,198 +1,198 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents colection of local variables in a
- * method. This attribute is contained in the Code attribute.
- *
- * @version $Id: LocalVariableTable.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Code
- * @see LocalVariable
- */
-public class LocalVariableTable extends Attribute {
-
- private int local_variable_table_length; // Table of local
- private LocalVariable[] local_variable_table; // variables
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use copy() for a physical copy.
- */
- public LocalVariableTable(LocalVariableTable c) {
- this(c.getNameIndex(), c.getLength(), c.getLocalVariableTable(), c.getConstantPool());
- }
-
-
- /**
- * @param name_index Index in constant pool to `LocalVariableTable'
- * @param length Content length in bytes
- * @param local_variable_table Table of local variables
- * @param constant_pool Array of constants
- */
- public LocalVariableTable(int name_index, int length, LocalVariable[] local_variable_table,
- ConstantPool constant_pool) {
- super(Constants.ATTR_LOCAL_VARIABLE_TABLE, name_index, length, constant_pool);
- setLocalVariableTable(local_variable_table);
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- LocalVariableTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (LocalVariable[]) null, constant_pool);
- local_variable_table_length = (file.readUnsignedShort());
- local_variable_table = new LocalVariable[local_variable_table_length];
- for (int i = 0; i < local_variable_table_length; i++) {
- local_variable_table[i] = new LocalVariable(file, constant_pool);
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLocalVariableTable(this);
- }
-
-
- /**
- * Dump local variable table attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(local_variable_table_length);
- for (int i = 0; i < local_variable_table_length; i++) {
- local_variable_table[i].dump(file);
- }
- }
-
-
- /**
- * @return Array of local variables of method.
- */
- public final LocalVariable[] getLocalVariableTable() {
- return local_variable_table;
- }
-
-
- /**
- * @return first matching variable using index
- *
- * @param index the variable slot
- *
- * @return the first LocalVariable that matches the slot or null if not found
- *
- * @deprecated since 5.2 because multiple variables can share the
- * same slot, use getLocalVariable(int index, int pc) instead.
- */
- public final LocalVariable getLocalVariable( int index ) {
- for (int i = 0; i < local_variable_table_length; i++) {
- if (local_variable_table[i].getIndex() == index) {
- return local_variable_table[i];
- }
- }
- return null;
- }
-
-
- /**
- * @return matching variable using index when variable is used at supplied pc
- *
- * @param index the variable slot
- * @param pc the current pc that this variable is alive
- *
- * @return the LocalVariable that matches or null if not found
- */
- public final LocalVariable getLocalVariable( int index, int pc ) {
- for (int i = 0; i < local_variable_table_length; i++) {
- if (local_variable_table[i].getIndex() == index) {
- int start_pc = local_variable_table[i].getStartPC();
- int end_pc = start_pc + local_variable_table[i].getLength();
- if ((pc >= start_pc) && (pc < end_pc)) {
- return local_variable_table[i];
- }
- }
- }
- return null;
- }
-
-
- public final void setLocalVariableTable( LocalVariable[] local_variable_table ) {
- this.local_variable_table = local_variable_table;
- local_variable_table_length = (local_variable_table == null)
- ? 0
- : local_variable_table.length;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuilder buf = new StringBuilder("");
- for (int i = 0; i < local_variable_table_length; i++) {
- buf.append(local_variable_table[i].toString());
- if (i < local_variable_table_length - 1) {
- buf.append('\n');
- }
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- LocalVariableTable c = (LocalVariableTable) clone();
- c.local_variable_table = new LocalVariable[local_variable_table_length];
- for (int i = 0; i < local_variable_table_length; i++) {
- c.local_variable_table[i] = local_variable_table[i].copy();
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-
-
- public final int getTableLength() {
- return local_variable_table_length;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents colection of local variables in a
+ * method. This attribute is contained in the Code attribute.
+ *
+ * @version $Id: LocalVariableTable.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Code
+ * @see LocalVariable
+ */
+public class LocalVariableTable extends Attribute {
+
+ private int local_variable_table_length; // Table of local
+ private LocalVariable[] local_variable_table; // variables
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use copy() for a physical copy.
+ */
+ public LocalVariableTable(LocalVariableTable c) {
+ this(c.getNameIndex(), c.getLength(), c.getLocalVariableTable(), c.getConstantPool());
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to `LocalVariableTable'
+ * @param length Content length in bytes
+ * @param local_variable_table Table of local variables
+ * @param constant_pool Array of constants
+ */
+ public LocalVariableTable(int name_index, int length, LocalVariable[] local_variable_table,
+ ConstantPool constant_pool) {
+ super(Constants.ATTR_LOCAL_VARIABLE_TABLE, name_index, length, constant_pool);
+ setLocalVariableTable(local_variable_table);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ LocalVariableTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (LocalVariable[]) null, constant_pool);
+ local_variable_table_length = (file.readUnsignedShort());
+ local_variable_table = new LocalVariable[local_variable_table_length];
+ for (int i = 0; i < local_variable_table_length; i++) {
+ local_variable_table[i] = new LocalVariable(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLocalVariableTable(this);
+ }
+
+
+ /**
+ * Dump local variable table attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(local_variable_table_length);
+ for (int i = 0; i < local_variable_table_length; i++) {
+ local_variable_table[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return Array of local variables of method.
+ */
+ public final LocalVariable[] getLocalVariableTable() {
+ return local_variable_table;
+ }
+
+
+ /**
+ * @return first matching variable using index
+ *
+ * @param index the variable slot
+ *
+ * @return the first LocalVariable that matches the slot or null if not found
+ *
+ * @deprecated since 5.2 because multiple variables can share the
+ * same slot, use getLocalVariable(int index, int pc) instead.
+ */
+ public final LocalVariable getLocalVariable( int index ) {
+ for (int i = 0; i < local_variable_table_length; i++) {
+ if (local_variable_table[i].getIndex() == index) {
+ return local_variable_table[i];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * @return matching variable using index when variable is used at supplied pc
+ *
+ * @param index the variable slot
+ * @param pc the current pc that this variable is alive
+ *
+ * @return the LocalVariable that matches or null if not found
+ */
+ public final LocalVariable getLocalVariable( int index, int pc ) {
+ for (int i = 0; i < local_variable_table_length; i++) {
+ if (local_variable_table[i].getIndex() == index) {
+ int start_pc = local_variable_table[i].getStartPC();
+ int end_pc = start_pc + local_variable_table[i].getLength();
+ if ((pc >= start_pc) && (pc < end_pc)) {
+ return local_variable_table[i];
+ }
+ }
+ }
+ return null;
+ }
+
+
+ public final void setLocalVariableTable( LocalVariable[] local_variable_table ) {
+ this.local_variable_table = local_variable_table;
+ local_variable_table_length = (local_variable_table == null)
+ ? 0
+ : local_variable_table.length;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuilder buf = new StringBuilder("");
+ for (int i = 0; i < local_variable_table_length; i++) {
+ buf.append(local_variable_table[i].toString());
+ if (i < local_variable_table_length - 1) {
+ buf.append('\n');
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ LocalVariableTable c = (LocalVariableTable) clone();
+ c.local_variable_table = new LocalVariable[local_variable_table_length];
+ for (int i = 0; i < local_variable_table_length; i++) {
+ c.local_variable_table[i] = local_variable_table[i].copy();
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+
+
+ public final int getTableLength() {
+ return local_variable_table_length;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Method.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Method.java
index 889e8e3b..5811bf01 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Method.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Method.java
@@ -1,255 +1,255 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.generic.Type;
-import org.apache.bcel5_2_0.util.BCELComparator;
-
-/**
- * This class represents the method info structure, i.e., the representation
- * for a method in the class. See JVM specification for details.
- * A method has access flags, a name, a signature and a number of attributes.
- *
- * @version $Id: Method.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class Method extends FieldOrMethod {
-
- private static BCELComparator _cmp = new BCELComparator() {
-
- public boolean equals( Object o1, Object o2 ) {
- Method THIS = (Method) o1;
- Method THAT = (Method) o2;
- return THIS.getName().equals(THAT.getName())
- && THIS.getSignature().equals(THAT.getSignature());
- }
-
-
- public int hashCode( Object o ) {
- Method THIS = (Method) o;
- return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
- }
- };
-
-
- /**
- * Empty constructor, all attributes have to be defined via `setXXX'
- * methods. Use at your own risk.
- */
- public Method() {
- }
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public Method(Method c) {
- super(c);
- }
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- * @throws ClassFormatException
- */
- Method(DataInputStream file, ConstantPool constant_pool) throws IOException,
- ClassFormatException {
- super(file, constant_pool);
- }
-
-
- /**
- * @param access_flags Access rights of method
- * @param name_index Points to field name in constant pool
- * @param signature_index Points to encoded signature
- * @param attributes Collection of attributes
- * @param constant_pool Array of constants
- */
- public Method(int access_flags, int name_index, int signature_index, Attribute[] attributes,
- ConstantPool constant_pool) {
- super(access_flags, name_index, signature_index, attributes, constant_pool);
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitMethod(this);
- }
-
-
- /**
- * @return Code attribute of method, if any
- */
- public final Code getCode() {
- for (int i = 0; i < attributes_count; i++) {
- if (attributes[i] instanceof Code) {
- return (Code) attributes[i];
- }
- }
- return null;
- }
-
-
- /**
- * @return ExceptionTable attribute of method, if any, i.e., list all
- * exceptions the method may throw not exception handlers!
- */
- public final ExceptionTable getExceptionTable() {
- for (int i = 0; i < attributes_count; i++) {
- if (attributes[i] instanceof ExceptionTable) {
- return (ExceptionTable) attributes[i];
- }
- }
- return null;
- }
-
-
- /** @return LocalVariableTable of code attribute if any, i.e. the call is forwarded
- * to the Code atribute.
- */
- public final LocalVariableTable getLocalVariableTable() {
- Code code = getCode();
- if (code == null) {
- return null;
- }
- return code.getLocalVariableTable();
- }
-
-
- /** @return LineNumberTable of code attribute if any, i.e. the call is forwarded
- * to the Code atribute.
- */
- public final LineNumberTable getLineNumberTable() {
- Code code = getCode();
- if (code == null) {
- return null;
- }
- return code.getLineNumberTable();
- }
-
-
- /**
- * Return string representation close to declaration format,
- * `public static void main(String[] args) throws IOException', e.g.
- *
- * @return String representation of the method.
- */
- public final String toString() {
- ConstantUtf8 c;
- String name, signature, access; // Short cuts to constant pool
- StringBuilder buf;
- access = Utility.accessToString(access_flags);
- // Get name and signature from constant pool
- c = (ConstantUtf8) constant_pool.getConstant(signature_index, Constants.CONSTANT_Utf8);
- signature = c.getBytes();
- c = (ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8);
- name = c.getBytes();
- signature = Utility.methodSignatureToString(signature, name, access, true,
- getLocalVariableTable());
- buf = new StringBuilder(signature);
- for (int i = 0; i < attributes_count; i++) {
- Attribute a = attributes[i];
- if (!((a instanceof Code) || (a instanceof ExceptionTable))) {
- buf.append(" [").append(a.toString()).append("]");
- }
- }
- ExceptionTable e = getExceptionTable();
- if (e != null) {
- String str = e.toString();
- if (!str.equals("")) {
- buf.append("\n\t\tthrows ").append(str);
- }
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this method
- */
- public final Method copy( ConstantPool _constant_pool ) {
- return (Method) copy_(_constant_pool);
- }
-
-
- /**
- * @return return type of method
- */
- public Type getReturnType() {
- return Type.getReturnType(getSignature());
- }
-
-
- /**
- * @return array of method argument types
- */
- public Type[] getArgumentTypes() {
- return Type.getArgumentTypes(getSignature());
- }
-
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator( BCELComparator comparator ) {
- _cmp = comparator;
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two method objects are said to be equal when
- * their names and signatures are equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals( Object obj ) {
- return _cmp.equals(this, obj);
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the method's name XOR signature.
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.generic.Type;
+import org.apache.bcel5_2_0.util.BCELComparator;
+
+/**
+ * This class represents the method info structure, i.e., the representation
+ * for a method in the class. See JVM specification for details.
+ * A method has access flags, a name, a signature and a number of attributes.
+ *
+ * @version $Id: Method.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class Method extends FieldOrMethod {
+
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ Method THIS = (Method) o1;
+ Method THAT = (Method) o2;
+ return THIS.getName().equals(THAT.getName())
+ && THIS.getSignature().equals(THAT.getSignature());
+ }
+
+
+ public int hashCode( Object o ) {
+ Method THIS = (Method) o;
+ return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
+ }
+ };
+
+
+ /**
+ * Empty constructor, all attributes have to be defined via `setXXX'
+ * methods. Use at your own risk.
+ */
+ public Method() {
+ }
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public Method(Method c) {
+ super(c);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ * @throws ClassFormatException
+ */
+ Method(DataInputStream file, ConstantPool constant_pool) throws IOException,
+ ClassFormatException {
+ super(file, constant_pool);
+ }
+
+
+ /**
+ * @param access_flags Access rights of method
+ * @param name_index Points to field name in constant pool
+ * @param signature_index Points to encoded signature
+ * @param attributes Collection of attributes
+ * @param constant_pool Array of constants
+ */
+ public Method(int access_flags, int name_index, int signature_index, Attribute[] attributes,
+ ConstantPool constant_pool) {
+ super(access_flags, name_index, signature_index, attributes, constant_pool);
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitMethod(this);
+ }
+
+
+ /**
+ * @return Code attribute of method, if any
+ */
+ public final Code getCode() {
+ for (int i = 0; i < attributes_count; i++) {
+ if (attributes[i] instanceof Code) {
+ return (Code) attributes[i];
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * @return ExceptionTable attribute of method, if any, i.e., list all
+ * exceptions the method may throw not exception handlers!
+ */
+ public final ExceptionTable getExceptionTable() {
+ for (int i = 0; i < attributes_count; i++) {
+ if (attributes[i] instanceof ExceptionTable) {
+ return (ExceptionTable) attributes[i];
+ }
+ }
+ return null;
+ }
+
+
+ /** @return LocalVariableTable of code attribute if any, i.e. the call is forwarded
+ * to the Code atribute.
+ */
+ public final LocalVariableTable getLocalVariableTable() {
+ Code code = getCode();
+ if (code == null) {
+ return null;
+ }
+ return code.getLocalVariableTable();
+ }
+
+
+ /** @return LineNumberTable of code attribute if any, i.e. the call is forwarded
+ * to the Code atribute.
+ */
+ public final LineNumberTable getLineNumberTable() {
+ Code code = getCode();
+ if (code == null) {
+ return null;
+ }
+ return code.getLineNumberTable();
+ }
+
+
+ /**
+ * Return string representation close to declaration format,
+ * `public static void main(String[] args) throws IOException', e.g.
+ *
+ * @return String representation of the method.
+ */
+ public final String toString() {
+ ConstantUtf8 c;
+ String name, signature, access; // Short cuts to constant pool
+ StringBuilder buf;
+ access = Utility.accessToString(access_flags);
+ // Get name and signature from constant pool
+ c = (ConstantUtf8) constant_pool.getConstant(signature_index, Constants.CONSTANT_Utf8);
+ signature = c.getBytes();
+ c = (ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8);
+ name = c.getBytes();
+ signature = Utility.methodSignatureToString(signature, name, access, true,
+ getLocalVariableTable());
+ buf = new StringBuilder(signature);
+ for (int i = 0; i < attributes_count; i++) {
+ Attribute a = attributes[i];
+ if (!((a instanceof Code) || (a instanceof ExceptionTable))) {
+ buf.append(" [").append(a.toString()).append("]");
+ }
+ }
+ ExceptionTable e = getExceptionTable();
+ if (e != null) {
+ String str = e.toString();
+ if (!str.equals("")) {
+ buf.append("\n\t\tthrows ").append(str);
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this method
+ */
+ public final Method copy( ConstantPool _constant_pool ) {
+ return (Method) copy_(_constant_pool);
+ }
+
+
+ /**
+ * @return return type of method
+ */
+ public Type getReturnType() {
+ return Type.getReturnType(getSignature());
+ }
+
+
+ /**
+ * @return array of method argument types
+ */
+ public Type[] getArgumentTypes() {
+ return Type.getArgumentTypes(getSignature());
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two method objects are said to be equal when
+ * their names and signatures are equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the method's name XOR signature.
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Node.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Node.java
index 59e3573f..0a2018f7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Node.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Node.java
@@ -1,28 +1,28 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-/**
- * Denote class to have an accept method();
- *
- * @version $Id: Node.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface Node {
-
- public void accept( Visitor obj );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+/**
+ * Denote class to have an accept method();
+ *
+ * @version $Id: Node.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface Node {
+
+ public void accept( Visitor obj );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/PMGClass.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/PMGClass.java
index 393b5666..a4c9cb72 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/PMGClass.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/PMGClass.java
@@ -1,168 +1,168 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from Attribute and represents a reference
- * to a PMG attribute.
- *
- * @version $Id: PMGClass.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- */
-public final class PMGClass extends Attribute {
-
- private int pmg_class_index, pmg_index;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public PMGClass(PMGClass c) {
- this(c.getNameIndex(), c.getLength(), c.getPMGIndex(), c.getPMGClassIndex(), c
- .getConstantPool());
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- PMGClass(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, file.readUnsignedShort(), file.readUnsignedShort(), constant_pool);
- }
-
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param pmg_index index in constant pool for source file name
- * @param pmg_class_index Index in constant pool to CONSTANT_Utf8
- * @param constant_pool Array of constants
- */
- public PMGClass(int name_index, int length, int pmg_index, int pmg_class_index,
- ConstantPool constant_pool) {
- super(Constants.ATTR_PMG, name_index, length, constant_pool);
- this.pmg_index = pmg_index;
- this.pmg_class_index = pmg_class_index;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- System.err.println("Visiting non-standard PMGClass object");
- }
-
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(pmg_index);
- file.writeShort(pmg_class_index);
- }
-
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getPMGClassIndex() {
- return pmg_class_index;
- }
-
-
- /**
- * @param pmg_class_index
- */
- public final void setPMGClassIndex( int pmg_class_index ) {
- this.pmg_class_index = pmg_class_index;
- }
-
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getPMGIndex() {
- return pmg_index;
- }
-
-
- /**
- * @param pmg_index
- */
- public final void setPMGIndex( int pmg_index ) {
- this.pmg_index = pmg_index;
- }
-
-
- /**
- * @return PMG name.
- */
- public final String getPMGName() {
- ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(pmg_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
-
- /**
- * @return PMG class name.
- */
- public final String getPMGClassName() {
- ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(pmg_class_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
-
- /**
- * @return String representation
- */
- public final String toString() {
- return "PMGClass(" + getPMGName() + ", " + getPMGClassName() + ")";
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- return (PMGClass) clone();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from Attribute and represents a reference
+ * to a PMG attribute.
+ *
+ * @version $Id: PMGClass.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ */
+public final class PMGClass extends Attribute {
+
+ private int pmg_class_index, pmg_index;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public PMGClass(PMGClass c) {
+ this(c.getNameIndex(), c.getLength(), c.getPMGIndex(), c.getPMGClassIndex(), c
+ .getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ PMGClass(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, file.readUnsignedShort(), file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param pmg_index index in constant pool for source file name
+ * @param pmg_class_index Index in constant pool to CONSTANT_Utf8
+ * @param constant_pool Array of constants
+ */
+ public PMGClass(int name_index, int length, int pmg_index, int pmg_class_index,
+ ConstantPool constant_pool) {
+ super(Constants.ATTR_PMG, name_index, length, constant_pool);
+ this.pmg_index = pmg_index;
+ this.pmg_class_index = pmg_class_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ System.err.println("Visiting non-standard PMGClass object");
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(pmg_index);
+ file.writeShort(pmg_class_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getPMGClassIndex() {
+ return pmg_class_index;
+ }
+
+
+ /**
+ * @param pmg_class_index
+ */
+ public final void setPMGClassIndex( int pmg_class_index ) {
+ this.pmg_class_index = pmg_class_index;
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getPMGIndex() {
+ return pmg_index;
+ }
+
+
+ /**
+ * @param pmg_index
+ */
+ public final void setPMGIndex( int pmg_index ) {
+ this.pmg_index = pmg_index;
+ }
+
+
+ /**
+ * @return PMG name.
+ */
+ public final String getPMGName() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(pmg_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return PMG class name.
+ */
+ public final String getPMGClassName() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(pmg_class_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return "PMGClass(" + getPMGName() + ", " + getPMGClassName() + ")";
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ return (PMGClass) clone();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Signature.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Signature.java
index 1ff83396..9a166577 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Signature.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Signature.java
@@ -1,274 +1,274 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from Attribute and represents a reference
- * to a GJ attribute.
- *
- * @version $Id: Signature.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- */
-public final class Signature extends Attribute {
-
- private int signature_index;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public Signature(Signature c) {
- this(c.getNameIndex(), c.getLength(), c.getSignatureIndex(), c.getConstantPool());
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- Signature(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, file.readUnsignedShort(), constant_pool);
- }
-
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param signature_index Index in constant pool to CONSTANT_Utf8
- * @param constant_pool Array of constants
- */
- public Signature(int name_index, int length, int signature_index, ConstantPool constant_pool) {
- super(Constants.ATTR_SIGNATURE, name_index, length, constant_pool);
- this.signature_index = signature_index;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- //System.err.println("Visiting non-standard Signature object");
- v.visitSignature(this);
- }
-
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(signature_index);
- }
-
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getSignatureIndex() {
- return signature_index;
- }
-
-
- /**
- * @param signature_index the index info the constant pool of this signature
- */
- public final void setSignatureIndex( int signature_index ) {
- this.signature_index = signature_index;
- }
-
-
- /**
- * @return GJ signature.
- */
- public final String getSignature() {
- ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(signature_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
- /**
- * Extends ByteArrayInputStream to make 'unreading' chars possible.
- */
- private static final class MyByteArrayInputStream extends ByteArrayInputStream {
-
- MyByteArrayInputStream(String data) {
- super(data.getBytes());
- }
-
-
- final int mark() {
- return pos;
- }
-
-
- final String getData() {
- return new String(buf);
- }
-
-
- final void reset( int p ) {
- pos = p;
- }
-
-
- final void unread() {
- if (pos > 0) {
- pos--;
- }
- }
- }
-
-
- private static boolean identStart( int ch ) {
- return ch == 'T' || ch == 'L';
- }
-
-
- private static final void matchIdent( MyByteArrayInputStream in, StringBuilder buf ) {
- int ch;
- if ((ch = in.read()) == -1) {
- throw new RuntimeException("Illegal signature: " + in.getData()
- + " no ident, reaching EOF");
- }
- //System.out.println("return from ident:" + (char)ch);
- if (!identStart(ch)) {
- StringBuilder buf2 = new StringBuilder();
- int count = 1;
- while (Character.isJavaIdentifierPart((char) ch)) {
- buf2.append((char) ch);
- count++;
- ch = in.read();
- }
- if (ch == ':') { // Ok, formal parameter
- in.skip("Ljava/lang/Object".length());
- buf.append(buf2);
- ch = in.read();
- in.unread();
- //System.out.println("so far:" + buf2 + ":next:" +(char)ch);
- } else {
- for (int i = 0; i < count; i++) {
- in.unread();
- }
- }
- return;
- }
- StringBuilder buf2 = new StringBuilder();
- ch = in.read();
- do {
- buf2.append((char) ch);
- ch = in.read();
- //System.out.println("within ident:"+ (char)ch);
- } while ((ch != -1) && (Character.isJavaIdentifierPart((char) ch) || (ch == '/')));
- buf.append(buf2.toString().replace('/', '.'));
- //System.out.println("regular return ident:"+ (char)ch + ":" + buf2);
- if (ch != -1) {
- in.unread();
- }
- }
-
-
- private static final void matchGJIdent( MyByteArrayInputStream in, StringBuilder buf ) {
- int ch;
- matchIdent(in, buf);
- ch = in.read();
- if ((ch == '<') || ch == '(') { // Parameterized or method
- //System.out.println("Enter <");
- buf.append((char) ch);
- matchGJIdent(in, buf);
- while (((ch = in.read()) != '>') && (ch != ')')) { // List of parameters
- if (ch == -1) {
- throw new RuntimeException("Illegal signature: " + in.getData()
- + " reaching EOF");
- }
- //System.out.println("Still no >");
- buf.append(", ");
- in.unread();
- matchGJIdent(in, buf); // Recursive call
- }
- //System.out.println("Exit >");
- buf.append((char) ch);
- } else {
- in.unread();
- }
- ch = in.read();
- if (identStart(ch)) {
- in.unread();
- matchGJIdent(in, buf);
- } else if (ch == ')') {
- in.unread();
- return;
- } else if (ch != ';') {
- throw new RuntimeException("Illegal signature: " + in.getData() + " read " + (char) ch);
- }
- }
-
-
- public static String translate( String s ) {
- //System.out.println("Sig:" + s);
- StringBuilder buf = new StringBuilder();
- matchGJIdent(new MyByteArrayInputStream(s), buf);
- return buf.toString();
- }
-
-
- public static final boolean isFormalParameterList( String s ) {
- return s.startsWith("<") && (s.indexOf(':') > 0);
- }
-
-
- public static final boolean isActualParameterList( String s ) {
- return s.startsWith("L") && s.endsWith(">;");
- }
-
-
- /**
- * @return String representation
- */
- public final String toString() {
- String s = getSignature();
- return "Signature(" + s + ")";
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- return (Signature) clone();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from Attribute and represents a reference
+ * to a GJ attribute.
+ *
+ * @version $Id: Signature.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ */
+public final class Signature extends Attribute {
+
+ private int signature_index;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public Signature(Signature c) {
+ this(c.getNameIndex(), c.getLength(), c.getSignatureIndex(), c.getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ Signature(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param signature_index Index in constant pool to CONSTANT_Utf8
+ * @param constant_pool Array of constants
+ */
+ public Signature(int name_index, int length, int signature_index, ConstantPool constant_pool) {
+ super(Constants.ATTR_SIGNATURE, name_index, length, constant_pool);
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ //System.err.println("Visiting non-standard Signature object");
+ v.visitSignature(this);
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(signature_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getSignatureIndex() {
+ return signature_index;
+ }
+
+
+ /**
+ * @param signature_index the index info the constant pool of this signature
+ */
+ public final void setSignatureIndex( int signature_index ) {
+ this.signature_index = signature_index;
+ }
+
+
+ /**
+ * @return GJ signature.
+ */
+ public final String getSignature() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(signature_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+ /**
+ * Extends ByteArrayInputStream to make 'unreading' chars possible.
+ */
+ private static final class MyByteArrayInputStream extends ByteArrayInputStream {
+
+ MyByteArrayInputStream(String data) {
+ super(data.getBytes());
+ }
+
+
+ final int mark() {
+ return pos;
+ }
+
+
+ final String getData() {
+ return new String(buf);
+ }
+
+
+ final void reset( int p ) {
+ pos = p;
+ }
+
+
+ final void unread() {
+ if (pos > 0) {
+ pos--;
+ }
+ }
+ }
+
+
+ private static boolean identStart( int ch ) {
+ return ch == 'T' || ch == 'L';
+ }
+
+
+ private static final void matchIdent( MyByteArrayInputStream in, StringBuilder buf ) {
+ int ch;
+ if ((ch = in.read()) == -1) {
+ throw new RuntimeException("Illegal signature: " + in.getData()
+ + " no ident, reaching EOF");
+ }
+ //System.out.println("return from ident:" + (char)ch);
+ if (!identStart(ch)) {
+ StringBuilder buf2 = new StringBuilder();
+ int count = 1;
+ while (Character.isJavaIdentifierPart((char) ch)) {
+ buf2.append((char) ch);
+ count++;
+ ch = in.read();
+ }
+ if (ch == ':') { // Ok, formal parameter
+ in.skip("Ljava/lang/Object".length());
+ buf.append(buf2);
+ ch = in.read();
+ in.unread();
+ //System.out.println("so far:" + buf2 + ":next:" +(char)ch);
+ } else {
+ for (int i = 0; i < count; i++) {
+ in.unread();
+ }
+ }
+ return;
+ }
+ StringBuilder buf2 = new StringBuilder();
+ ch = in.read();
+ do {
+ buf2.append((char) ch);
+ ch = in.read();
+ //System.out.println("within ident:"+ (char)ch);
+ } while ((ch != -1) && (Character.isJavaIdentifierPart((char) ch) || (ch == '/')));
+ buf.append(buf2.toString().replace('/', '.'));
+ //System.out.println("regular return ident:"+ (char)ch + ":" + buf2);
+ if (ch != -1) {
+ in.unread();
+ }
+ }
+
+
+ private static final void matchGJIdent( MyByteArrayInputStream in, StringBuilder buf ) {
+ int ch;
+ matchIdent(in, buf);
+ ch = in.read();
+ if ((ch == '<') || ch == '(') { // Parameterized or method
+ //System.out.println("Enter <");
+ buf.append((char) ch);
+ matchGJIdent(in, buf);
+ while (((ch = in.read()) != '>') && (ch != ')')) { // List of parameters
+ if (ch == -1) {
+ throw new RuntimeException("Illegal signature: " + in.getData()
+ + " reaching EOF");
+ }
+ //System.out.println("Still no >");
+ buf.append(", ");
+ in.unread();
+ matchGJIdent(in, buf); // Recursive call
+ }
+ //System.out.println("Exit >");
+ buf.append((char) ch);
+ } else {
+ in.unread();
+ }
+ ch = in.read();
+ if (identStart(ch)) {
+ in.unread();
+ matchGJIdent(in, buf);
+ } else if (ch == ')') {
+ in.unread();
+ return;
+ } else if (ch != ';') {
+ throw new RuntimeException("Illegal signature: " + in.getData() + " read " + (char) ch);
+ }
+ }
+
+
+ public static String translate( String s ) {
+ //System.out.println("Sig:" + s);
+ StringBuilder buf = new StringBuilder();
+ matchGJIdent(new MyByteArrayInputStream(s), buf);
+ return buf.toString();
+ }
+
+
+ public static final boolean isFormalParameterList( String s ) {
+ return s.startsWith("<") && (s.indexOf(':') > 0);
+ }
+
+
+ public static final boolean isActualParameterList( String s ) {
+ return s.startsWith("L") && s.endsWith(">;");
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ String s = getSignature();
+ return "Signature(" + s + ")";
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ return (Signature) clone();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/SourceFile.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/SourceFile.java
index 3218c405..8354fc30 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/SourceFile.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/SourceFile.java
@@ -1,146 +1,146 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from Attribute and represents a reference
- * to the source file of this class. At most one SourceFile attribute
- * should appear per classfile. The intention of this class is that it is
- * instantiated from the Attribute.readAttribute() method.
- *
- * @version $Id: SourceFile.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- */
-public final class SourceFile extends Attribute {
-
- private int sourcefile_index;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public SourceFile(SourceFile c) {
- this(c.getNameIndex(), c.getLength(), c.getSourceFileIndex(), c.getConstantPool());
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- SourceFile(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, file.readUnsignedShort(), constant_pool);
- }
-
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8, which
- * should represent the string "SourceFile".
- * @param length Content length in bytes, the value should be 2.
- * @param constant_pool The constant pool that this attribute is
- * associated with.
- * @param sourcefile_index Index in constant pool to CONSTANT_Utf8. This
- * string will be interpreted as the name of the file from which this
- * class was compiled. It will not be interpreted as indicating the name
- * of the directory contqining the file or an absolute path; this
- * information has to be supplied the consumer of this attribute - in
- * many cases, the JVM.
- */
- public SourceFile(int name_index, int length, int sourcefile_index, ConstantPool constant_pool) {
- super(Constants.ATTR_SOURCE_FILE, name_index, length, constant_pool);
- this.sourcefile_index = sourcefile_index;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitSourceFile(this);
- }
-
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(sourcefile_index);
- }
-
-
- /**
- * @return Index in constant pool of source file name.
- */
- public final int getSourceFileIndex() {
- return sourcefile_index;
- }
-
-
- /**
- * @param sourcefile_index
- */
- public final void setSourceFileIndex( int sourcefile_index ) {
- this.sourcefile_index = sourcefile_index;
- }
-
-
- /**
- * @return Source file name.
- */
- public final String getSourceFileName() {
- ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(sourcefile_index,
- Constants.CONSTANT_Utf8);
- return c.getBytes();
- }
-
-
- /**
- * @return String representation
- */
- public final String toString() {
- return "SourceFile(" + getSourceFileName() + ")";
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- return (SourceFile) clone();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from Attribute and represents a reference
+ * to the source file of this class. At most one SourceFile attribute
+ * should appear per classfile. The intention of this class is that it is
+ * instantiated from the Attribute.readAttribute() method.
+ *
+ * @version $Id: SourceFile.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ */
+public final class SourceFile extends Attribute {
+
+ private int sourcefile_index;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public SourceFile(SourceFile c) {
+ this(c.getNameIndex(), c.getLength(), c.getSourceFileIndex(), c.getConstantPool());
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ SourceFile(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, file.readUnsignedShort(), constant_pool);
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8, which
+ * should represent the string "SourceFile".
+ * @param length Content length in bytes, the value should be 2.
+ * @param constant_pool The constant pool that this attribute is
+ * associated with.
+ * @param sourcefile_index Index in constant pool to CONSTANT_Utf8. This
+ * string will be interpreted as the name of the file from which this
+ * class was compiled. It will not be interpreted as indicating the name
+ * of the directory contqining the file or an absolute path; this
+ * information has to be supplied the consumer of this attribute - in
+ * many cases, the JVM.
+ */
+ public SourceFile(int name_index, int length, int sourcefile_index, ConstantPool constant_pool) {
+ super(Constants.ATTR_SOURCE_FILE, name_index, length, constant_pool);
+ this.sourcefile_index = sourcefile_index;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitSourceFile(this);
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(sourcefile_index);
+ }
+
+
+ /**
+ * @return Index in constant pool of source file name.
+ */
+ public final int getSourceFileIndex() {
+ return sourcefile_index;
+ }
+
+
+ /**
+ * @param sourcefile_index
+ */
+ public final void setSourceFileIndex( int sourcefile_index ) {
+ this.sourcefile_index = sourcefile_index;
+ }
+
+
+ /**
+ * @return Source file name.
+ */
+ public final String getSourceFileName() {
+ ConstantUtf8 c = (ConstantUtf8) constant_pool.getConstant(sourcefile_index,
+ Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return "SourceFile(" + getSourceFileName() + ")";
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ return (SourceFile) clone();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMap.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMap.java
index eb723569..2e1d45fe 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMap.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMap.java
@@ -1,154 +1,154 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a stack map attribute used for
- * preverification of Java classes for the Java 2 Micro Edition
- * (J2ME). This attribute is used by the KVM and contained
- * within the Code attribute of a method. See CLDC specification
- * paragraph 5.3.1.2
- *
- * @version $Id: StackMap.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Code
- * @see StackMapEntry
- * @see StackMapType
- */
-public final class StackMap extends Attribute implements Node {
-
- private int map_length;
- private StackMapEntry[] map; // Table of stack map entries
-
-
- /*
- * @param name_index Index of name
- * @param length Content length in bytes
- * @param map Table of stack map entries
- * @param constant_pool Array of constants
- */
- public StackMap(int name_index, int length, StackMapEntry[] map, ConstantPool constant_pool) {
- super(Constants.ATTR_STACK_MAP, name_index, length, constant_pool);
- setStackMap(map);
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index of name
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- StackMap(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (StackMapEntry[]) null, constant_pool);
- map_length = file.readUnsignedShort();
- map = new StackMapEntry[map_length];
- for (int i = 0; i < map_length; i++) {
- map[i] = new StackMapEntry(file, constant_pool);
- }
- }
-
-
- /**
- * Dump line number table attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- file.writeShort(map_length);
- for (int i = 0; i < map_length; i++) {
- map[i].dump(file);
- }
- }
-
-
- /**
- * @return Array of stack map entries
- */
- public final StackMapEntry[] getStackMap() {
- return map;
- }
-
-
- /**
- * @param map Array of stack map entries
- */
- public final void setStackMap( StackMapEntry[] map ) {
- this.map = map;
- map_length = (map == null) ? 0 : map.length;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuilder buf = new StringBuilder("StackMap(");
- for (int i = 0; i < map_length; i++) {
- buf.append(map[i].toString());
- if (i < map_length - 1) {
- buf.append(", ");
- }
- }
- buf.append(')');
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- StackMap c = (StackMap) clone();
- c.map = new StackMapEntry[map_length];
- for (int i = 0; i < map_length; i++) {
- c.map[i] = map[i].copy();
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackMap(this);
- }
-
-
- public final int getMapLength() {
- return map_length;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a stack map attribute used for
+ * preverification of Java classes for the Java 2 Micro Edition
+ * (J2ME). This attribute is used by the KVM and contained
+ * within the Code attribute of a method. See CLDC specification
+ * paragraph 5.3.1.2
+ *
+ * @version $Id: StackMap.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Code
+ * @see StackMapEntry
+ * @see StackMapType
+ */
+public final class StackMap extends Attribute implements Node {
+
+ private int map_length;
+ private StackMapEntry[] map; // Table of stack map entries
+
+
+ /*
+ * @param name_index Index of name
+ * @param length Content length in bytes
+ * @param map Table of stack map entries
+ * @param constant_pool Array of constants
+ */
+ public StackMap(int name_index, int length, StackMapEntry[] map, ConstantPool constant_pool) {
+ super(Constants.ATTR_STACK_MAP, name_index, length, constant_pool);
+ setStackMap(map);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index of name
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ StackMap(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (StackMapEntry[]) null, constant_pool);
+ map_length = file.readUnsignedShort();
+ map = new StackMapEntry[map_length];
+ for (int i = 0; i < map_length; i++) {
+ map[i] = new StackMapEntry(file, constant_pool);
+ }
+ }
+
+
+ /**
+ * Dump line number table attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ file.writeShort(map_length);
+ for (int i = 0; i < map_length; i++) {
+ map[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return Array of stack map entries
+ */
+ public final StackMapEntry[] getStackMap() {
+ return map;
+ }
+
+
+ /**
+ * @param map Array of stack map entries
+ */
+ public final void setStackMap( StackMapEntry[] map ) {
+ this.map = map;
+ map_length = (map == null) ? 0 : map.length;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuilder buf = new StringBuilder("StackMap(");
+ for (int i = 0; i < map_length; i++) {
+ buf.append(map[i].toString());
+ if (i < map_length - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append(')');
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ StackMap c = (StackMap) clone();
+ c.map = new StackMapEntry[map_length];
+ for (int i = 0; i < map_length; i++) {
+ c.map[i] = map[i].copy();
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackMap(this);
+ }
+
+
+ public final int getMapLength() {
+ return map_length;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapEntry.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapEntry.java
index 4216848c..9ba32e91 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapEntry.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapEntry.java
@@ -1,212 +1,212 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-/**
- * This class represents a stack map entry recording the types of
- * local variables and the the of stack items at a given byte code offset.
- * See CLDC specification paragraph 5.3.1.2
- *
- * @version $Id: StackMapEntry.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see StackMap
- * @see StackMapType
- */
-public final class StackMapEntry implements Cloneable {
-
- private int byte_code_offset;
- private int number_of_locals;
- private StackMapType[] types_of_locals;
- private int number_of_stack_items;
- private StackMapType[] types_of_stack_items;
- private ConstantPool constant_pool;
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- StackMapEntry(DataInputStream file, ConstantPool constant_pool) throws IOException {
- this(file.readShort(), file.readShort(), null, -1, null, constant_pool);
- types_of_locals = new StackMapType[number_of_locals];
- for (int i = 0; i < number_of_locals; i++) {
- types_of_locals[i] = new StackMapType(file, constant_pool);
- }
- number_of_stack_items = file.readShort();
- types_of_stack_items = new StackMapType[number_of_stack_items];
- for (int i = 0; i < number_of_stack_items; i++) {
- types_of_stack_items[i] = new StackMapType(file, constant_pool);
- }
- }
-
-
- public StackMapEntry(int byte_code_offset, int number_of_locals,
- StackMapType[] types_of_locals, int number_of_stack_items,
- StackMapType[] types_of_stack_items, ConstantPool constant_pool) {
- this.byte_code_offset = byte_code_offset;
- this.number_of_locals = number_of_locals;
- this.types_of_locals = types_of_locals;
- this.number_of_stack_items = number_of_stack_items;
- this.types_of_stack_items = types_of_stack_items;
- this.constant_pool = constant_pool;
- }
-
-
- /**
- * Dump stack map entry
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeShort(byte_code_offset);
- file.writeShort(number_of_locals);
- for (int i = 0; i < number_of_locals; i++) {
- types_of_locals[i].dump(file);
- }
- file.writeShort(number_of_stack_items);
- for (int i = 0; i < number_of_stack_items; i++) {
- types_of_stack_items[i].dump(file);
- }
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuilder buf = new StringBuilder(64);
- buf.append("(offset=").append(byte_code_offset);
- if (number_of_locals > 0) {
- buf.append(", locals={");
- for (int i = 0; i < number_of_locals; i++) {
- buf.append(types_of_locals[i]);
- if (i < number_of_locals - 1) {
- buf.append(", ");
- }
- }
- buf.append("}");
- }
- if (number_of_stack_items > 0) {
- buf.append(", stack items={");
- for (int i = 0; i < number_of_stack_items; i++) {
- buf.append(types_of_stack_items[i]);
- if (i < number_of_stack_items - 1) {
- buf.append(", ");
- }
- }
- buf.append("}");
- }
- buf.append(")");
- return buf.toString();
- }
-
-
- public void setByteCodeOffset( int b ) {
- byte_code_offset = b;
- }
-
-
- public int getByteCodeOffset() {
- return byte_code_offset;
- }
-
-
- public void setNumberOfLocals( int n ) {
- number_of_locals = n;
- }
-
-
- public int getNumberOfLocals() {
- return number_of_locals;
- }
-
-
- public void setTypesOfLocals( StackMapType[] t ) {
- types_of_locals = t;
- }
-
-
- public StackMapType[] getTypesOfLocals() {
- return types_of_locals;
- }
-
-
- public void setNumberOfStackItems( int n ) {
- number_of_stack_items = n;
- }
-
-
- public int getNumberOfStackItems() {
- return number_of_stack_items;
- }
-
-
- public void setTypesOfStackItems( StackMapType[] t ) {
- types_of_stack_items = t;
- }
-
-
- public StackMapType[] getTypesOfStackItems() {
- return types_of_stack_items;
- }
-
-
- /**
- * @return deep copy of this object
- */
- public StackMapEntry copy() {
- try {
- return (StackMapEntry) clone();
- } catch (CloneNotSupportedException e) {
- }
- return null;
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackMapEntry(this);
- }
-
-
- /**
- * @return Constant pool used by this object.
- */
- public final ConstantPool getConstantPool() {
- return constant_pool;
- }
-
-
- /**
- * @param constant_pool Constant pool to be used for this object.
- */
- public final void setConstantPool( ConstantPool constant_pool ) {
- this.constant_pool = constant_pool;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+/**
+ * This class represents a stack map entry recording the types of
+ * local variables and the the of stack items at a given byte code offset.
+ * See CLDC specification paragraph 5.3.1.2
+ *
+ * @version $Id: StackMapEntry.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see StackMap
+ * @see StackMapType
+ */
+public final class StackMapEntry implements Cloneable {
+
+ private int byte_code_offset;
+ private int number_of_locals;
+ private StackMapType[] types_of_locals;
+ private int number_of_stack_items;
+ private StackMapType[] types_of_stack_items;
+ private ConstantPool constant_pool;
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ StackMapEntry(DataInputStream file, ConstantPool constant_pool) throws IOException {
+ this(file.readShort(), file.readShort(), null, -1, null, constant_pool);
+ types_of_locals = new StackMapType[number_of_locals];
+ for (int i = 0; i < number_of_locals; i++) {
+ types_of_locals[i] = new StackMapType(file, constant_pool);
+ }
+ number_of_stack_items = file.readShort();
+ types_of_stack_items = new StackMapType[number_of_stack_items];
+ for (int i = 0; i < number_of_stack_items; i++) {
+ types_of_stack_items[i] = new StackMapType(file, constant_pool);
+ }
+ }
+
+
+ public StackMapEntry(int byte_code_offset, int number_of_locals,
+ StackMapType[] types_of_locals, int number_of_stack_items,
+ StackMapType[] types_of_stack_items, ConstantPool constant_pool) {
+ this.byte_code_offset = byte_code_offset;
+ this.number_of_locals = number_of_locals;
+ this.types_of_locals = types_of_locals;
+ this.number_of_stack_items = number_of_stack_items;
+ this.types_of_stack_items = types_of_stack_items;
+ this.constant_pool = constant_pool;
+ }
+
+
+ /**
+ * Dump stack map entry
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeShort(byte_code_offset);
+ file.writeShort(number_of_locals);
+ for (int i = 0; i < number_of_locals; i++) {
+ types_of_locals[i].dump(file);
+ }
+ file.writeShort(number_of_stack_items);
+ for (int i = 0; i < number_of_stack_items; i++) {
+ types_of_stack_items[i].dump(file);
+ }
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuilder buf = new StringBuilder(64);
+ buf.append("(offset=").append(byte_code_offset);
+ if (number_of_locals > 0) {
+ buf.append(", locals={");
+ for (int i = 0; i < number_of_locals; i++) {
+ buf.append(types_of_locals[i]);
+ if (i < number_of_locals - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append("}");
+ }
+ if (number_of_stack_items > 0) {
+ buf.append(", stack items={");
+ for (int i = 0; i < number_of_stack_items; i++) {
+ buf.append(types_of_stack_items[i]);
+ if (i < number_of_stack_items - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append("}");
+ }
+ buf.append(")");
+ return buf.toString();
+ }
+
+
+ public void setByteCodeOffset( int b ) {
+ byte_code_offset = b;
+ }
+
+
+ public int getByteCodeOffset() {
+ return byte_code_offset;
+ }
+
+
+ public void setNumberOfLocals( int n ) {
+ number_of_locals = n;
+ }
+
+
+ public int getNumberOfLocals() {
+ return number_of_locals;
+ }
+
+
+ public void setTypesOfLocals( StackMapType[] t ) {
+ types_of_locals = t;
+ }
+
+
+ public StackMapType[] getTypesOfLocals() {
+ return types_of_locals;
+ }
+
+
+ public void setNumberOfStackItems( int n ) {
+ number_of_stack_items = n;
+ }
+
+
+ public int getNumberOfStackItems() {
+ return number_of_stack_items;
+ }
+
+
+ public void setTypesOfStackItems( StackMapType[] t ) {
+ types_of_stack_items = t;
+ }
+
+
+ public StackMapType[] getTypesOfStackItems() {
+ return types_of_stack_items;
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public StackMapEntry copy() {
+ try {
+ return (StackMapEntry) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackMapEntry(this);
+ }
+
+
+ /**
+ * @return Constant pool used by this object.
+ */
+ public final ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @param constant_pool Constant pool to be used for this object.
+ */
+ public final void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapType.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapType.java
index 771a6742..36fc7aca 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapType.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/StackMapType.java
@@ -1,162 +1,162 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents the type of a local variable or item on stack
- * used in the StackMap entries.
- *
- * @version $Id: StackMapType.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see StackMapEntry
- * @see StackMap
- * @see Constants
- */
-public final class StackMapType implements Cloneable {
-
- private byte type;
- private int index = -1; // Index to CONSTANT_Class or offset
- private ConstantPool constant_pool;
-
-
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @throws IOException
- */
- StackMapType(DataInputStream file, ConstantPool constant_pool) throws IOException {
- this(file.readByte(), -1, constant_pool);
- if (hasIndex()) {
- setIndex(file.readShort());
- }
- setConstantPool(constant_pool);
- }
-
-
- /**
- * @param type type tag as defined in the Constants interface
- * @param index index to constant pool, or byte code offset
- */
- public StackMapType(byte type, int index, ConstantPool constant_pool) {
- setType(type);
- setIndex(index);
- setConstantPool(constant_pool);
- }
-
-
- public void setType( byte t ) {
- if ((t < Constants.ITEM_Bogus) || (t > Constants.ITEM_NewObject)) {
- throw new RuntimeException("Illegal type for StackMapType: " + t);
- }
- type = t;
- }
-
-
- public byte getType() {
- return type;
- }
-
-
- public void setIndex( int t ) {
- index = t;
- }
-
-
- /** @return index to constant pool if type == ITEM_Object, or offset
- * in byte code, if type == ITEM_NewObject, and -1 otherwise
- */
- public int getIndex() {
- return index;
- }
-
-
- /**
- * Dump type entries to file.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- file.writeByte(type);
- if (hasIndex()) {
- file.writeShort(getIndex());
- }
- }
-
-
- /** @return true, if type is either ITEM_Object or ITEM_NewObject
- */
- public final boolean hasIndex() {
- return ((type == Constants.ITEM_Object) || (type == Constants.ITEM_NewObject));
- }
-
-
- private String printIndex() {
- if (type == Constants.ITEM_Object) {
- if (index < 0) {
- return ", class=";
- }
- return ", class=" + constant_pool.constantToString(index, Constants.CONSTANT_Class);
- } else if (type == Constants.ITEM_NewObject) {
- return ", offset=" + index;
- } else {
- return "";
- }
- }
-
-
- /**
- * @return String representation
- */
- public final String toString() {
- return "(type=" + Constants.ITEM_NAMES[type] + printIndex() + ")";
- }
-
-
- /**
- * @return deep copy of this object
- */
- public StackMapType copy() {
- try {
- return (StackMapType) clone();
- } catch (CloneNotSupportedException e) {
- }
- return null;
- }
-
-
- /**
- * @return Constant pool used by this object.
- */
- public final ConstantPool getConstantPool() {
- return constant_pool;
- }
-
-
- /**
- * @param constant_pool Constant pool to be used for this object.
- */
- public final void setConstantPool( ConstantPool constant_pool ) {
- this.constant_pool = constant_pool;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents the type of a local variable or item on stack
+ * used in the StackMap entries.
+ *
+ * @version $Id: StackMapType.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see StackMapEntry
+ * @see StackMap
+ * @see Constants
+ */
+public final class StackMapType implements Cloneable {
+
+ private byte type;
+ private int index = -1; // Index to CONSTANT_Class or offset
+ private ConstantPool constant_pool;
+
+
+ /**
+ * Construct object from file stream.
+ * @param file Input stream
+ * @throws IOException
+ */
+ StackMapType(DataInputStream file, ConstantPool constant_pool) throws IOException {
+ this(file.readByte(), -1, constant_pool);
+ if (hasIndex()) {
+ setIndex(file.readShort());
+ }
+ setConstantPool(constant_pool);
+ }
+
+
+ /**
+ * @param type type tag as defined in the Constants interface
+ * @param index index to constant pool, or byte code offset
+ */
+ public StackMapType(byte type, int index, ConstantPool constant_pool) {
+ setType(type);
+ setIndex(index);
+ setConstantPool(constant_pool);
+ }
+
+
+ public void setType( byte t ) {
+ if ((t < Constants.ITEM_Bogus) || (t > Constants.ITEM_NewObject)) {
+ throw new RuntimeException("Illegal type for StackMapType: " + t);
+ }
+ type = t;
+ }
+
+
+ public byte getType() {
+ return type;
+ }
+
+
+ public void setIndex( int t ) {
+ index = t;
+ }
+
+
+ /** @return index to constant pool if type == ITEM_Object, or offset
+ * in byte code, if type == ITEM_NewObject, and -1 otherwise
+ */
+ public int getIndex() {
+ return index;
+ }
+
+
+ /**
+ * Dump type entries to file.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ file.writeByte(type);
+ if (hasIndex()) {
+ file.writeShort(getIndex());
+ }
+ }
+
+
+ /** @return true, if type is either ITEM_Object or ITEM_NewObject
+ */
+ public final boolean hasIndex() {
+ return ((type == Constants.ITEM_Object) || (type == Constants.ITEM_NewObject));
+ }
+
+
+ private String printIndex() {
+ if (type == Constants.ITEM_Object) {
+ if (index < 0) {
+ return ", class=";
+ }
+ return ", class=" + constant_pool.constantToString(index, Constants.CONSTANT_Class);
+ } else if (type == Constants.ITEM_NewObject) {
+ return ", offset=" + index;
+ } else {
+ return "";
+ }
+ }
+
+
+ /**
+ * @return String representation
+ */
+ public final String toString() {
+ return "(type=" + Constants.ITEM_NAMES[type] + printIndex() + ")";
+ }
+
+
+ /**
+ * @return deep copy of this object
+ */
+ public StackMapType copy() {
+ try {
+ return (StackMapType) clone();
+ } catch (CloneNotSupportedException e) {
+ }
+ return null;
+ }
+
+
+ /**
+ * @return Constant pool used by this object.
+ */
+ public final ConstantPool getConstantPool() {
+ return constant_pool;
+ }
+
+
+ /**
+ * @param constant_pool Constant pool to be used for this object.
+ */
+ public final void setConstantPool( ConstantPool constant_pool ) {
+ this.constant_pool = constant_pool;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Synthetic.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Synthetic.java
index d3839cf0..ef82ad09 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Synthetic.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Synthetic.java
@@ -1,151 +1,151 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class is derived from Attribute and declares this class as
- * `synthetic', i.e., it needs special handling. The JVM specification
- * states "A class member that does not appear in the source code must be
- * marked using a Synthetic attribute." It may appear in the ClassFile
- * attribute table, a field_info table or a method_info table. This class
- * is intended to be instantiated from the
- * Attribute.readAttribute() method.
- *
- * @version $Id: Synthetic.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Attribute
- */
-public final class Synthetic extends Attribute {
-
- private byte[] bytes;
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use copy() for a physical copy.
- */
- public Synthetic(Synthetic c) {
- this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
- }
-
-
- /**
- * @param name_index Index in constant pool to CONSTANT_Utf8, which
- * should represent the string "Synthetic".
- * @param length Content length in bytes - should be zero.
- * @param bytes Attribute contents
- * @param constant_pool The constant pool this attribute is associated
- * with.
- */
- public Synthetic(int name_index, int length, byte[] bytes, ConstantPool constant_pool) {
- super(Constants.ATTR_SYNTHETIC, name_index, length, constant_pool);
- this.bytes = bytes;
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool to CONSTANT_Utf8
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- Synthetic(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (byte[]) null, constant_pool);
- if (length > 0) {
- bytes = new byte[length];
- file.readFully(bytes);
- System.err.println("Synthetic attribute with length > 0");
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitSynthetic(this);
- }
-
-
- /**
- * Dump source file attribute to file stream in binary format.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- if (length > 0) {
- file.write(bytes, 0, length);
- }
- }
-
-
- /**
- * @return data bytes.
- */
- public final byte[] getBytes() {
- return bytes;
- }
-
-
- /**
- * @param bytes
- */
- public final void setBytes( byte[] bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- StringBuilder buf = new StringBuilder("Synthetic");
- if (length > 0) {
- buf.append(" ").append(Utility.toHexString(bytes));
- }
- return buf.toString();
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- Synthetic c = (Synthetic) clone();
- if (bytes != null) {
- c.bytes = new byte[bytes.length];
- System.arraycopy(bytes, 0, c.bytes, 0, bytes.length);
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class is derived from Attribute and declares this class as
+ * `synthetic', i.e., it needs special handling. The JVM specification
+ * states "A class member that does not appear in the source code must be
+ * marked using a Synthetic attribute." It may appear in the ClassFile
+ * attribute table, a field_info table or a method_info table. This class
+ * is intended to be instantiated from the
+ * Attribute.readAttribute() method.
+ *
+ * @version $Id: Synthetic.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Attribute
+ */
+public final class Synthetic extends Attribute {
+
+ private byte[] bytes;
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use copy() for a physical copy.
+ */
+ public Synthetic(Synthetic c) {
+ this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
+ }
+
+
+ /**
+ * @param name_index Index in constant pool to CONSTANT_Utf8, which
+ * should represent the string "Synthetic".
+ * @param length Content length in bytes - should be zero.
+ * @param bytes Attribute contents
+ * @param constant_pool The constant pool this attribute is associated
+ * with.
+ */
+ public Synthetic(int name_index, int length, byte[] bytes, ConstantPool constant_pool) {
+ super(Constants.ATTR_SYNTHETIC, name_index, length, constant_pool);
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool to CONSTANT_Utf8
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ Synthetic(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (byte[]) null, constant_pool);
+ if (length > 0) {
+ bytes = new byte[length];
+ file.readFully(bytes);
+ System.err.println("Synthetic attribute with length > 0");
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitSynthetic(this);
+ }
+
+
+ /**
+ * Dump source file attribute to file stream in binary format.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ if (length > 0) {
+ file.write(bytes, 0, length);
+ }
+ }
+
+
+ /**
+ * @return data bytes.
+ */
+ public final byte[] getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @param bytes
+ */
+ public final void setBytes( byte[] bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ StringBuilder buf = new StringBuilder("Synthetic");
+ if (length > 0) {
+ buf.append(" ").append(Utility.toHexString(bytes));
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ Synthetic c = (Synthetic) clone();
+ if (bytes != null) {
+ c.bytes = new byte[bytes.length];
+ System.arraycopy(bytes, 0, c.bytes, 0, bytes.length);
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Unknown.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Unknown.java
index 35a7c864..ec7a84b3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Unknown.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Unknown.java
@@ -1,189 +1,189 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This class represents a reference to an unknown (i.e.,
- * application-specific) attribute of a class. It is instantiated from the
- * Attribute.readAttribute() method. Applications that need to
- * read in application-specific attributes should create an AttributeReader implementation and
- * attach it via Attribute.addAttributeReader.
-
- *
- * @version $Id: Unknown.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @see org.apache.bcel5_2_0.classfile.Attribute
- * @see org.apache.bcel5_2_0.classfile.AttributeReader
- * @author M. Dahm
- */
-public final class Unknown extends Attribute {
-
- private byte[] bytes;
- private String name;
- private static Map unknown_attributes = new HashMap();
-
-
- /** @return array of unknown attributes, but just one for each kind.
- */
- static Unknown[] getUnknownAttributes() {
- Unknown[] unknowns = new Unknown[unknown_attributes.size()];
- Iterator entries = unknown_attributes.values().iterator();
- for (int i = 0; entries.hasNext(); i++) {
- unknowns[i] = (Unknown) entries.next();
- }
- unknown_attributes.clear();
- return unknowns;
- }
-
-
- /**
- * Initialize from another object. Note that both objects use the same
- * references (shallow copy). Use clone() for a physical copy.
- */
- public Unknown(Unknown c) {
- this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
- }
-
-
- /**
- * Create a non-standard attribute.
- *
- * @param name_index Index in constant pool
- * @param length Content length in bytes
- * @param bytes Attribute contents
- * @param constant_pool Array of constants
- */
- public Unknown(int name_index, int length, byte[] bytes, ConstantPool constant_pool) {
- super(Constants.ATTR_UNKNOWN, name_index, length, constant_pool);
- this.bytes = bytes;
- name = ((ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8))
- .getBytes();
- unknown_attributes.put(name, this);
- }
-
-
- /**
- * Construct object from file stream.
- * @param name_index Index in constant pool
- * @param length Content length in bytes
- * @param file Input stream
- * @param constant_pool Array of constants
- * @throws IOException
- */
- Unknown(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
- throws IOException {
- this(name_index, length, (byte[]) null, constant_pool);
- if (length > 0) {
- bytes = new byte[length];
- file.readFully(bytes);
- }
- }
-
-
- /**
- * Called by objects that are traversing the nodes of the tree implicitely
- * defined by the contents of a Java class. I.e., the hierarchy of methods,
- * fields, attributes, etc. spawns a tree of objects.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitUnknown(this);
- }
-
-
- /**
- * Dump unknown bytes to file stream.
- *
- * @param file Output file stream
- * @throws IOException
- */
- public final void dump( DataOutputStream file ) throws IOException {
- super.dump(file);
- if (length > 0) {
- file.write(bytes, 0, length);
- }
- }
-
-
- /**
- * @return data bytes.
- */
- public final byte[] getBytes() {
- return bytes;
- }
-
-
- /**
- * @return name of attribute.
- */
- public final String getName() {
- return name;
- }
-
-
- /**
- * @param bytes the bytes to set
- */
- public final void setBytes( byte[] bytes ) {
- this.bytes = bytes;
- }
-
-
- /**
- * @return String representation.
- */
- public final String toString() {
- if (length == 0 || bytes == null) {
- return "(Unknown attribute " + name + ")";
- }
- String hex;
- if (length > 10) {
- byte[] tmp = new byte[10];
- System.arraycopy(bytes, 0, tmp, 0, 10);
- hex = Utility.toHexString(tmp) + "... (truncated)";
- } else {
- hex = Utility.toHexString(bytes);
- }
- return "(Unknown attribute " + name + ": " + hex + ")";
- }
-
-
- /**
- * @return deep copy of this attribute
- */
- public Attribute copy( ConstantPool _constant_pool ) {
- Unknown c = (Unknown) clone();
- if (bytes != null) {
- c.bytes = new byte[bytes.length];
- System.arraycopy(bytes, 0, c.bytes, 0, bytes.length);
- }
- c.constant_pool = _constant_pool;
- return c;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This class represents a reference to an unknown (i.e.,
+ * application-specific) attribute of a class. It is instantiated from the
+ * Attribute.readAttribute() method. Applications that need to
+ * read in application-specific attributes should create an AttributeReader implementation and
+ * attach it via Attribute.addAttributeReader.
+
+ *
+ * @version $Id: Unknown.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @see org.apache.bcel5_2_0.classfile.Attribute
+ * @see org.apache.bcel5_2_0.classfile.AttributeReader
+ * @author M. Dahm
+ */
+public final class Unknown extends Attribute {
+
+ private byte[] bytes;
+ private String name;
+ private static Map unknown_attributes = new HashMap();
+
+
+ /** @return array of unknown attributes, but just one for each kind.
+ */
+ static Unknown[] getUnknownAttributes() {
+ Unknown[] unknowns = new Unknown[unknown_attributes.size()];
+ Iterator entries = unknown_attributes.values().iterator();
+ for (int i = 0; entries.hasNext(); i++) {
+ unknowns[i] = (Unknown) entries.next();
+ }
+ unknown_attributes.clear();
+ return unknowns;
+ }
+
+
+ /**
+ * Initialize from another object. Note that both objects use the same
+ * references (shallow copy). Use clone() for a physical copy.
+ */
+ public Unknown(Unknown c) {
+ this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
+ }
+
+
+ /**
+ * Create a non-standard attribute.
+ *
+ * @param name_index Index in constant pool
+ * @param length Content length in bytes
+ * @param bytes Attribute contents
+ * @param constant_pool Array of constants
+ */
+ public Unknown(int name_index, int length, byte[] bytes, ConstantPool constant_pool) {
+ super(Constants.ATTR_UNKNOWN, name_index, length, constant_pool);
+ this.bytes = bytes;
+ name = ((ConstantUtf8) constant_pool.getConstant(name_index, Constants.CONSTANT_Utf8))
+ .getBytes();
+ unknown_attributes.put(name, this);
+ }
+
+
+ /**
+ * Construct object from file stream.
+ * @param name_index Index in constant pool
+ * @param length Content length in bytes
+ * @param file Input stream
+ * @param constant_pool Array of constants
+ * @throws IOException
+ */
+ Unknown(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
+ throws IOException {
+ this(name_index, length, (byte[]) null, constant_pool);
+ if (length > 0) {
+ bytes = new byte[length];
+ file.readFully(bytes);
+ }
+ }
+
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitely
+ * defined by the contents of a Java class. I.e., the hierarchy of methods,
+ * fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitUnknown(this);
+ }
+
+
+ /**
+ * Dump unknown bytes to file stream.
+ *
+ * @param file Output file stream
+ * @throws IOException
+ */
+ public final void dump( DataOutputStream file ) throws IOException {
+ super.dump(file);
+ if (length > 0) {
+ file.write(bytes, 0, length);
+ }
+ }
+
+
+ /**
+ * @return data bytes.
+ */
+ public final byte[] getBytes() {
+ return bytes;
+ }
+
+
+ /**
+ * @return name of attribute.
+ */
+ public final String getName() {
+ return name;
+ }
+
+
+ /**
+ * @param bytes the bytes to set
+ */
+ public final void setBytes( byte[] bytes ) {
+ this.bytes = bytes;
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public final String toString() {
+ if (length == 0 || bytes == null) {
+ return "(Unknown attribute " + name + ")";
+ }
+ String hex;
+ if (length > 10) {
+ byte[] tmp = new byte[10];
+ System.arraycopy(bytes, 0, tmp, 0, 10);
+ hex = Utility.toHexString(tmp) + "... (truncated)";
+ } else {
+ hex = Utility.toHexString(bytes);
+ }
+ return "(Unknown attribute " + name + ": " + hex + ")";
+ }
+
+
+ /**
+ * @return deep copy of this attribute
+ */
+ public Attribute copy( ConstantPool _constant_pool ) {
+ Unknown c = (Unknown) clone();
+ if (bytes != null) {
+ c.bytes = new byte[bytes.length];
+ System.arraycopy(bytes, 0, c.bytes, 0, bytes.length);
+ }
+ c.constant_pool = _constant_pool;
+ return c;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Utility.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Utility.java
index c1cd9bd9..7da4e812 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Utility.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Utility.java
@@ -1,1344 +1,1344 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayReader;
-import java.io.CharArrayWriter;
-import java.io.FilterReader;
-import java.io.FilterWriter;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.GZIPOutputStream;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * Utility functions that do not really belong to any class in particular.
- *
- * @version $Id: Utility.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class Utility {
-
- private static int unwrap( ThreadLocal tl ) {
- return ((Integer) tl.get()).intValue();
- }
-
-
- private static void wrap( ThreadLocal tl, int value ) {
- tl.set(new Integer(value));
- }
-
- private static ThreadLocal consumed_chars = new ThreadLocal() {
-
- protected Object initialValue() {
- return new Integer(0);
- }
- };/* How many chars have been consumed
- * during parsing in signatureToString().
- * Read by methodSignatureToString().
- * Set by side effect,but only internally.
- */
- private static boolean wide = false; /* The `WIDE' instruction is used in the
- * byte code to allow 16-bit wide indices
- * for local variables. This opcode
- * precedes an `ILOAD', e.g.. The opcode
- * immediately following takes an extra
- * byte which is combined with the
- * following byte to form a
- * 16-bit value.
- */
-
-
- /**
- * Convert bit field of flags into string such as `static final'.
- *
- * @param access_flags Access flags
- * @return String representation of flags
- */
- public static final String accessToString( int access_flags ) {
- return accessToString(access_flags, false);
- }
-
-
- /**
- * Convert bit field of flags into string such as `static final'.
- *
- * Special case: Classes compiled with new compilers and with the
- * `ACC_SUPER' flag would be said to be "synchronized". This is
- * because SUN used the same value for the flags `ACC_SUPER' and
- * `ACC_SYNCHRONIZED'.
- *
- * @param access_flags Access flags
- * @param for_class access flags are for class qualifiers ?
- * @return String representation of flags
- */
- public static final String accessToString( int access_flags, boolean for_class ) {
- StringBuilder buf = new StringBuilder();
- int p = 0;
- for (int i = 0; p < Constants.MAX_ACC_FLAG; i++) { // Loop through known flags
- p = pow2(i);
- if ((access_flags & p) != 0) {
- /* Special case: Classes compiled with new compilers and with the
- * `ACC_SUPER' flag would be said to be "synchronized". This is
- * because SUN used the same value for the flags `ACC_SUPER' and
- * `ACC_SYNCHRONIZED'.
- */
- if (for_class && ((p == Constants.ACC_SUPER) || (p == Constants.ACC_INTERFACE))) {
- continue;
- }
- buf.append(Constants.ACCESS_NAMES[i]).append(" ");
- }
- }
- return buf.toString().trim();
- }
-
-
- /**
- * @return "class" or "interface", depending on the ACC_INTERFACE flag
- */
- public static final String classOrInterface( int access_flags ) {
- return ((access_flags & Constants.ACC_INTERFACE) != 0) ? "interface" : "class";
- }
-
-
- /**
- * Disassemble a byte array of JVM byte codes starting from code line
- * `index' and return the disassembled string representation. Decode only
- * `num' opcodes (including their operands), use -1 if you want to
- * decompile everything.
- *
- * @param code byte code array
- * @param constant_pool Array of constants
- * @param index offset in `code' array
- * (number of opcodes, not bytes!)
- * @param length number of opcodes to decompile, -1 for all
- * @param verbose be verbose, e.g. print constant pool index
- * @return String representation of byte codes
- */
- public static final String codeToString( byte[] code, ConstantPool constant_pool, int index,
- int length, boolean verbose ) {
- StringBuilder buf = new StringBuilder(code.length * 20); // Should be sufficient
- ByteSequence stream = new ByteSequence(code);
- try {
- for (int i = 0; i < index; i++) {
- codeToString(stream, constant_pool, verbose);
- }
- for (int i = 0; stream.available() > 0; i++) {
- if ((length < 0) || (i < length)) {
- String indices = fillup(stream.getIndex() + ":", 6, true, ' ');
- buf.append(indices).append(codeToString(stream, constant_pool, verbose))
- .append('\n');
- }
- }
- } catch (IOException e) {
- System.out.println(buf.toString());
- e.printStackTrace();
- throw new ClassFormatException("Byte code error: " + e);
- }
- return buf.toString();
- }
-
-
- public static final String codeToString( byte[] code, ConstantPool constant_pool, int index,
- int length ) {
- return codeToString(code, constant_pool, index, length, true);
- }
-
-
- /**
- * Disassemble a stream of byte codes and return the
- * string representation.
- *
- * @param bytes stream of bytes
- * @param constant_pool Array of constants
- * @param verbose be verbose, e.g. print constant pool index
- * @return String representation of byte code
- */
- public static final String codeToString( ByteSequence bytes, ConstantPool constant_pool,
- boolean verbose ) throws IOException {
- short opcode = (short) bytes.readUnsignedByte();
- int default_offset = 0, low, high, npairs;
- int index, vindex, constant;
- int[] match, jump_table;
- int no_pad_bytes = 0, offset;
- StringBuilder buf = new StringBuilder(Constants.OPCODE_NAMES[opcode]);
- /* Special case: Skip (0-3) padding bytes, i.e., the
- * following bytes are 4-byte-aligned
- */
- if ((opcode == Constants.TABLESWITCH) || (opcode == Constants.LOOKUPSWITCH)) {
- int remainder = bytes.getIndex() % 4;
- no_pad_bytes = (remainder == 0) ? 0 : 4 - remainder;
- for (int i = 0; i < no_pad_bytes; i++) {
- byte b;
- if ((b = bytes.readByte()) != 0) {
- System.err.println("Warning: Padding byte != 0 in "
- + Constants.OPCODE_NAMES[opcode] + ":" + b);
- }
- }
- // Both cases have a field default_offset in common
- default_offset = bytes.readInt();
- }
- switch (opcode) {
- /* Table switch has variable length arguments.
- */
- case Constants.TABLESWITCH:
- low = bytes.readInt();
- high = bytes.readInt();
- offset = bytes.getIndex() - 12 - no_pad_bytes - 1;
- default_offset += offset;
- buf.append("\tdefault = ").append(default_offset).append(", low = ").append(low)
- .append(", high = ").append(high).append("(");
- jump_table = new int[high - low + 1];
- for (int i = 0; i < jump_table.length; i++) {
- jump_table[i] = offset + bytes.readInt();
- buf.append(jump_table[i]);
- if (i < jump_table.length - 1) {
- buf.append(", ");
- }
- }
- buf.append(")");
- break;
- /* Lookup switch has variable length arguments.
- */
- case Constants.LOOKUPSWITCH: {
- npairs = bytes.readInt();
- offset = bytes.getIndex() - 8 - no_pad_bytes - 1;
- match = new int[npairs];
- jump_table = new int[npairs];
- default_offset += offset;
- buf.append("\tdefault = ").append(default_offset).append(", npairs = ").append(
- npairs).append(" (");
- for (int i = 0; i < npairs; i++) {
- match[i] = bytes.readInt();
- jump_table[i] = offset + bytes.readInt();
- buf.append("(").append(match[i]).append(", ").append(jump_table[i]).append(")");
- if (i < npairs - 1) {
- buf.append(", ");
- }
- }
- buf.append(")");
- }
- break;
- /* Two address bytes + offset from start of byte stream form the
- * jump target
- */
- case Constants.GOTO:
- case Constants.IFEQ:
- case Constants.IFGE:
- case Constants.IFGT:
- case Constants.IFLE:
- case Constants.IFLT:
- case Constants.JSR:
- case Constants.IFNE:
- case Constants.IFNONNULL:
- case Constants.IFNULL:
- case Constants.IF_ACMPEQ:
- case Constants.IF_ACMPNE:
- case Constants.IF_ICMPEQ:
- case Constants.IF_ICMPGE:
- case Constants.IF_ICMPGT:
- case Constants.IF_ICMPLE:
- case Constants.IF_ICMPLT:
- case Constants.IF_ICMPNE:
- buf.append("\t\t#").append((bytes.getIndex() - 1) + bytes.readShort());
- break;
- /* 32-bit wide jumps
- */
- case Constants.GOTO_W:
- case Constants.JSR_W:
- buf.append("\t\t#").append(((bytes.getIndex() - 1) + bytes.readInt()));
- break;
- /* Index byte references local variable (register)
- */
- case Constants.ALOAD:
- case Constants.ASTORE:
- case Constants.DLOAD:
- case Constants.DSTORE:
- case Constants.FLOAD:
- case Constants.FSTORE:
- case Constants.ILOAD:
- case Constants.ISTORE:
- case Constants.LLOAD:
- case Constants.LSTORE:
- case Constants.RET:
- if (wide) {
- vindex = bytes.readUnsignedShort();
- wide = false; // Clear flag
- } else {
- vindex = bytes.readUnsignedByte();
- }
- buf.append("\t\t%").append(vindex);
- break;
- /*
- * Remember wide byte which is used to form a 16-bit address in the
- * following instruction. Relies on that the method is called again with
- * the following opcode.
- */
- case Constants.WIDE:
- wide = true;
- buf.append("\t(wide)");
- break;
- /* Array of basic type.
- */
- case Constants.NEWARRAY:
- buf.append("\t\t<").append(Constants.TYPE_NAMES[bytes.readByte()]).append(">");
- break;
- /* Access object/class fields.
- */
- case Constants.GETFIELD:
- case Constants.GETSTATIC:
- case Constants.PUTFIELD:
- case Constants.PUTSTATIC:
- index = bytes.readUnsignedShort();
- buf.append("\t\t").append(
- constant_pool.constantToString(index, Constants.CONSTANT_Fieldref)).append(
- (verbose ? " (" + index + ")" : ""));
- break;
- /* Operands are references to classes in constant pool
- */
- case Constants.NEW:
- case Constants.CHECKCAST:
- buf.append("\t");
- case Constants.INSTANCEOF:
- index = bytes.readUnsignedShort();
- buf.append("\t<").append(
- constant_pool.constantToString(index, Constants.CONSTANT_Class))
- .append(">").append((verbose ? " (" + index + ")" : ""));
- break;
- /* Operands are references to methods in constant pool
- */
- case Constants.INVOKESPECIAL:
- case Constants.INVOKESTATIC:
- case Constants.INVOKEVIRTUAL:
- index = bytes.readUnsignedShort();
- buf.append("\t").append(
- constant_pool.constantToString(index, Constants.CONSTANT_Methodref))
- .append((verbose ? " (" + index + ")" : ""));
- break;
- case Constants.INVOKEINTERFACE:
- index = bytes.readUnsignedShort();
- int nargs = bytes.readUnsignedByte(); // historical, redundant
- buf.append("\t").append(
- constant_pool
- .constantToString(index, Constants.CONSTANT_InterfaceMethodref))
- .append(verbose ? " (" + index + ")\t" : "").append(nargs).append("\t")
- .append(bytes.readUnsignedByte()); // Last byte is a reserved space
- break;
- /* Operands are references to items in constant pool
- */
- case Constants.LDC_W:
- case Constants.LDC2_W:
- index = bytes.readUnsignedShort();
- buf.append("\t\t").append(
- constant_pool.constantToString(index, constant_pool.getConstant(index)
- .getTag())).append((verbose ? " (" + index + ")" : ""));
- break;
- case Constants.LDC:
- index = bytes.readUnsignedByte();
- buf.append("\t\t").append(
- constant_pool.constantToString(index, constant_pool.getConstant(index)
- .getTag())).append((verbose ? " (" + index + ")" : ""));
- break;
- /* Array of references.
- */
- case Constants.ANEWARRAY:
- index = bytes.readUnsignedShort();
- buf.append("\t\t<").append(
- compactClassName(constant_pool.getConstantString(index,
- Constants.CONSTANT_Class), false)).append(">").append(
- (verbose ? " (" + index + ")" : ""));
- break;
- /* Multidimensional array of references.
- */
- case Constants.MULTIANEWARRAY: {
- index = bytes.readUnsignedShort();
- int dimensions = bytes.readUnsignedByte();
- buf.append("\t<").append(
- compactClassName(constant_pool.getConstantString(index,
- Constants.CONSTANT_Class), false)).append(">\t").append(dimensions)
- .append((verbose ? " (" + index + ")" : ""));
- }
- break;
- /* Increment local variable.
- */
- case Constants.IINC:
- if (wide) {
- vindex = bytes.readUnsignedShort();
- constant = bytes.readShort();
- wide = false;
- } else {
- vindex = bytes.readUnsignedByte();
- constant = bytes.readByte();
- }
- buf.append("\t\t%").append(vindex).append("\t").append(constant);
- break;
- default:
- if (Constants.NO_OF_OPERANDS[opcode] > 0) {
- for (int i = 0; i < Constants.TYPE_OF_OPERANDS[opcode].length; i++) {
- buf.append("\t\t");
- switch (Constants.TYPE_OF_OPERANDS[opcode][i]) {
- case Constants.T_BYTE:
- buf.append(bytes.readByte());
- break;
- case Constants.T_SHORT:
- buf.append(bytes.readShort());
- break;
- case Constants.T_INT:
- buf.append(bytes.readInt());
- break;
- default: // Never reached
- System.err.println("Unreachable default case reached!");
- System.exit(-1);
- }
- }
- }
- }
- return buf.toString();
- }
-
-
- public static final String codeToString( ByteSequence bytes, ConstantPool constant_pool )
- throws IOException {
- return codeToString(bytes, constant_pool, true);
- }
-
-
- /**
- * Shorten long class names, java/lang/String becomes
- * String.
- *
- * @param str The long class name
- * @return Compacted class name
- */
- public static final String compactClassName( String str ) {
- return compactClassName(str, true);
- }
-
-
- /**
- * Shorten long class name str, i.e., chop off the prefix,
- * if the
- * class name starts with this string and the flag chopit is true.
- * Slashes / are converted to dots ..
- *
- * @param str The long class name
- * @param prefix The prefix the get rid off
- * @param chopit Flag that determines whether chopping is executed or not
- * @return Compacted class name
- */
- public static final String compactClassName( String str, String prefix, boolean chopit ) {
- int len = prefix.length();
- str = str.replace('/', '.'); // Is `/' on all systems, even DOS
- if (chopit) {
- // If string starts with `prefix' and contains no further dots
- if (str.startsWith(prefix) && (str.substring(len).indexOf('.') == -1)) {
- str = str.substring(len);
- }
- }
- return str;
- }
-
-
- /**
- * Shorten long class names, java/lang/String becomes
- * java.lang.String,
- * e.g.. If chopit is true the prefix java.lang
- * is also removed.
- *
- * @param str The long class name
- * @param chopit Flag that determines whether chopping is executed or not
- * @return Compacted class name
- */
- public static final String compactClassName( String str, boolean chopit ) {
- return compactClassName(str, "java.lang.", chopit);
- }
-
-
- /**
- * @return `flag' with bit `i' set to 1
- */
- public static final int setBit( int flag, int i ) {
- return flag | pow2(i);
- }
-
-
- /**
- * @return `flag' with bit `i' set to 0
- */
- public static final int clearBit( int flag, int i ) {
- int bit = pow2(i);
- return (flag & bit) == 0 ? flag : flag ^ bit;
- }
-
-
- /**
- * @return true, if bit `i' in `flag' is set
- */
- public static final boolean isSet( int flag, int i ) {
- return (flag & pow2(i)) != 0;
- }
-
-
- /**
- * Converts string containing the method return and argument types
- * to a byte code method signature.
- *
- * @param ret Return type of method
- * @param argv Types of method arguments
- * @return Byte code representation of method signature
- */
- public final static String methodTypeToSignature( String ret, String[] argv )
- throws ClassFormatException {
- StringBuilder buf = new StringBuilder("(");
- String str;
- if (argv != null) {
- for (int i = 0; i < argv.length; i++) {
- str = getSignature(argv[i]);
- if (str.endsWith("V")) {
- throw new ClassFormatException("Invalid type: " + argv[i]);
- }
- buf.append(str);
- }
- }
- str = getSignature(ret);
- buf.append(")").append(str);
- return buf.toString();
- }
-
-
- /**
- * @param signature Method signature
- * @return Array of argument types
- * @throws ClassFormatException
- */
- public static final String[] methodSignatureArgumentTypes( String signature )
- throws ClassFormatException {
- return methodSignatureArgumentTypes(signature, true);
- }
-
-
- /**
- * @param signature Method signature
- * @param chopit Shorten class names ?
- * @return Array of argument types
- * @throws ClassFormatException
- */
- public static final String[] methodSignatureArgumentTypes( String signature, boolean chopit )
- throws ClassFormatException {
- List vec = new ArrayList();
- int index;
- try { // Read all declarations between for `(' and `)'
- if (signature.charAt(0) != '(') {
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- index = 1; // current string position
- while (signature.charAt(index) != ')') {
- vec.add(signatureToString(signature.substring(index), chopit));
- //corrected concurrent private static field acess
- index += unwrap(consumed_chars); // update position
- }
- } catch (StringIndexOutOfBoundsException e) { // Should never occur
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- return (String[]) vec.toArray(new String[vec.size()]);
- }
-
-
- /**
- * @param signature Method signature
- * @return return type of method
- * @throws ClassFormatException
- */
- public static final String methodSignatureReturnType( String signature )
- throws ClassFormatException {
- return methodSignatureReturnType(signature, true);
- }
-
-
- /**
- * @param signature Method signature
- * @param chopit Shorten class names ?
- * @return return type of method
- * @throws ClassFormatException
- */
- public static final String methodSignatureReturnType( String signature, boolean chopit )
- throws ClassFormatException {
- int index;
- String type;
- try {
- // Read return type after `)'
- index = signature.lastIndexOf(')') + 1;
- type = signatureToString(signature.substring(index), chopit);
- } catch (StringIndexOutOfBoundsException e) { // Should never occur
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- return type;
- }
-
-
- /**
- * Converts method signature to string with all class names compacted.
- *
- * @param signature to convert
- * @param name of method
- * @param access flags of method
- * @return Human readable signature
- */
- public static final String methodSignatureToString( String signature, String name, String access ) {
- return methodSignatureToString(signature, name, access, true);
- }
-
-
- public static final String methodSignatureToString( String signature, String name,
- String access, boolean chopit ) {
- return methodSignatureToString(signature, name, access, chopit, null);
- }
-
-
- /**
- * A return type signature represents the return value from a method.
- * It is a series of bytes in the following grammar:
- *
- * ::= | V
- *
- * The character V indicates that the method returns no value. Otherwise, the
- * signature indicates the type of the return value.
- * An argument signature represents an argument passed to a method:
- *
- * ::=
- *
- * A method signature represents the arguments that the method expects, and
- * the value that it returns.
- * ::= ()
- * ::= *
- *
- * This method converts such a string into a Java type declaration like
- * `void main(String[])' and throws a `ClassFormatException' when the parsed
- * type is invalid.
- *
- * @param signature Method signature
- * @param name Method name
- * @param access Method access rights
- * @return Java type declaration
- * @throws ClassFormatException
- */
- public static final String methodSignatureToString( String signature, String name,
- String access, boolean chopit, LocalVariableTable vars ) throws ClassFormatException {
- StringBuilder buf = new StringBuilder("(");
- String type;
- int index;
- int var_index = (access.indexOf("static") >= 0) ? 0 : 1;
- try { // Read all declarations between for `(' and `)'
- if (signature.charAt(0) != '(') {
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- index = 1; // current string position
- while (signature.charAt(index) != ')') {
- String param_type = signatureToString(signature.substring(index), chopit);
- buf.append(param_type);
- if (vars != null) {
- LocalVariable l = vars.getLocalVariable(var_index);
- if (l != null) {
- buf.append(" ").append(l.getName());
- }
- } else {
- buf.append(" arg").append(var_index);
- }
- if ("double".equals(param_type) || "long".equals(param_type)) {
- var_index += 2;
- } else {
- var_index++;
- }
- buf.append(", ");
- //corrected concurrent private static field acess
- index += unwrap(consumed_chars); // update position
- }
- index++; // update position
- // Read return type after `)'
- type = signatureToString(signature.substring(index), chopit);
- } catch (StringIndexOutOfBoundsException e) { // Should never occur
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- if (buf.length() > 1) {
- buf.setLength(buf.length() - 2);
- }
- buf.append(")");
- return access + ((access.length() > 0) ? " " : "") + // May be an empty string
- type + " " + name + buf.toString();
- }
-
-
- // Guess what this does
- private static final int pow2( int n ) {
- return 1 << n;
- }
-
-
- /**
- * Replace all occurences of old in str with new.
- *
- * @param str String to permute
- * @param old String to be replaced
- * @param new_ Replacement string
- * @return new String object
- */
- public static final String replace( String str, String old, String new_ ) {
- int index, old_index;
- StringBuilder buf = new StringBuilder();
- try {
- if ((index = str.indexOf(old)) != -1) { // `old' found in str
- old_index = 0; // String start offset
- // While we have something to replace
- while ((index = str.indexOf(old, old_index)) != -1) {
- buf.append(str.substring(old_index, index)); // append prefix
- buf.append(new_); // append replacement
- old_index = index + old.length(); // Skip `old'.length chars
- }
- buf.append(str.substring(old_index)); // append rest of string
- str = buf.toString();
- }
- } catch (StringIndexOutOfBoundsException e) { // Should not occur
- System.err.println(e);
- }
- return str;
- }
-
-
- /**
- * Converts signature to string with all class names compacted.
- *
- * @param signature to convert
- * @return Human readable signature
- */
- public static final String signatureToString( String signature ) {
- return signatureToString(signature, true);
- }
-
-
- /**
- * The field signature represents the value of an argument to a function or
- * the value of a variable. It is a series of bytes generated by the
- * following grammar:
- *
- *
- * ::=
- * ::= ||
- * ::= B|C|D|F|I|J|S|Z
- * ::= L;
- * ::= [
- *
- * The meaning of the base types is as follows:
- * B byte signed byte
- * C char character
- * D double double precision IEEE float
- * F float single precision IEEE float
- * I int integer
- * J long long integer
- * L; ... an object of the given class
- * S short signed short
- * Z boolean true or false
- * [ ... array
- *
- *
- * This method converts this string into a Java type declaration such as
- * `String[]' and throws a `ClassFormatException' when the parsed type is
- * invalid.
- *
- * @param signature Class signature
- * @param chopit Flag that determines whether chopping is executed or not
- * @return Java type declaration
- * @throws ClassFormatException
- */
- public static final String signatureToString( String signature, boolean chopit ) {
- //corrected concurrent private static field acess
- wrap(consumed_chars, 1); // This is the default, read just one char like `B'
- try {
- switch (signature.charAt(0)) {
- case 'B':
- return "byte";
- case 'C':
- return "char";
- case 'D':
- return "double";
- case 'F':
- return "float";
- case 'I':
- return "int";
- case 'J':
- return "long";
- case 'L': { // Full class name
- int index = signature.indexOf(';'); // Look for closing `;'
- if (index < 0) {
- throw new ClassFormatException("Invalid signature: " + signature);
- }
- //corrected concurrent private static field acess
- wrap(consumed_chars, index + 1); // "Lblabla;" `L' and `;' are removed
- return compactClassName(signature.substring(1, index), chopit);
- }
- case 'S':
- return "short";
- case 'Z':
- return "boolean";
- case '[': { // Array declaration
- int n;
- StringBuilder brackets;
- String type;
- int consumed_chars; // Shadows global var
- brackets = new StringBuilder(); // Accumulate []'s
- // Count opening brackets and look for optional size argument
- for (n = 0; signature.charAt(n) == '['; n++) {
- brackets.append("[]");
- }
- consumed_chars = n; // Remember value
- // The rest of the string denotes a `'
- type = signatureToString(signature.substring(n), chopit);
- //corrected concurrent private static field acess
- //Utility.consumed_chars += consumed_chars; is replaced by:
- int _temp = unwrap(Utility.consumed_chars) + consumed_chars;
- wrap(Utility.consumed_chars, _temp);
- return type + brackets.toString();
- }
- case 'V':
- return "void";
- default:
- throw new ClassFormatException("Invalid signature: `" + signature + "'");
- }
- } catch (StringIndexOutOfBoundsException e) { // Should never occur
- throw new ClassFormatException("Invalid signature: " + e + ":" + signature);
- }
- }
-
-
- /** Parse Java type such as "char", or "java.lang.String[]" and return the
- * signature in byte code format, e.g. "C" or "[Ljava/lang/String;" respectively.
- *
- * @param type Java type
- * @return byte code signature
- */
- public static String getSignature( String type ) {
- StringBuilder buf = new StringBuilder();
- char[] chars = type.toCharArray();
- boolean char_found = false, delim = false;
- int index = -1;
- loop: for (int i = 0; i < chars.length; i++) {
- switch (chars[i]) {
- case ' ':
- case '\t':
- case '\n':
- case '\r':
- case '\f':
- if (char_found) {
- delim = true;
- }
- break;
- case '[':
- if (!char_found) {
- throw new RuntimeException("Illegal type: " + type);
- }
- index = i;
- break loop;
- default:
- char_found = true;
- if (!delim) {
- buf.append(chars[i]);
- }
- }
- }
- int brackets = 0;
- if (index > 0) {
- brackets = countBrackets(type.substring(index));
- }
- type = buf.toString();
- buf.setLength(0);
- for (int i = 0; i < brackets; i++) {
- buf.append('[');
- }
- boolean found = false;
- for (int i = Constants.T_BOOLEAN; (i <= Constants.T_VOID) && !found; i++) {
- if (Constants.TYPE_NAMES[i].equals(type)) {
- found = true;
- buf.append(Constants.SHORT_TYPE_NAMES[i]);
- }
- }
- if (!found) {
- buf.append('L').append(type.replace('.', '/')).append(';');
- }
- return buf.toString();
- }
-
-
- private static int countBrackets( String brackets ) {
- char[] chars = brackets.toCharArray();
- int count = 0;
- boolean open = false;
- for (int i = 0; i < chars.length; i++) {
- switch (chars[i]) {
- case '[':
- if (open) {
- throw new RuntimeException("Illegally nested brackets:" + brackets);
- }
- open = true;
- break;
- case ']':
- if (!open) {
- throw new RuntimeException("Illegally nested brackets:" + brackets);
- }
- open = false;
- count++;
- break;
- default:
- // Don't care
- }
- }
- if (open) {
- throw new RuntimeException("Illegally nested brackets:" + brackets);
- }
- return count;
- }
-
-
- /**
- * Return type of method signature as a byte value as defined in Constants
- *
- * @param signature in format described above
- * @return type of method signature
- * @see Constants
- */
- public static final byte typeOfMethodSignature( String signature ) throws ClassFormatException {
- int index;
- try {
- if (signature.charAt(0) != '(') {
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- index = signature.lastIndexOf(')') + 1;
- return typeOfSignature(signature.substring(index));
- } catch (StringIndexOutOfBoundsException e) {
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- }
-
-
- /**
- * Return type of signature as a byte value as defined in Constants
- *
- * @param signature in format described above
- * @return type of signature
- * @see Constants
- */
- public static final byte typeOfSignature( String signature ) throws ClassFormatException {
- try {
- switch (signature.charAt(0)) {
- case 'B':
- return Constants.T_BYTE;
- case 'C':
- return Constants.T_CHAR;
- case 'D':
- return Constants.T_DOUBLE;
- case 'F':
- return Constants.T_FLOAT;
- case 'I':
- return Constants.T_INT;
- case 'J':
- return Constants.T_LONG;
- case 'L':
- return Constants.T_REFERENCE;
- case '[':
- return Constants.T_ARRAY;
- case 'V':
- return Constants.T_VOID;
- case 'Z':
- return Constants.T_BOOLEAN;
- case 'S':
- return Constants.T_SHORT;
- default:
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- } catch (StringIndexOutOfBoundsException e) {
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- }
-
-
- /** Map opcode names to opcode numbers. E.g., return Constants.ALOAD for "aload"
- */
- public static short searchOpcode( String name ) {
- name = name.toLowerCase(Locale.ENGLISH);
- for (short i = 0; i < Constants.OPCODE_NAMES.length; i++) {
- if (Constants.OPCODE_NAMES[i].equals(name)) {
- return i;
- }
- }
- return -1;
- }
-
-
- /**
- * Convert (signed) byte to (unsigned) short value, i.e., all negative
- * values become positive.
- */
- private static final short byteToShort( byte b ) {
- return (b < 0) ? (short) (256 + b) : (short) b;
- }
-
-
- /** Convert bytes into hexidecimal string
- *
- * @return bytes as hexidecimal string, e.g. 00 FA 12 ...
- */
- public static final String toHexString( byte[] bytes ) {
- StringBuilder buf = new StringBuilder();
- for (int i = 0; i < bytes.length; i++) {
- short b = byteToShort(bytes[i]);
- String hex = Integer.toString(b, 0x10);
- if (b < 0x10) {
- buf.append('0');
- }
- buf.append(hex);
- if (i < bytes.length - 1) {
- buf.append(' ');
- }
- }
- return buf.toString();
- }
-
-
- /**
- * Return a string for an integer justified left or right and filled up with
- * `fill' characters if necessary.
- *
- * @param i integer to format
- * @param length length of desired string
- * @param left_justify format left or right
- * @param fill fill character
- * @return formatted int
- */
- public static final String format( int i, int length, boolean left_justify, char fill ) {
- return fillup(Integer.toString(i), length, left_justify, fill);
- }
-
-
- /**
- * Fillup char with up to length characters with char `fill' and justify it left or right.
- *
- * @param str string to format
- * @param length length of desired string
- * @param left_justify format left or right
- * @param fill fill character
- * @return formatted string
- */
- public static final String fillup( String str, int length, boolean left_justify, char fill ) {
- int len = length - str.length();
- char[] buf = new char[(len < 0) ? 0 : len];
- for (int j = 0; j < buf.length; j++) {
- buf[j] = fill;
- }
- if (left_justify) {
- return str + new String(buf);
- }
- return new String(buf) + str;
- }
-
-
- static final boolean equals( byte[] a, byte[] b ) {
- int size;
- if ((size = a.length) != b.length) {
- return false;
- }
- for (int i = 0; i < size; i++) {
- if (a[i] != b[i]) {
- return false;
- }
- }
- return true;
- }
-
-
- public static final void printArray( PrintStream out, Object[] obj ) {
- out.println(printArray(obj, true));
- }
-
-
- public static final void printArray( PrintWriter out, Object[] obj ) {
- out.println(printArray(obj, true));
- }
-
-
- public static final String printArray( Object[] obj ) {
- return printArray(obj, true);
- }
-
-
- public static final String printArray( Object[] obj, boolean braces ) {
- return printArray(obj, braces, false);
- }
-
-
- public static final String printArray( Object[] obj, boolean braces, boolean quote ) {
- if (obj == null) {
- return null;
- }
- StringBuilder buf = new StringBuilder();
- if (braces) {
- buf.append('{');
- }
- for (int i = 0; i < obj.length; i++) {
- if (obj[i] != null) {
- buf.append((quote ? "\"" : "")).append(obj[i].toString()).append(
- (quote ? "\"" : ""));
- } else {
- buf.append("null");
- }
- if (i < obj.length - 1) {
- buf.append(", ");
- }
- }
- if (braces) {
- buf.append('}');
- }
- return buf.toString();
- }
-
-
- /** @return true, if character is one of (a, ... z, A, ... Z, 0, ... 9, _)
- */
- public static boolean isJavaIdentifierPart( char ch ) {
- return ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))
- || ((ch >= '0') && (ch <= '9')) || (ch == '_');
- }
-
-
- /** Encode byte array it into Java identifier string, i.e., a string
- * that only contains the following characters: (a, ... z, A, ... Z,
- * 0, ... 9, _, $). The encoding algorithm itself is not too
- * clever: if the current byte's ASCII value already is a valid Java
- * identifier part, leave it as it is. Otherwise it writes the
- * escape character($) followed by - the ASCII value as a
- * hexadecimal string, if the value is not in the range
- * 200..247
- a Java identifier char not used in a lowercase
- * hexadecimal string, if the value is in the range
- * 200..247
- *
- * This operation inflates the original byte array by roughly 40-50%
- *
- * @param bytes the byte array to convert
- * @param compress use gzip to minimize string
- */
- public static String encode( byte[] bytes, boolean compress ) throws IOException {
- if (compress) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- GZIPOutputStream gos = new GZIPOutputStream(baos);
- gos.write(bytes, 0, bytes.length);
- gos.close();
- baos.close();
- bytes = baos.toByteArray();
- }
- CharArrayWriter caw = new CharArrayWriter();
- JavaWriter jw = new JavaWriter(caw);
- for (int i = 0; i < bytes.length; i++) {
- int in = bytes[i] & 0x000000ff; // Normalize to unsigned
- jw.write(in);
- }
- jw.close();
- return caw.toString();
- }
-
-
- /** Decode a string back to a byte array.
- *
- * @param s the string to convert
- * @param uncompress use gzip to uncompress the stream of bytes
- */
- public static byte[] decode( String s, boolean uncompress ) throws IOException {
- char[] chars = s.toCharArray();
- CharArrayReader car = new CharArrayReader(chars);
- JavaReader jr = new JavaReader(car);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- int ch;
- while ((ch = jr.read()) >= 0) {
- bos.write(ch);
- }
- bos.close();
- car.close();
- jr.close();
- byte[] bytes = bos.toByteArray();
- if (uncompress) {
- GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(bytes));
- byte[] tmp = new byte[bytes.length * 3]; // Rough estimate
- int count = 0;
- int b;
- while ((b = gis.read()) >= 0) {
- tmp[count++] = (byte) b;
- }
- bytes = new byte[count];
- System.arraycopy(tmp, 0, bytes, 0, count);
- }
- return bytes;
- }
-
- // A-Z, g-z, _, $
- private static final int FREE_CHARS = 48;
- static int[] CHAR_MAP = new int[FREE_CHARS];
- static int[] MAP_CHAR = new int[256]; // Reverse map
- private static final char ESCAPE_CHAR = '$';
- static {
- int j = 0;
- for (int i = 'A'; i <= 'Z'; i++) {
- CHAR_MAP[j] = i;
- MAP_CHAR[i] = j;
- j++;
- }
- for (int i = 'g'; i <= 'z'; i++) {
- CHAR_MAP[j] = i;
- MAP_CHAR[i] = j;
- j++;
- }
- CHAR_MAP[j] = '$';
- MAP_CHAR['$'] = j;
- j++;
- CHAR_MAP[j] = '_';
- MAP_CHAR['_'] = j;
- }
-
- /** Decode characters into bytes.
- * Used by decode()
- */
- private static class JavaReader extends FilterReader {
-
- public JavaReader(Reader in) {
- super(in);
- }
-
-
- public int read() throws IOException {
- int b = in.read();
- if (b != ESCAPE_CHAR) {
- return b;
- }
- int i = in.read();
- if (i < 0) {
- return -1;
- }
- if (((i >= '0') && (i <= '9')) || ((i >= 'a') && (i <= 'f'))) { // Normal escape
- int j = in.read();
- if (j < 0) {
- return -1;
- }
- char[] tmp = {
- (char) i, (char) j
- };
- int s = Integer.parseInt(new String(tmp), 16);
- return s;
- }
- return MAP_CHAR[i];
- }
-
-
- public int read( char[] cbuf, int off, int len ) throws IOException {
- for (int i = 0; i < len; i++) {
- cbuf[off + i] = (char) read();
- }
- return len;
- }
- }
-
- /** Encode bytes into valid java identifier characters.
- * Used by encode()
- */
- private static class JavaWriter extends FilterWriter {
-
- public JavaWriter(Writer out) {
- super(out);
- }
-
-
- public void write( int b ) throws IOException {
- if (isJavaIdentifierPart((char) b) && (b != ESCAPE_CHAR)) {
- out.write(b);
- } else {
- out.write(ESCAPE_CHAR); // Escape character
- // Special escape
- if (b >= 0 && b < FREE_CHARS) {
- out.write(CHAR_MAP[b]);
- } else { // Normal escape
- char[] tmp = Integer.toHexString(b).toCharArray();
- if (tmp.length == 1) {
- out.write('0');
- out.write(tmp[0]);
- } else {
- out.write(tmp[0]);
- out.write(tmp[1]);
- }
- }
- }
- }
-
-
- public void write( char[] cbuf, int off, int len ) throws IOException {
- for (int i = 0; i < len; i++) {
- write(cbuf[off + i]);
- }
- }
-
-
- public void write( String str, int off, int len ) throws IOException {
- write(str.toCharArray(), off, len);
- }
- }
-
-
- /**
- * Escape all occurences of newline chars '\n', quotes \", etc.
- */
- public static final String convertString( String label ) {
- char[] ch = label.toCharArray();
- StringBuilder buf = new StringBuilder();
- for (int i = 0; i < ch.length; i++) {
- switch (ch[i]) {
- case '\n':
- buf.append("\\n");
- break;
- case '\r':
- buf.append("\\r");
- break;
- case '\"':
- buf.append("\\\"");
- break;
- case '\'':
- buf.append("\\'");
- break;
- case '\\':
- buf.append("\\\\");
- break;
- default:
- buf.append(ch[i]);
- break;
- }
- }
- return buf.toString();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.CharArrayReader;
+import java.io.CharArrayWriter;
+import java.io.FilterReader;
+import java.io.FilterWriter;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * Utility functions that do not really belong to any class in particular.
+ *
+ * @version $Id: Utility.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class Utility {
+
+ private static int unwrap( ThreadLocal tl ) {
+ return ((Integer) tl.get()).intValue();
+ }
+
+
+ private static void wrap( ThreadLocal tl, int value ) {
+ tl.set(new Integer(value));
+ }
+
+ private static ThreadLocal consumed_chars = new ThreadLocal() {
+
+ protected Object initialValue() {
+ return new Integer(0);
+ }
+ };/* How many chars have been consumed
+ * during parsing in signatureToString().
+ * Read by methodSignatureToString().
+ * Set by side effect,but only internally.
+ */
+ private static boolean wide = false; /* The `WIDE' instruction is used in the
+ * byte code to allow 16-bit wide indices
+ * for local variables. This opcode
+ * precedes an `ILOAD', e.g.. The opcode
+ * immediately following takes an extra
+ * byte which is combined with the
+ * following byte to form a
+ * 16-bit value.
+ */
+
+
+ /**
+ * Convert bit field of flags into string such as `static final'.
+ *
+ * @param access_flags Access flags
+ * @return String representation of flags
+ */
+ public static final String accessToString( int access_flags ) {
+ return accessToString(access_flags, false);
+ }
+
+
+ /**
+ * Convert bit field of flags into string such as `static final'.
+ *
+ * Special case: Classes compiled with new compilers and with the
+ * `ACC_SUPER' flag would be said to be "synchronized". This is
+ * because SUN used the same value for the flags `ACC_SUPER' and
+ * `ACC_SYNCHRONIZED'.
+ *
+ * @param access_flags Access flags
+ * @param for_class access flags are for class qualifiers ?
+ * @return String representation of flags
+ */
+ public static final String accessToString( int access_flags, boolean for_class ) {
+ StringBuilder buf = new StringBuilder();
+ int p = 0;
+ for (int i = 0; p < Constants.MAX_ACC_FLAG; i++) { // Loop through known flags
+ p = pow2(i);
+ if ((access_flags & p) != 0) {
+ /* Special case: Classes compiled with new compilers and with the
+ * `ACC_SUPER' flag would be said to be "synchronized". This is
+ * because SUN used the same value for the flags `ACC_SUPER' and
+ * `ACC_SYNCHRONIZED'.
+ */
+ if (for_class && ((p == Constants.ACC_SUPER) || (p == Constants.ACC_INTERFACE))) {
+ continue;
+ }
+ buf.append(Constants.ACCESS_NAMES[i]).append(" ");
+ }
+ }
+ return buf.toString().trim();
+ }
+
+
+ /**
+ * @return "class" or "interface", depending on the ACC_INTERFACE flag
+ */
+ public static final String classOrInterface( int access_flags ) {
+ return ((access_flags & Constants.ACC_INTERFACE) != 0) ? "interface" : "class";
+ }
+
+
+ /**
+ * Disassemble a byte array of JVM byte codes starting from code line
+ * `index' and return the disassembled string representation. Decode only
+ * `num' opcodes (including their operands), use -1 if you want to
+ * decompile everything.
+ *
+ * @param code byte code array
+ * @param constant_pool Array of constants
+ * @param index offset in `code' array
+ * (number of opcodes, not bytes!)
+ * @param length number of opcodes to decompile, -1 for all
+ * @param verbose be verbose, e.g. print constant pool index
+ * @return String representation of byte codes
+ */
+ public static final String codeToString( byte[] code, ConstantPool constant_pool, int index,
+ int length, boolean verbose ) {
+ StringBuilder buf = new StringBuilder(code.length * 20); // Should be sufficient
+ ByteSequence stream = new ByteSequence(code);
+ try {
+ for (int i = 0; i < index; i++) {
+ codeToString(stream, constant_pool, verbose);
+ }
+ for (int i = 0; stream.available() > 0; i++) {
+ if ((length < 0) || (i < length)) {
+ String indices = fillup(stream.getIndex() + ":", 6, true, ' ');
+ buf.append(indices).append(codeToString(stream, constant_pool, verbose))
+ .append('\n');
+ }
+ }
+ } catch (IOException e) {
+ System.out.println(buf.toString());
+ e.printStackTrace();
+ throw new ClassFormatException("Byte code error: " + e);
+ }
+ return buf.toString();
+ }
+
+
+ public static final String codeToString( byte[] code, ConstantPool constant_pool, int index,
+ int length ) {
+ return codeToString(code, constant_pool, index, length, true);
+ }
+
+
+ /**
+ * Disassemble a stream of byte codes and return the
+ * string representation.
+ *
+ * @param bytes stream of bytes
+ * @param constant_pool Array of constants
+ * @param verbose be verbose, e.g. print constant pool index
+ * @return String representation of byte code
+ */
+ public static final String codeToString( ByteSequence bytes, ConstantPool constant_pool,
+ boolean verbose ) throws IOException {
+ short opcode = (short) bytes.readUnsignedByte();
+ int default_offset = 0, low, high, npairs;
+ int index, vindex, constant;
+ int[] match, jump_table;
+ int no_pad_bytes = 0, offset;
+ StringBuilder buf = new StringBuilder(Constants.OPCODE_NAMES[opcode]);
+ /* Special case: Skip (0-3) padding bytes, i.e., the
+ * following bytes are 4-byte-aligned
+ */
+ if ((opcode == Constants.TABLESWITCH) || (opcode == Constants.LOOKUPSWITCH)) {
+ int remainder = bytes.getIndex() % 4;
+ no_pad_bytes = (remainder == 0) ? 0 : 4 - remainder;
+ for (int i = 0; i < no_pad_bytes; i++) {
+ byte b;
+ if ((b = bytes.readByte()) != 0) {
+ System.err.println("Warning: Padding byte != 0 in "
+ + Constants.OPCODE_NAMES[opcode] + ":" + b);
+ }
+ }
+ // Both cases have a field default_offset in common
+ default_offset = bytes.readInt();
+ }
+ switch (opcode) {
+ /* Table switch has variable length arguments.
+ */
+ case Constants.TABLESWITCH:
+ low = bytes.readInt();
+ high = bytes.readInt();
+ offset = bytes.getIndex() - 12 - no_pad_bytes - 1;
+ default_offset += offset;
+ buf.append("\tdefault = ").append(default_offset).append(", low = ").append(low)
+ .append(", high = ").append(high).append("(");
+ jump_table = new int[high - low + 1];
+ for (int i = 0; i < jump_table.length; i++) {
+ jump_table[i] = offset + bytes.readInt();
+ buf.append(jump_table[i]);
+ if (i < jump_table.length - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append(")");
+ break;
+ /* Lookup switch has variable length arguments.
+ */
+ case Constants.LOOKUPSWITCH: {
+ npairs = bytes.readInt();
+ offset = bytes.getIndex() - 8 - no_pad_bytes - 1;
+ match = new int[npairs];
+ jump_table = new int[npairs];
+ default_offset += offset;
+ buf.append("\tdefault = ").append(default_offset).append(", npairs = ").append(
+ npairs).append(" (");
+ for (int i = 0; i < npairs; i++) {
+ match[i] = bytes.readInt();
+ jump_table[i] = offset + bytes.readInt();
+ buf.append("(").append(match[i]).append(", ").append(jump_table[i]).append(")");
+ if (i < npairs - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append(")");
+ }
+ break;
+ /* Two address bytes + offset from start of byte stream form the
+ * jump target
+ */
+ case Constants.GOTO:
+ case Constants.IFEQ:
+ case Constants.IFGE:
+ case Constants.IFGT:
+ case Constants.IFLE:
+ case Constants.IFLT:
+ case Constants.JSR:
+ case Constants.IFNE:
+ case Constants.IFNONNULL:
+ case Constants.IFNULL:
+ case Constants.IF_ACMPEQ:
+ case Constants.IF_ACMPNE:
+ case Constants.IF_ICMPEQ:
+ case Constants.IF_ICMPGE:
+ case Constants.IF_ICMPGT:
+ case Constants.IF_ICMPLE:
+ case Constants.IF_ICMPLT:
+ case Constants.IF_ICMPNE:
+ buf.append("\t\t#").append((bytes.getIndex() - 1) + bytes.readShort());
+ break;
+ /* 32-bit wide jumps
+ */
+ case Constants.GOTO_W:
+ case Constants.JSR_W:
+ buf.append("\t\t#").append(((bytes.getIndex() - 1) + bytes.readInt()));
+ break;
+ /* Index byte references local variable (register)
+ */
+ case Constants.ALOAD:
+ case Constants.ASTORE:
+ case Constants.DLOAD:
+ case Constants.DSTORE:
+ case Constants.FLOAD:
+ case Constants.FSTORE:
+ case Constants.ILOAD:
+ case Constants.ISTORE:
+ case Constants.LLOAD:
+ case Constants.LSTORE:
+ case Constants.RET:
+ if (wide) {
+ vindex = bytes.readUnsignedShort();
+ wide = false; // Clear flag
+ } else {
+ vindex = bytes.readUnsignedByte();
+ }
+ buf.append("\t\t%").append(vindex);
+ break;
+ /*
+ * Remember wide byte which is used to form a 16-bit address in the
+ * following instruction. Relies on that the method is called again with
+ * the following opcode.
+ */
+ case Constants.WIDE:
+ wide = true;
+ buf.append("\t(wide)");
+ break;
+ /* Array of basic type.
+ */
+ case Constants.NEWARRAY:
+ buf.append("\t\t<").append(Constants.TYPE_NAMES[bytes.readByte()]).append(">");
+ break;
+ /* Access object/class fields.
+ */
+ case Constants.GETFIELD:
+ case Constants.GETSTATIC:
+ case Constants.PUTFIELD:
+ case Constants.PUTSTATIC:
+ index = bytes.readUnsignedShort();
+ buf.append("\t\t").append(
+ constant_pool.constantToString(index, Constants.CONSTANT_Fieldref)).append(
+ (verbose ? " (" + index + ")" : ""));
+ break;
+ /* Operands are references to classes in constant pool
+ */
+ case Constants.NEW:
+ case Constants.CHECKCAST:
+ buf.append("\t");
+ case Constants.INSTANCEOF:
+ index = bytes.readUnsignedShort();
+ buf.append("\t<").append(
+ constant_pool.constantToString(index, Constants.CONSTANT_Class))
+ .append(">").append((verbose ? " (" + index + ")" : ""));
+ break;
+ /* Operands are references to methods in constant pool
+ */
+ case Constants.INVOKESPECIAL:
+ case Constants.INVOKESTATIC:
+ case Constants.INVOKEVIRTUAL:
+ index = bytes.readUnsignedShort();
+ buf.append("\t").append(
+ constant_pool.constantToString(index, Constants.CONSTANT_Methodref))
+ .append((verbose ? " (" + index + ")" : ""));
+ break;
+ case Constants.INVOKEINTERFACE:
+ index = bytes.readUnsignedShort();
+ int nargs = bytes.readUnsignedByte(); // historical, redundant
+ buf.append("\t").append(
+ constant_pool
+ .constantToString(index, Constants.CONSTANT_InterfaceMethodref))
+ .append(verbose ? " (" + index + ")\t" : "").append(nargs).append("\t")
+ .append(bytes.readUnsignedByte()); // Last byte is a reserved space
+ break;
+ /* Operands are references to items in constant pool
+ */
+ case Constants.LDC_W:
+ case Constants.LDC2_W:
+ index = bytes.readUnsignedShort();
+ buf.append("\t\t").append(
+ constant_pool.constantToString(index, constant_pool.getConstant(index)
+ .getTag())).append((verbose ? " (" + index + ")" : ""));
+ break;
+ case Constants.LDC:
+ index = bytes.readUnsignedByte();
+ buf.append("\t\t").append(
+ constant_pool.constantToString(index, constant_pool.getConstant(index)
+ .getTag())).append((verbose ? " (" + index + ")" : ""));
+ break;
+ /* Array of references.
+ */
+ case Constants.ANEWARRAY:
+ index = bytes.readUnsignedShort();
+ buf.append("\t\t<").append(
+ compactClassName(constant_pool.getConstantString(index,
+ Constants.CONSTANT_Class), false)).append(">").append(
+ (verbose ? " (" + index + ")" : ""));
+ break;
+ /* Multidimensional array of references.
+ */
+ case Constants.MULTIANEWARRAY: {
+ index = bytes.readUnsignedShort();
+ int dimensions = bytes.readUnsignedByte();
+ buf.append("\t<").append(
+ compactClassName(constant_pool.getConstantString(index,
+ Constants.CONSTANT_Class), false)).append(">\t").append(dimensions)
+ .append((verbose ? " (" + index + ")" : ""));
+ }
+ break;
+ /* Increment local variable.
+ */
+ case Constants.IINC:
+ if (wide) {
+ vindex = bytes.readUnsignedShort();
+ constant = bytes.readShort();
+ wide = false;
+ } else {
+ vindex = bytes.readUnsignedByte();
+ constant = bytes.readByte();
+ }
+ buf.append("\t\t%").append(vindex).append("\t").append(constant);
+ break;
+ default:
+ if (Constants.NO_OF_OPERANDS[opcode] > 0) {
+ for (int i = 0; i < Constants.TYPE_OF_OPERANDS[opcode].length; i++) {
+ buf.append("\t\t");
+ switch (Constants.TYPE_OF_OPERANDS[opcode][i]) {
+ case Constants.T_BYTE:
+ buf.append(bytes.readByte());
+ break;
+ case Constants.T_SHORT:
+ buf.append(bytes.readShort());
+ break;
+ case Constants.T_INT:
+ buf.append(bytes.readInt());
+ break;
+ default: // Never reached
+ System.err.println("Unreachable default case reached!");
+ System.exit(-1);
+ }
+ }
+ }
+ }
+ return buf.toString();
+ }
+
+
+ public static final String codeToString( ByteSequence bytes, ConstantPool constant_pool )
+ throws IOException {
+ return codeToString(bytes, constant_pool, true);
+ }
+
+
+ /**
+ * Shorten long class names, java/lang/String becomes
+ * String.
+ *
+ * @param str The long class name
+ * @return Compacted class name
+ */
+ public static final String compactClassName( String str ) {
+ return compactClassName(str, true);
+ }
+
+
+ /**
+ * Shorten long class name str, i.e., chop off the prefix,
+ * if the
+ * class name starts with this string and the flag chopit is true.
+ * Slashes / are converted to dots ..
+ *
+ * @param str The long class name
+ * @param prefix The prefix the get rid off
+ * @param chopit Flag that determines whether chopping is executed or not
+ * @return Compacted class name
+ */
+ public static final String compactClassName( String str, String prefix, boolean chopit ) {
+ int len = prefix.length();
+ str = str.replace('/', '.'); // Is `/' on all systems, even DOS
+ if (chopit) {
+ // If string starts with `prefix' and contains no further dots
+ if (str.startsWith(prefix) && (str.substring(len).indexOf('.') == -1)) {
+ str = str.substring(len);
+ }
+ }
+ return str;
+ }
+
+
+ /**
+ * Shorten long class names, java/lang/String becomes
+ * java.lang.String,
+ * e.g.. If chopit is true the prefix java.lang
+ * is also removed.
+ *
+ * @param str The long class name
+ * @param chopit Flag that determines whether chopping is executed or not
+ * @return Compacted class name
+ */
+ public static final String compactClassName( String str, boolean chopit ) {
+ return compactClassName(str, "java.lang.", chopit);
+ }
+
+
+ /**
+ * @return `flag' with bit `i' set to 1
+ */
+ public static final int setBit( int flag, int i ) {
+ return flag | pow2(i);
+ }
+
+
+ /**
+ * @return `flag' with bit `i' set to 0
+ */
+ public static final int clearBit( int flag, int i ) {
+ int bit = pow2(i);
+ return (flag & bit) == 0 ? flag : flag ^ bit;
+ }
+
+
+ /**
+ * @return true, if bit `i' in `flag' is set
+ */
+ public static final boolean isSet( int flag, int i ) {
+ return (flag & pow2(i)) != 0;
+ }
+
+
+ /**
+ * Converts string containing the method return and argument types
+ * to a byte code method signature.
+ *
+ * @param ret Return type of method
+ * @param argv Types of method arguments
+ * @return Byte code representation of method signature
+ */
+ public final static String methodTypeToSignature( String ret, String[] argv )
+ throws ClassFormatException {
+ StringBuilder buf = new StringBuilder("(");
+ String str;
+ if (argv != null) {
+ for (int i = 0; i < argv.length; i++) {
+ str = getSignature(argv[i]);
+ if (str.endsWith("V")) {
+ throw new ClassFormatException("Invalid type: " + argv[i]);
+ }
+ buf.append(str);
+ }
+ }
+ str = getSignature(ret);
+ buf.append(")").append(str);
+ return buf.toString();
+ }
+
+
+ /**
+ * @param signature Method signature
+ * @return Array of argument types
+ * @throws ClassFormatException
+ */
+ public static final String[] methodSignatureArgumentTypes( String signature )
+ throws ClassFormatException {
+ return methodSignatureArgumentTypes(signature, true);
+ }
+
+
+ /**
+ * @param signature Method signature
+ * @param chopit Shorten class names ?
+ * @return Array of argument types
+ * @throws ClassFormatException
+ */
+ public static final String[] methodSignatureArgumentTypes( String signature, boolean chopit )
+ throws ClassFormatException {
+ List vec = new ArrayList();
+ int index;
+ try { // Read all declarations between for `(' and `)'
+ if (signature.charAt(0) != '(') {
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ index = 1; // current string position
+ while (signature.charAt(index) != ')') {
+ vec.add(signatureToString(signature.substring(index), chopit));
+ //corrected concurrent private static field acess
+ index += unwrap(consumed_chars); // update position
+ }
+ } catch (StringIndexOutOfBoundsException e) { // Should never occur
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ return (String[]) vec.toArray(new String[vec.size()]);
+ }
+
+
+ /**
+ * @param signature Method signature
+ * @return return type of method
+ * @throws ClassFormatException
+ */
+ public static final String methodSignatureReturnType( String signature )
+ throws ClassFormatException {
+ return methodSignatureReturnType(signature, true);
+ }
+
+
+ /**
+ * @param signature Method signature
+ * @param chopit Shorten class names ?
+ * @return return type of method
+ * @throws ClassFormatException
+ */
+ public static final String methodSignatureReturnType( String signature, boolean chopit )
+ throws ClassFormatException {
+ int index;
+ String type;
+ try {
+ // Read return type after `)'
+ index = signature.lastIndexOf(')') + 1;
+ type = signatureToString(signature.substring(index), chopit);
+ } catch (StringIndexOutOfBoundsException e) { // Should never occur
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ return type;
+ }
+
+
+ /**
+ * Converts method signature to string with all class names compacted.
+ *
+ * @param signature to convert
+ * @param name of method
+ * @param access flags of method
+ * @return Human readable signature
+ */
+ public static final String methodSignatureToString( String signature, String name, String access ) {
+ return methodSignatureToString(signature, name, access, true);
+ }
+
+
+ public static final String methodSignatureToString( String signature, String name,
+ String access, boolean chopit ) {
+ return methodSignatureToString(signature, name, access, chopit, null);
+ }
+
+
+ /**
+ * A return type signature represents the return value from a method.
+ * It is a series of bytes in the following grammar:
+ *
+ * ::= | V
+ *
+ * The character V indicates that the method returns no value. Otherwise, the
+ * signature indicates the type of the return value.
+ * An argument signature represents an argument passed to a method:
+ *
+ * ::=
+ *
+ * A method signature represents the arguments that the method expects, and
+ * the value that it returns.
+ * ::= ()
+ * ::= *
+ *
+ * This method converts such a string into a Java type declaration like
+ * `void main(String[])' and throws a `ClassFormatException' when the parsed
+ * type is invalid.
+ *
+ * @param signature Method signature
+ * @param name Method name
+ * @param access Method access rights
+ * @return Java type declaration
+ * @throws ClassFormatException
+ */
+ public static final String methodSignatureToString( String signature, String name,
+ String access, boolean chopit, LocalVariableTable vars ) throws ClassFormatException {
+ StringBuilder buf = new StringBuilder("(");
+ String type;
+ int index;
+ int var_index = (access.indexOf("static") >= 0) ? 0 : 1;
+ try { // Read all declarations between for `(' and `)'
+ if (signature.charAt(0) != '(') {
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ index = 1; // current string position
+ while (signature.charAt(index) != ')') {
+ String param_type = signatureToString(signature.substring(index), chopit);
+ buf.append(param_type);
+ if (vars != null) {
+ LocalVariable l = vars.getLocalVariable(var_index);
+ if (l != null) {
+ buf.append(" ").append(l.getName());
+ }
+ } else {
+ buf.append(" arg").append(var_index);
+ }
+ if ("double".equals(param_type) || "long".equals(param_type)) {
+ var_index += 2;
+ } else {
+ var_index++;
+ }
+ buf.append(", ");
+ //corrected concurrent private static field acess
+ index += unwrap(consumed_chars); // update position
+ }
+ index++; // update position
+ // Read return type after `)'
+ type = signatureToString(signature.substring(index), chopit);
+ } catch (StringIndexOutOfBoundsException e) { // Should never occur
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ if (buf.length() > 1) {
+ buf.setLength(buf.length() - 2);
+ }
+ buf.append(")");
+ return access + ((access.length() > 0) ? " " : "") + // May be an empty string
+ type + " " + name + buf.toString();
+ }
+
+
+ // Guess what this does
+ private static final int pow2( int n ) {
+ return 1 << n;
+ }
+
+
+ /**
+ * Replace all occurences of old in str with new.
+ *
+ * @param str String to permute
+ * @param old String to be replaced
+ * @param new_ Replacement string
+ * @return new String object
+ */
+ public static final String replace( String str, String old, String new_ ) {
+ int index, old_index;
+ StringBuilder buf = new StringBuilder();
+ try {
+ if ((index = str.indexOf(old)) != -1) { // `old' found in str
+ old_index = 0; // String start offset
+ // While we have something to replace
+ while ((index = str.indexOf(old, old_index)) != -1) {
+ buf.append(str.substring(old_index, index)); // append prefix
+ buf.append(new_); // append replacement
+ old_index = index + old.length(); // Skip `old'.length chars
+ }
+ buf.append(str.substring(old_index)); // append rest of string
+ str = buf.toString();
+ }
+ } catch (StringIndexOutOfBoundsException e) { // Should not occur
+ System.err.println(e);
+ }
+ return str;
+ }
+
+
+ /**
+ * Converts signature to string with all class names compacted.
+ *
+ * @param signature to convert
+ * @return Human readable signature
+ */
+ public static final String signatureToString( String signature ) {
+ return signatureToString(signature, true);
+ }
+
+
+ /**
+ * The field signature represents the value of an argument to a function or
+ * the value of a variable. It is a series of bytes generated by the
+ * following grammar:
+ *
+ *
+ * ::=
+ * ::= ||
+ * ::= B|C|D|F|I|J|S|Z
+ * ::= L;
+ * ::= [
+ *
+ * The meaning of the base types is as follows:
+ * B byte signed byte
+ * C char character
+ * D double double precision IEEE float
+ * F float single precision IEEE float
+ * I int integer
+ * J long long integer
+ * L; ... an object of the given class
+ * S short signed short
+ * Z boolean true or false
+ * [ ... array
+ *
+ *
+ * This method converts this string into a Java type declaration such as
+ * `String[]' and throws a `ClassFormatException' when the parsed type is
+ * invalid.
+ *
+ * @param signature Class signature
+ * @param chopit Flag that determines whether chopping is executed or not
+ * @return Java type declaration
+ * @throws ClassFormatException
+ */
+ public static final String signatureToString( String signature, boolean chopit ) {
+ //corrected concurrent private static field acess
+ wrap(consumed_chars, 1); // This is the default, read just one char like `B'
+ try {
+ switch (signature.charAt(0)) {
+ case 'B':
+ return "byte";
+ case 'C':
+ return "char";
+ case 'D':
+ return "double";
+ case 'F':
+ return "float";
+ case 'I':
+ return "int";
+ case 'J':
+ return "long";
+ case 'L': { // Full class name
+ int index = signature.indexOf(';'); // Look for closing `;'
+ if (index < 0) {
+ throw new ClassFormatException("Invalid signature: " + signature);
+ }
+ //corrected concurrent private static field acess
+ wrap(consumed_chars, index + 1); // "Lblabla;" `L' and `;' are removed
+ return compactClassName(signature.substring(1, index), chopit);
+ }
+ case 'S':
+ return "short";
+ case 'Z':
+ return "boolean";
+ case '[': { // Array declaration
+ int n;
+ StringBuilder brackets;
+ String type;
+ int consumed_chars; // Shadows global var
+ brackets = new StringBuilder(); // Accumulate []'s
+ // Count opening brackets and look for optional size argument
+ for (n = 0; signature.charAt(n) == '['; n++) {
+ brackets.append("[]");
+ }
+ consumed_chars = n; // Remember value
+ // The rest of the string denotes a `'
+ type = signatureToString(signature.substring(n), chopit);
+ //corrected concurrent private static field acess
+ //Utility.consumed_chars += consumed_chars; is replaced by:
+ int _temp = unwrap(Utility.consumed_chars) + consumed_chars;
+ wrap(Utility.consumed_chars, _temp);
+ return type + brackets.toString();
+ }
+ case 'V':
+ return "void";
+ default:
+ throw new ClassFormatException("Invalid signature: `" + signature + "'");
+ }
+ } catch (StringIndexOutOfBoundsException e) { // Should never occur
+ throw new ClassFormatException("Invalid signature: " + e + ":" + signature);
+ }
+ }
+
+
+ /** Parse Java type such as "char", or "java.lang.String[]" and return the
+ * signature in byte code format, e.g. "C" or "[Ljava/lang/String;" respectively.
+ *
+ * @param type Java type
+ * @return byte code signature
+ */
+ public static String getSignature( String type ) {
+ StringBuilder buf = new StringBuilder();
+ char[] chars = type.toCharArray();
+ boolean char_found = false, delim = false;
+ int index = -1;
+ loop: for (int i = 0; i < chars.length; i++) {
+ switch (chars[i]) {
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\r':
+ case '\f':
+ if (char_found) {
+ delim = true;
+ }
+ break;
+ case '[':
+ if (!char_found) {
+ throw new RuntimeException("Illegal type: " + type);
+ }
+ index = i;
+ break loop;
+ default:
+ char_found = true;
+ if (!delim) {
+ buf.append(chars[i]);
+ }
+ }
+ }
+ int brackets = 0;
+ if (index > 0) {
+ brackets = countBrackets(type.substring(index));
+ }
+ type = buf.toString();
+ buf.setLength(0);
+ for (int i = 0; i < brackets; i++) {
+ buf.append('[');
+ }
+ boolean found = false;
+ for (int i = Constants.T_BOOLEAN; (i <= Constants.T_VOID) && !found; i++) {
+ if (Constants.TYPE_NAMES[i].equals(type)) {
+ found = true;
+ buf.append(Constants.SHORT_TYPE_NAMES[i]);
+ }
+ }
+ if (!found) {
+ buf.append('L').append(type.replace('.', '/')).append(';');
+ }
+ return buf.toString();
+ }
+
+
+ private static int countBrackets( String brackets ) {
+ char[] chars = brackets.toCharArray();
+ int count = 0;
+ boolean open = false;
+ for (int i = 0; i < chars.length; i++) {
+ switch (chars[i]) {
+ case '[':
+ if (open) {
+ throw new RuntimeException("Illegally nested brackets:" + brackets);
+ }
+ open = true;
+ break;
+ case ']':
+ if (!open) {
+ throw new RuntimeException("Illegally nested brackets:" + brackets);
+ }
+ open = false;
+ count++;
+ break;
+ default:
+ // Don't care
+ }
+ }
+ if (open) {
+ throw new RuntimeException("Illegally nested brackets:" + brackets);
+ }
+ return count;
+ }
+
+
+ /**
+ * Return type of method signature as a byte value as defined in Constants
+ *
+ * @param signature in format described above
+ * @return type of method signature
+ * @see Constants
+ */
+ public static final byte typeOfMethodSignature( String signature ) throws ClassFormatException {
+ int index;
+ try {
+ if (signature.charAt(0) != '(') {
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ index = signature.lastIndexOf(')') + 1;
+ return typeOfSignature(signature.substring(index));
+ } catch (StringIndexOutOfBoundsException e) {
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ }
+
+
+ /**
+ * Return type of signature as a byte value as defined in Constants
+ *
+ * @param signature in format described above
+ * @return type of signature
+ * @see Constants
+ */
+ public static final byte typeOfSignature( String signature ) throws ClassFormatException {
+ try {
+ switch (signature.charAt(0)) {
+ case 'B':
+ return Constants.T_BYTE;
+ case 'C':
+ return Constants.T_CHAR;
+ case 'D':
+ return Constants.T_DOUBLE;
+ case 'F':
+ return Constants.T_FLOAT;
+ case 'I':
+ return Constants.T_INT;
+ case 'J':
+ return Constants.T_LONG;
+ case 'L':
+ return Constants.T_REFERENCE;
+ case '[':
+ return Constants.T_ARRAY;
+ case 'V':
+ return Constants.T_VOID;
+ case 'Z':
+ return Constants.T_BOOLEAN;
+ case 'S':
+ return Constants.T_SHORT;
+ default:
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ } catch (StringIndexOutOfBoundsException e) {
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ }
+
+
+ /** Map opcode names to opcode numbers. E.g., return Constants.ALOAD for "aload"
+ */
+ public static short searchOpcode( String name ) {
+ name = name.toLowerCase(Locale.ENGLISH);
+ for (short i = 0; i < Constants.OPCODE_NAMES.length; i++) {
+ if (Constants.OPCODE_NAMES[i].equals(name)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Convert (signed) byte to (unsigned) short value, i.e., all negative
+ * values become positive.
+ */
+ private static final short byteToShort( byte b ) {
+ return (b < 0) ? (short) (256 + b) : (short) b;
+ }
+
+
+ /** Convert bytes into hexidecimal string
+ *
+ * @return bytes as hexidecimal string, e.g. 00 FA 12 ...
+ */
+ public static final String toHexString( byte[] bytes ) {
+ StringBuilder buf = new StringBuilder();
+ for (int i = 0; i < bytes.length; i++) {
+ short b = byteToShort(bytes[i]);
+ String hex = Integer.toString(b, 0x10);
+ if (b < 0x10) {
+ buf.append('0');
+ }
+ buf.append(hex);
+ if (i < bytes.length - 1) {
+ buf.append(' ');
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * Return a string for an integer justified left or right and filled up with
+ * `fill' characters if necessary.
+ *
+ * @param i integer to format
+ * @param length length of desired string
+ * @param left_justify format left or right
+ * @param fill fill character
+ * @return formatted int
+ */
+ public static final String format( int i, int length, boolean left_justify, char fill ) {
+ return fillup(Integer.toString(i), length, left_justify, fill);
+ }
+
+
+ /**
+ * Fillup char with up to length characters with char `fill' and justify it left or right.
+ *
+ * @param str string to format
+ * @param length length of desired string
+ * @param left_justify format left or right
+ * @param fill fill character
+ * @return formatted string
+ */
+ public static final String fillup( String str, int length, boolean left_justify, char fill ) {
+ int len = length - str.length();
+ char[] buf = new char[(len < 0) ? 0 : len];
+ for (int j = 0; j < buf.length; j++) {
+ buf[j] = fill;
+ }
+ if (left_justify) {
+ return str + new String(buf);
+ }
+ return new String(buf) + str;
+ }
+
+
+ static final boolean equals( byte[] a, byte[] b ) {
+ int size;
+ if ((size = a.length) != b.length) {
+ return false;
+ }
+ for (int i = 0; i < size; i++) {
+ if (a[i] != b[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ public static final void printArray( PrintStream out, Object[] obj ) {
+ out.println(printArray(obj, true));
+ }
+
+
+ public static final void printArray( PrintWriter out, Object[] obj ) {
+ out.println(printArray(obj, true));
+ }
+
+
+ public static final String printArray( Object[] obj ) {
+ return printArray(obj, true);
+ }
+
+
+ public static final String printArray( Object[] obj, boolean braces ) {
+ return printArray(obj, braces, false);
+ }
+
+
+ public static final String printArray( Object[] obj, boolean braces, boolean quote ) {
+ if (obj == null) {
+ return null;
+ }
+ StringBuilder buf = new StringBuilder();
+ if (braces) {
+ buf.append('{');
+ }
+ for (int i = 0; i < obj.length; i++) {
+ if (obj[i] != null) {
+ buf.append((quote ? "\"" : "")).append(obj[i].toString()).append(
+ (quote ? "\"" : ""));
+ } else {
+ buf.append("null");
+ }
+ if (i < obj.length - 1) {
+ buf.append(", ");
+ }
+ }
+ if (braces) {
+ buf.append('}');
+ }
+ return buf.toString();
+ }
+
+
+ /** @return true, if character is one of (a, ... z, A, ... Z, 0, ... 9, _)
+ */
+ public static boolean isJavaIdentifierPart( char ch ) {
+ return ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))
+ || ((ch >= '0') && (ch <= '9')) || (ch == '_');
+ }
+
+
+ /** Encode byte array it into Java identifier string, i.e., a string
+ * that only contains the following characters: (a, ... z, A, ... Z,
+ * 0, ... 9, _, $). The encoding algorithm itself is not too
+ * clever: if the current byte's ASCII value already is a valid Java
+ * identifier part, leave it as it is. Otherwise it writes the
+ * escape character($) followed by - the ASCII value as a
+ * hexadecimal string, if the value is not in the range
+ * 200..247
- a Java identifier char not used in a lowercase
+ * hexadecimal string, if the value is in the range
+ * 200..247
+ *
+ * This operation inflates the original byte array by roughly 40-50%
+ *
+ * @param bytes the byte array to convert
+ * @param compress use gzip to minimize string
+ */
+ public static String encode( byte[] bytes, boolean compress ) throws IOException {
+ if (compress) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ GZIPOutputStream gos = new GZIPOutputStream(baos);
+ gos.write(bytes, 0, bytes.length);
+ gos.close();
+ baos.close();
+ bytes = baos.toByteArray();
+ }
+ CharArrayWriter caw = new CharArrayWriter();
+ JavaWriter jw = new JavaWriter(caw);
+ for (int i = 0; i < bytes.length; i++) {
+ int in = bytes[i] & 0x000000ff; // Normalize to unsigned
+ jw.write(in);
+ }
+ jw.close();
+ return caw.toString();
+ }
+
+
+ /** Decode a string back to a byte array.
+ *
+ * @param s the string to convert
+ * @param uncompress use gzip to uncompress the stream of bytes
+ */
+ public static byte[] decode( String s, boolean uncompress ) throws IOException {
+ char[] chars = s.toCharArray();
+ CharArrayReader car = new CharArrayReader(chars);
+ JavaReader jr = new JavaReader(car);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ int ch;
+ while ((ch = jr.read()) >= 0) {
+ bos.write(ch);
+ }
+ bos.close();
+ car.close();
+ jr.close();
+ byte[] bytes = bos.toByteArray();
+ if (uncompress) {
+ GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(bytes));
+ byte[] tmp = new byte[bytes.length * 3]; // Rough estimate
+ int count = 0;
+ int b;
+ while ((b = gis.read()) >= 0) {
+ tmp[count++] = (byte) b;
+ }
+ bytes = new byte[count];
+ System.arraycopy(tmp, 0, bytes, 0, count);
+ }
+ return bytes;
+ }
+
+ // A-Z, g-z, _, $
+ private static final int FREE_CHARS = 48;
+ static int[] CHAR_MAP = new int[FREE_CHARS];
+ static int[] MAP_CHAR = new int[256]; // Reverse map
+ private static final char ESCAPE_CHAR = '$';
+ static {
+ int j = 0;
+ for (int i = 'A'; i <= 'Z'; i++) {
+ CHAR_MAP[j] = i;
+ MAP_CHAR[i] = j;
+ j++;
+ }
+ for (int i = 'g'; i <= 'z'; i++) {
+ CHAR_MAP[j] = i;
+ MAP_CHAR[i] = j;
+ j++;
+ }
+ CHAR_MAP[j] = '$';
+ MAP_CHAR['$'] = j;
+ j++;
+ CHAR_MAP[j] = '_';
+ MAP_CHAR['_'] = j;
+ }
+
+ /** Decode characters into bytes.
+ * Used by decode()
+ */
+ private static class JavaReader extends FilterReader {
+
+ public JavaReader(Reader in) {
+ super(in);
+ }
+
+
+ public int read() throws IOException {
+ int b = in.read();
+ if (b != ESCAPE_CHAR) {
+ return b;
+ }
+ int i = in.read();
+ if (i < 0) {
+ return -1;
+ }
+ if (((i >= '0') && (i <= '9')) || ((i >= 'a') && (i <= 'f'))) { // Normal escape
+ int j = in.read();
+ if (j < 0) {
+ return -1;
+ }
+ char[] tmp = {
+ (char) i, (char) j
+ };
+ int s = Integer.parseInt(new String(tmp), 16);
+ return s;
+ }
+ return MAP_CHAR[i];
+ }
+
+
+ public int read( char[] cbuf, int off, int len ) throws IOException {
+ for (int i = 0; i < len; i++) {
+ cbuf[off + i] = (char) read();
+ }
+ return len;
+ }
+ }
+
+ /** Encode bytes into valid java identifier characters.
+ * Used by encode()
+ */
+ private static class JavaWriter extends FilterWriter {
+
+ public JavaWriter(Writer out) {
+ super(out);
+ }
+
+
+ public void write( int b ) throws IOException {
+ if (isJavaIdentifierPart((char) b) && (b != ESCAPE_CHAR)) {
+ out.write(b);
+ } else {
+ out.write(ESCAPE_CHAR); // Escape character
+ // Special escape
+ if (b >= 0 && b < FREE_CHARS) {
+ out.write(CHAR_MAP[b]);
+ } else { // Normal escape
+ char[] tmp = Integer.toHexString(b).toCharArray();
+ if (tmp.length == 1) {
+ out.write('0');
+ out.write(tmp[0]);
+ } else {
+ out.write(tmp[0]);
+ out.write(tmp[1]);
+ }
+ }
+ }
+ }
+
+
+ public void write( char[] cbuf, int off, int len ) throws IOException {
+ for (int i = 0; i < len; i++) {
+ write(cbuf[off + i]);
+ }
+ }
+
+
+ public void write( String str, int off, int len ) throws IOException {
+ write(str.toCharArray(), off, len);
+ }
+ }
+
+
+ /**
+ * Escape all occurences of newline chars '\n', quotes \", etc.
+ */
+ public static final String convertString( String label ) {
+ char[] ch = label.toCharArray();
+ StringBuilder buf = new StringBuilder();
+ for (int i = 0; i < ch.length; i++) {
+ switch (ch[i]) {
+ case '\n':
+ buf.append("\\n");
+ break;
+ case '\r':
+ buf.append("\\r");
+ break;
+ case '\"':
+ buf.append("\\\"");
+ break;
+ case '\'':
+ buf.append("\\'");
+ break;
+ case '\\':
+ buf.append("\\\\");
+ break;
+ default:
+ buf.append(ch[i]);
+ break;
+ }
+ }
+ return buf.toString();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Visitor.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Visitor.java
index 39864b90..7bd5f66a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Visitor.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/Visitor.java
@@ -1,127 +1,127 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.classfile;
-
-/**
- * Interface to make use of the Visitor pattern programming style.
- * I.e. a class that implements this interface can traverse the contents of
- * a Java class just by calling the `accept' method which all classes have.
- *
- * @version $Id: Visitor.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface Visitor {
-
- //public void visitAnnotation(Annotations obj);
- //public void visitParameterAnnotation(ParameterAnnotations obj);
- //public void visitAnnotationEntry(AnnotationEntry obj);
- //public void visitAnnotationDefault(AnnotationDefault obj);
- public void visitCode( Code obj );
-
-
- public void visitCodeException( CodeException obj );
-
-
- public void visitConstantClass( ConstantClass obj );
-
-
- public void visitConstantDouble( ConstantDouble obj );
-
-
- public void visitConstantFieldref( ConstantFieldref obj );
-
-
- public void visitConstantFloat( ConstantFloat obj );
-
-
- public void visitConstantInteger( ConstantInteger obj );
-
-
- public void visitConstantInterfaceMethodref( ConstantInterfaceMethodref obj );
-
-
- public void visitConstantLong( ConstantLong obj );
-
-
- public void visitConstantMethodref( ConstantMethodref obj );
-
-
- public void visitConstantNameAndType( ConstantNameAndType obj );
-
-
- public void visitConstantPool( ConstantPool obj );
-
-
- public void visitConstantString( ConstantString obj );
-
-
- public void visitConstantUtf8( ConstantUtf8 obj );
-
-
- public void visitConstantValue( ConstantValue obj );
-
-
- public void visitDeprecated( Deprecated obj );
-
-
- public void visitExceptionTable( ExceptionTable obj );
-
-
- public void visitField( Field obj );
-
-
- public void visitInnerClass( InnerClass obj );
-
-
- public void visitInnerClasses( InnerClasses obj );
-
-
- public void visitJavaClass( JavaClass obj );
-
-
- public void visitLineNumber( LineNumber obj );
-
-
- public void visitLineNumberTable( LineNumberTable obj );
-
-
- public void visitLocalVariable( LocalVariable obj );
-
-
- public void visitLocalVariableTable( LocalVariableTable obj );
-
-
- public void visitMethod( Method obj );
-
-
- public void visitSignature( Signature obj );
-
-
- public void visitSourceFile( SourceFile obj );
-
-
- public void visitSynthetic( Synthetic obj );
-
-
- public void visitUnknown( Unknown obj );
-
-
- public void visitStackMap( StackMap obj );
-
-
- public void visitStackMapEntry( StackMapEntry obj );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.classfile;
+
+/**
+ * Interface to make use of the Visitor pattern programming style.
+ * I.e. a class that implements this interface can traverse the contents of
+ * a Java class just by calling the `accept' method which all classes have.
+ *
+ * @version $Id: Visitor.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface Visitor {
+
+ //public void visitAnnotation(Annotations obj);
+ //public void visitParameterAnnotation(ParameterAnnotations obj);
+ //public void visitAnnotationEntry(AnnotationEntry obj);
+ //public void visitAnnotationDefault(AnnotationDefault obj);
+ public void visitCode( Code obj );
+
+
+ public void visitCodeException( CodeException obj );
+
+
+ public void visitConstantClass( ConstantClass obj );
+
+
+ public void visitConstantDouble( ConstantDouble obj );
+
+
+ public void visitConstantFieldref( ConstantFieldref obj );
+
+
+ public void visitConstantFloat( ConstantFloat obj );
+
+
+ public void visitConstantInteger( ConstantInteger obj );
+
+
+ public void visitConstantInterfaceMethodref( ConstantInterfaceMethodref obj );
+
+
+ public void visitConstantLong( ConstantLong obj );
+
+
+ public void visitConstantMethodref( ConstantMethodref obj );
+
+
+ public void visitConstantNameAndType( ConstantNameAndType obj );
+
+
+ public void visitConstantPool( ConstantPool obj );
+
+
+ public void visitConstantString( ConstantString obj );
+
+
+ public void visitConstantUtf8( ConstantUtf8 obj );
+
+
+ public void visitConstantValue( ConstantValue obj );
+
+
+ public void visitDeprecated( Deprecated obj );
+
+
+ public void visitExceptionTable( ExceptionTable obj );
+
+
+ public void visitField( Field obj );
+
+
+ public void visitInnerClass( InnerClass obj );
+
+
+ public void visitInnerClasses( InnerClasses obj );
+
+
+ public void visitJavaClass( JavaClass obj );
+
+
+ public void visitLineNumber( LineNumber obj );
+
+
+ public void visitLineNumberTable( LineNumberTable obj );
+
+
+ public void visitLocalVariable( LocalVariable obj );
+
+
+ public void visitLocalVariableTable( LocalVariableTable obj );
+
+
+ public void visitMethod( Method obj );
+
+
+ public void visitSignature( Signature obj );
+
+
+ public void visitSourceFile( SourceFile obj );
+
+
+ public void visitSynthetic( Synthetic obj );
+
+
+ public void visitUnknown( Unknown obj );
+
+
+ public void visitStackMap( StackMap obj );
+
+
+ public void visitStackMapEntry( StackMapEntry obj );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/package.html b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/package.html
index 472c3999..de977fd8 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/package.html
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/classfile/package.html
@@ -1,14 +1,14 @@
-
-
-
-
-
-
-
-This package contains the classes that describe the structure of a
-Java class file and a class file parser.
-
-
-
+
+
+
+
+
+
+
+This package contains the classes that describe the structure of a
+Java class file and a class file parser.
+
+
+
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AALOAD.java
index b3634ca9..38034c9a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AALOAD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * AALOAD - Load reference from array
- *
Stack: ..., arrayref, index -> value
- *
- * @version $Id: AALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class AALOAD extends ArrayInstruction implements StackProducer {
-
- /** Load reference from array
- */
- public AALOAD() {
- super(org.apache.bcel5_2_0.Constants.AALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitAALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * AALOAD - Load reference from array
+ * Stack: ..., arrayref, index -> value
+ *
+ * @version $Id: AALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class AALOAD extends ArrayInstruction implements StackProducer {
+
+ /** Load reference from array
+ */
+ public AALOAD() {
+ super(org.apache.bcel5_2_0.Constants.AALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitAALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AASTORE.java
index b2acbb05..498fcb81 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AASTORE.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * AASTORE - Store into reference array
- * Stack: ..., arrayref, index, value -> ...
- *
- * @version $Id: AASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class AASTORE extends ArrayInstruction implements StackConsumer {
-
- /** Store into reference array
- */
- public AASTORE() {
- super(org.apache.bcel5_2_0.Constants.AASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitAASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * AASTORE - Store into reference array
+ * Stack: ..., arrayref, index, value -> ...
+ *
+ * @version $Id: AASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class AASTORE extends ArrayInstruction implements StackConsumer {
+
+ /** Store into reference array
+ */
+ public AASTORE() {
+ super(org.apache.bcel5_2_0.Constants.AASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitAASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ACONST_NULL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ACONST_NULL.java
index eff64a88..ca9cf3ff 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ACONST_NULL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ACONST_NULL.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ACONST_NULL - Push null reference
- * Stack: ... -> ..., null
- *
- * @version $Id: ACONST_NULL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ACONST_NULL extends Instruction implements PushInstruction, TypedInstruction {
-
- /**
- * Push null reference
- */
- public ACONST_NULL() {
- super(org.apache.bcel5_2_0.Constants.ACONST_NULL, (short) 1);
- }
-
-
- /** @return Type.NULL
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.NULL;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitPushInstruction(this);
- v.visitTypedInstruction(this);
- v.visitACONST_NULL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ACONST_NULL - Push null reference
+ * Stack: ... -> ..., null
+ *
+ * @version $Id: ACONST_NULL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ACONST_NULL extends Instruction implements PushInstruction, TypedInstruction {
+
+ /**
+ * Push null reference
+ */
+ public ACONST_NULL() {
+ super(org.apache.bcel5_2_0.Constants.ACONST_NULL, (short) 1);
+ }
+
+
+ /** @return Type.NULL
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.NULL;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitPushInstruction(this);
+ v.visitTypedInstruction(this);
+ v.visitACONST_NULL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ALOAD.java
index ac937127..42d5ca6b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ALOAD.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ALOAD - Load reference from local variable
- * Stack: ... -> ..., objectref
- *
- * @version $Id: ALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ALOAD extends LoadInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ALOAD() {
- super(org.apache.bcel5_2_0.Constants.ALOAD, org.apache.bcel5_2_0.Constants.ALOAD_0);
- }
-
-
- /** Load reference from local variable
- * @param n index of local variable
- */
- public ALOAD(int n) {
- super(org.apache.bcel5_2_0.Constants.ALOAD, org.apache.bcel5_2_0.Constants.ALOAD_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ALOAD - Load reference from local variable
+ * Stack: ... -> ..., objectref
+ *
+ * @version $Id: ALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ALOAD extends LoadInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ALOAD() {
+ super(org.apache.bcel5_2_0.Constants.ALOAD, org.apache.bcel5_2_0.Constants.ALOAD_0);
+ }
+
+
+ /** Load reference from local variable
+ * @param n index of local variable
+ */
+ public ALOAD(int n) {
+ super(org.apache.bcel5_2_0.Constants.ALOAD, org.apache.bcel5_2_0.Constants.ALOAD_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ANEWARRAY.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ANEWARRAY.java
index 12701b68..6430ce11 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ANEWARRAY.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ANEWARRAY.java
@@ -1,79 +1,79 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * ANEWARRAY - Create new array of references
- * Stack: ..., count -> ..., arrayref
- *
- * @version $Id: ANEWARRAY.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ANEWARRAY extends CPInstruction implements LoadClass, AllocationInstruction,
- ExceptionThrower, StackConsumer, StackProducer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ANEWARRAY() {
- }
-
-
- public ANEWARRAY(int index) {
- super(org.apache.bcel5_2_0.Constants.ANEWARRAY, index);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[1 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.NEGATIVE_ARRAY_SIZE_EXCEPTION;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLoadClass(this);
- v.visitAllocationInstruction(this);
- v.visitExceptionThrower(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitCPInstruction(this);
- v.visitANEWARRAY(this);
- }
-
-
- public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
- Type t = getType(cpg);
- if (t instanceof ArrayType) {
- t = ((ArrayType) t).getBasicType();
- }
- return (t instanceof ObjectType) ? (ObjectType) t : null;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * ANEWARRAY - Create new array of references
+ * Stack: ..., count -> ..., arrayref
+ *
+ * @version $Id: ANEWARRAY.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ANEWARRAY extends CPInstruction implements LoadClass, AllocationInstruction,
+ ExceptionThrower, StackConsumer, StackProducer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ANEWARRAY() {
+ }
+
+
+ public ANEWARRAY(int index) {
+ super(org.apache.bcel5_2_0.Constants.ANEWARRAY, index);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[1 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.NEGATIVE_ARRAY_SIZE_EXCEPTION;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLoadClass(this);
+ v.visitAllocationInstruction(this);
+ v.visitExceptionThrower(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitCPInstruction(this);
+ v.visitANEWARRAY(this);
+ }
+
+
+ public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
+ Type t = getType(cpg);
+ if (t instanceof ArrayType) {
+ t = ((ArrayType) t).getBasicType();
+ }
+ return (t instanceof ObjectType) ? (ObjectType) t : null;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARETURN.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARETURN.java
index a7d69069..59f56e9d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARETURN.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARETURN.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ARETURN - Return reference from method
- * Stack: ..., objectref -> <empty>
- *
- * @version $Id: ARETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ARETURN extends ReturnInstruction {
-
- /**
- * Return reference from method
- */
- public ARETURN() {
- super(org.apache.bcel5_2_0.Constants.ARETURN);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitReturnInstruction(this);
- v.visitARETURN(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ARETURN - Return reference from method
+ * Stack: ..., objectref -> <empty>
+ *
+ * @version $Id: ARETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ARETURN extends ReturnInstruction {
+
+ /**
+ * Return reference from method
+ */
+ public ARETURN() {
+ super(org.apache.bcel5_2_0.Constants.ARETURN);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitReturnInstruction(this);
+ v.visitARETURN(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARRAYLENGTH.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARRAYLENGTH.java
index e1dbd474..6844ac26 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARRAYLENGTH.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ARRAYLENGTH.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ARRAYLENGTH - Get length of array
- * Stack: ..., arrayref -> ..., length
- *
- * @version $Id: ARRAYLENGTH.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ARRAYLENGTH extends Instruction implements ExceptionThrower, StackProducer {
-
- /** Get length of array
- */
- public ARRAYLENGTH() {
- super(org.apache.bcel5_2_0.Constants.ARRAYLENGTH, (short) 1);
- }
-
-
- /** @return exceptions this instruction may cause
- */
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.NULL_POINTER_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitStackProducer(this);
- v.visitARRAYLENGTH(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ARRAYLENGTH - Get length of array
+ * Stack: ..., arrayref -> ..., length
+ *
+ * @version $Id: ARRAYLENGTH.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ARRAYLENGTH extends Instruction implements ExceptionThrower, StackProducer {
+
+ /** Get length of array
+ */
+ public ARRAYLENGTH() {
+ super(org.apache.bcel5_2_0.Constants.ARRAYLENGTH, (short) 1);
+ }
+
+
+ /** @return exceptions this instruction may cause
+ */
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.NULL_POINTER_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitStackProducer(this);
+ v.visitARRAYLENGTH(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ASTORE.java
index ded7e342..237d2430 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ASTORE.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ASTORE - Store reference into local variable
- * Stack ..., objectref -> ...
- *
- * @version $Id: ASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ASTORE extends StoreInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ASTORE() {
- super(org.apache.bcel5_2_0.Constants.ASTORE, org.apache.bcel5_2_0.Constants.ASTORE_0);
- }
-
-
- /** Store reference into local variable
- * @param n index of local variable
- */
- public ASTORE(int n) {
- super(org.apache.bcel5_2_0.Constants.ASTORE, org.apache.bcel5_2_0.Constants.ASTORE_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ASTORE - Store reference into local variable
+ * Stack ..., objectref -> ...
+ *
+ * @version $Id: ASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ASTORE extends StoreInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ASTORE() {
+ super(org.apache.bcel5_2_0.Constants.ASTORE, org.apache.bcel5_2_0.Constants.ASTORE_0);
+ }
+
+
+ /** Store reference into local variable
+ * @param n index of local variable
+ */
+ public ASTORE(int n) {
+ super(org.apache.bcel5_2_0.Constants.ASTORE, org.apache.bcel5_2_0.Constants.ASTORE_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ATHROW.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ATHROW.java
index 4f42f6d7..e719ccac 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ATHROW.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ATHROW.java
@@ -1,58 +1,58 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ATHROW - Throw exception
- * Stack: ..., objectref -> objectref
- *
- * @version $Id: ATHROW.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ATHROW extends Instruction implements UnconditionalBranch, ExceptionThrower {
-
- /**
- * Throw exception
- */
- public ATHROW() {
- super(org.apache.bcel5_2_0.Constants.ATHROW, (short) 1);
- }
-
-
- /** @return exceptions this instruction may cause
- */
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.THROWABLE
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitUnconditionalBranch(this);
- v.visitExceptionThrower(this);
- v.visitATHROW(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ATHROW - Throw exception
+ * Stack: ..., objectref -> objectref
+ *
+ * @version $Id: ATHROW.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ATHROW extends Instruction implements UnconditionalBranch, ExceptionThrower {
+
+ /**
+ * Throw exception
+ */
+ public ATHROW() {
+ super(org.apache.bcel5_2_0.Constants.ATHROW, (short) 1);
+ }
+
+
+ /** @return exceptions this instruction may cause
+ */
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.THROWABLE
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitUnconditionalBranch(this);
+ v.visitExceptionThrower(this);
+ v.visitATHROW(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AllocationInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AllocationInstruction.java
index 15ef7d69..2cde49e4 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AllocationInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/AllocationInstruction.java
@@ -1,26 +1,26 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denote family of instructions that allocates space in the heap.
- *
- * @version $Id: AllocationInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface AllocationInstruction {
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denote family of instructions that allocates space in the heap.
+ *
+ * @version $Id: AllocationInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface AllocationInstruction {
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArithmeticInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArithmeticInstruction.java
index 834117ad..ae56568a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArithmeticInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArithmeticInstruction.java
@@ -1,94 +1,94 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Super class for the family of arithmetic instructions.
- *
- * @version $Id: ArithmeticInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class ArithmeticInstruction extends Instruction implements TypedInstruction,
- StackProducer, StackConsumer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ArithmeticInstruction() {
- }
-
-
- /**
- * @param opcode of instruction
- */
- protected ArithmeticInstruction(short opcode) {
- super(opcode, (short) 1);
- }
-
-
- /** @return type associated with the instruction
- */
- public Type getType( ConstantPoolGen cp ) {
- switch (opcode) {
- case Constants.DADD:
- case Constants.DDIV:
- case Constants.DMUL:
- case Constants.DNEG:
- case Constants.DREM:
- case Constants.DSUB:
- return Type.DOUBLE;
- case Constants.FADD:
- case Constants.FDIV:
- case Constants.FMUL:
- case Constants.FNEG:
- case Constants.FREM:
- case Constants.FSUB:
- return Type.FLOAT;
- case Constants.IADD:
- case Constants.IAND:
- case Constants.IDIV:
- case Constants.IMUL:
- case Constants.INEG:
- case Constants.IOR:
- case Constants.IREM:
- case Constants.ISHL:
- case Constants.ISHR:
- case Constants.ISUB:
- case Constants.IUSHR:
- case Constants.IXOR:
- return Type.INT;
- case Constants.LADD:
- case Constants.LAND:
- case Constants.LDIV:
- case Constants.LMUL:
- case Constants.LNEG:
- case Constants.LOR:
- case Constants.LREM:
- case Constants.LSHL:
- case Constants.LSHR:
- case Constants.LSUB:
- case Constants.LUSHR:
- case Constants.LXOR:
- return Type.LONG;
- default: // Never reached
- throw new ClassGenException("Unknown type " + opcode);
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Super class for the family of arithmetic instructions.
+ *
+ * @version $Id: ArithmeticInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class ArithmeticInstruction extends Instruction implements TypedInstruction,
+ StackProducer, StackConsumer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ArithmeticInstruction() {
+ }
+
+
+ /**
+ * @param opcode of instruction
+ */
+ protected ArithmeticInstruction(short opcode) {
+ super(opcode, (short) 1);
+ }
+
+
+ /** @return type associated with the instruction
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ switch (opcode) {
+ case Constants.DADD:
+ case Constants.DDIV:
+ case Constants.DMUL:
+ case Constants.DNEG:
+ case Constants.DREM:
+ case Constants.DSUB:
+ return Type.DOUBLE;
+ case Constants.FADD:
+ case Constants.FDIV:
+ case Constants.FMUL:
+ case Constants.FNEG:
+ case Constants.FREM:
+ case Constants.FSUB:
+ return Type.FLOAT;
+ case Constants.IADD:
+ case Constants.IAND:
+ case Constants.IDIV:
+ case Constants.IMUL:
+ case Constants.INEG:
+ case Constants.IOR:
+ case Constants.IREM:
+ case Constants.ISHL:
+ case Constants.ISHR:
+ case Constants.ISUB:
+ case Constants.IUSHR:
+ case Constants.IXOR:
+ return Type.INT;
+ case Constants.LADD:
+ case Constants.LAND:
+ case Constants.LDIV:
+ case Constants.LMUL:
+ case Constants.LNEG:
+ case Constants.LOR:
+ case Constants.LREM:
+ case Constants.LSHL:
+ case Constants.LSHR:
+ case Constants.LSUB:
+ case Constants.LUSHR:
+ case Constants.LXOR:
+ return Type.LONG;
+ default: // Never reached
+ throw new ClassGenException("Unknown type " + opcode);
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayInstruction.java
index f43aeb6f..2f5bed14 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayInstruction.java
@@ -1,81 +1,81 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Super class for instructions dealing with array access such as IALOAD.
- *
- * @version $Id: ArrayInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class ArrayInstruction extends Instruction implements ExceptionThrower,
- TypedInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ArrayInstruction() {
- }
-
-
- /**
- * @param opcode of instruction
- */
- protected ArrayInstruction(short opcode) {
- super(opcode, (short) 1);
- }
-
-
- public Class[] getExceptions() {
- return org.apache.bcel5_2_0.ExceptionConstants.EXCS_ARRAY_EXCEPTION;
- }
-
-
- /** @return type associated with the instruction
- */
- public Type getType( ConstantPoolGen cp ) {
- switch (opcode) {
- case org.apache.bcel5_2_0.Constants.IALOAD:
- case org.apache.bcel5_2_0.Constants.IASTORE:
- return Type.INT;
- case org.apache.bcel5_2_0.Constants.CALOAD:
- case org.apache.bcel5_2_0.Constants.CASTORE:
- return Type.CHAR;
- case org.apache.bcel5_2_0.Constants.BALOAD:
- case org.apache.bcel5_2_0.Constants.BASTORE:
- return Type.BYTE;
- case org.apache.bcel5_2_0.Constants.SALOAD:
- case org.apache.bcel5_2_0.Constants.SASTORE:
- return Type.SHORT;
- case org.apache.bcel5_2_0.Constants.LALOAD:
- case org.apache.bcel5_2_0.Constants.LASTORE:
- return Type.LONG;
- case org.apache.bcel5_2_0.Constants.DALOAD:
- case org.apache.bcel5_2_0.Constants.DASTORE:
- return Type.DOUBLE;
- case org.apache.bcel5_2_0.Constants.FALOAD:
- case org.apache.bcel5_2_0.Constants.FASTORE:
- return Type.FLOAT;
- case org.apache.bcel5_2_0.Constants.AALOAD:
- case org.apache.bcel5_2_0.Constants.AASTORE:
- return Type.OBJECT;
- default:
- throw new ClassGenException("Oops: unknown case in switch" + opcode);
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Super class for instructions dealing with array access such as IALOAD.
+ *
+ * @version $Id: ArrayInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class ArrayInstruction extends Instruction implements ExceptionThrower,
+ TypedInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ArrayInstruction() {
+ }
+
+
+ /**
+ * @param opcode of instruction
+ */
+ protected ArrayInstruction(short opcode) {
+ super(opcode, (short) 1);
+ }
+
+
+ public Class[] getExceptions() {
+ return org.apache.bcel5_2_0.ExceptionConstants.EXCS_ARRAY_EXCEPTION;
+ }
+
+
+ /** @return type associated with the instruction
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ switch (opcode) {
+ case org.apache.bcel5_2_0.Constants.IALOAD:
+ case org.apache.bcel5_2_0.Constants.IASTORE:
+ return Type.INT;
+ case org.apache.bcel5_2_0.Constants.CALOAD:
+ case org.apache.bcel5_2_0.Constants.CASTORE:
+ return Type.CHAR;
+ case org.apache.bcel5_2_0.Constants.BALOAD:
+ case org.apache.bcel5_2_0.Constants.BASTORE:
+ return Type.BYTE;
+ case org.apache.bcel5_2_0.Constants.SALOAD:
+ case org.apache.bcel5_2_0.Constants.SASTORE:
+ return Type.SHORT;
+ case org.apache.bcel5_2_0.Constants.LALOAD:
+ case org.apache.bcel5_2_0.Constants.LASTORE:
+ return Type.LONG;
+ case org.apache.bcel5_2_0.Constants.DALOAD:
+ case org.apache.bcel5_2_0.Constants.DASTORE:
+ return Type.DOUBLE;
+ case org.apache.bcel5_2_0.Constants.FALOAD:
+ case org.apache.bcel5_2_0.Constants.FASTORE:
+ return Type.FLOAT;
+ case org.apache.bcel5_2_0.Constants.AALOAD:
+ case org.apache.bcel5_2_0.Constants.AASTORE:
+ return Type.OBJECT;
+ default:
+ throw new ClassGenException("Oops: unknown case in switch" + opcode);
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayType.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayType.java
index f368a3d1..7f44248c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayType.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ArrayType.java
@@ -1,127 +1,127 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Denotes array type, such as int[][]
- *
- * @version $Id: ArrayType.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class ArrayType extends ReferenceType {
-
- private int dimensions;
- private Type basic_type;
-
-
- /**
- * Convenience constructor for array type, e.g. int[]
- *
- * @param type array type, e.g. T_INT
- */
- public ArrayType(byte type, int dimensions) {
- this(BasicType.getType(type), dimensions);
- }
-
-
- /**
- * Convenience constructor for reference array type, e.g. Object[]
- *
- * @param class_name complete name of class (java.lang.String, e.g.)
- */
- public ArrayType(String class_name, int dimensions) {
- this(new ObjectType(class_name), dimensions);
- }
-
-
- /**
- * Constructor for array of given type
- *
- * @param type type of array (may be an array itself)
- */
- public ArrayType(Type type, int dimensions) {
- super(Constants.T_ARRAY, "");
- if ((dimensions < 1) || (dimensions > Constants.MAX_BYTE)) {
- throw new ClassGenException("Invalid number of dimensions: " + dimensions);
- }
- switch (type.getType()) {
- case Constants.T_ARRAY:
- ArrayType array = (ArrayType) type;
- this.dimensions = dimensions + array.dimensions;
- basic_type = array.basic_type;
- break;
- case Constants.T_VOID:
- throw new ClassGenException("Invalid type: void[]");
- default: // Basic type or reference
- this.dimensions = dimensions;
- basic_type = type;
- break;
- }
- StringBuilder buf = new StringBuilder();
- for (int i = 0; i < this.dimensions; i++) {
- buf.append('[');
- }
- buf.append(basic_type.getSignature());
- signature = buf.toString();
- }
-
-
- /**
- * @return basic type of array, i.e., for int[][][] the basic type is int
- */
- public Type getBasicType() {
- return basic_type;
- }
-
-
- /**
- * @return element type of array, i.e., for int[][][] the element type is int[][]
- */
- public Type getElementType() {
- if (dimensions == 1) {
- return basic_type;
- }
- return new ArrayType(basic_type, dimensions - 1);
- }
-
-
- /** @return number of dimensions of array
- */
- public int getDimensions() {
- return dimensions;
- }
-
-
- /** @return a hash code value for the object.
- */
- public int hashCode() {
- return basic_type.hashCode() ^ dimensions;
- }
-
-
- /** @return true if both type objects refer to the same array type.
- */
- public boolean equals( Object _type ) {
- if (_type instanceof ArrayType) {
- ArrayType array = (ArrayType) _type;
- return (array.dimensions == dimensions) && array.basic_type.equals(basic_type);
- }
- return false;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Denotes array type, such as int[][]
+ *
+ * @version $Id: ArrayType.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class ArrayType extends ReferenceType {
+
+ private int dimensions;
+ private Type basic_type;
+
+
+ /**
+ * Convenience constructor for array type, e.g. int[]
+ *
+ * @param type array type, e.g. T_INT
+ */
+ public ArrayType(byte type, int dimensions) {
+ this(BasicType.getType(type), dimensions);
+ }
+
+
+ /**
+ * Convenience constructor for reference array type, e.g. Object[]
+ *
+ * @param class_name complete name of class (java.lang.String, e.g.)
+ */
+ public ArrayType(String class_name, int dimensions) {
+ this(new ObjectType(class_name), dimensions);
+ }
+
+
+ /**
+ * Constructor for array of given type
+ *
+ * @param type type of array (may be an array itself)
+ */
+ public ArrayType(Type type, int dimensions) {
+ super(Constants.T_ARRAY, "");
+ if ((dimensions < 1) || (dimensions > Constants.MAX_BYTE)) {
+ throw new ClassGenException("Invalid number of dimensions: " + dimensions);
+ }
+ switch (type.getType()) {
+ case Constants.T_ARRAY:
+ ArrayType array = (ArrayType) type;
+ this.dimensions = dimensions + array.dimensions;
+ basic_type = array.basic_type;
+ break;
+ case Constants.T_VOID:
+ throw new ClassGenException("Invalid type: void[]");
+ default: // Basic type or reference
+ this.dimensions = dimensions;
+ basic_type = type;
+ break;
+ }
+ StringBuilder buf = new StringBuilder();
+ for (int i = 0; i < this.dimensions; i++) {
+ buf.append('[');
+ }
+ buf.append(basic_type.getSignature());
+ signature = buf.toString();
+ }
+
+
+ /**
+ * @return basic type of array, i.e., for int[][][] the basic type is int
+ */
+ public Type getBasicType() {
+ return basic_type;
+ }
+
+
+ /**
+ * @return element type of array, i.e., for int[][][] the element type is int[][]
+ */
+ public Type getElementType() {
+ if (dimensions == 1) {
+ return basic_type;
+ }
+ return new ArrayType(basic_type, dimensions - 1);
+ }
+
+
+ /** @return number of dimensions of array
+ */
+ public int getDimensions() {
+ return dimensions;
+ }
+
+
+ /** @return a hash code value for the object.
+ */
+ public int hashCode() {
+ return basic_type.hashCode() ^ dimensions;
+ }
+
+
+ /** @return true if both type objects refer to the same array type.
+ */
+ public boolean equals( Object _type ) {
+ if (_type instanceof ArrayType) {
+ ArrayType array = (ArrayType) _type;
+ return (array.dimensions == dimensions) && array.basic_type.equals(basic_type);
+ }
+ return false;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BALOAD.java
index 7bc9c794..3a8b1f4c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BALOAD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * BALOAD - Load byte or boolean from array
- * Stack: ..., arrayref, index -> ..., value
- *
- * @version $Id: BALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class BALOAD extends ArrayInstruction implements StackProducer {
-
- /** Load byte or boolean from array
- */
- public BALOAD() {
- super(org.apache.bcel5_2_0.Constants.BALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitBALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * BALOAD - Load byte or boolean from array
+ * Stack: ..., arrayref, index -> ..., value
+ *
+ * @version $Id: BALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class BALOAD extends ArrayInstruction implements StackProducer {
+
+ /** Load byte or boolean from array
+ */
+ public BALOAD() {
+ super(org.apache.bcel5_2_0.Constants.BALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitBALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BASTORE.java
index 0e42aac7..17c1a60c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BASTORE.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * BASTORE - Store into byte or boolean array
- * Stack: ..., arrayref, index, value -> ...
- *
- * @version $Id: BASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class BASTORE extends ArrayInstruction implements StackConsumer {
-
- /** Store byte or boolean into array
- */
- public BASTORE() {
- super(org.apache.bcel5_2_0.Constants.BASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitBASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * BASTORE - Store into byte or boolean array
+ * Stack: ..., arrayref, index, value -> ...
+ *
+ * @version $Id: BASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class BASTORE extends ArrayInstruction implements StackConsumer {
+
+ /** Store byte or boolean into array
+ */
+ public BASTORE() {
+ super(org.apache.bcel5_2_0.Constants.BASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitBASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BIPUSH.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BIPUSH.java
index a3f18f35..ca38d794 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BIPUSH.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BIPUSH.java
@@ -1,106 +1,106 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * BIPUSH - Push byte on stack
- *
- * Stack: ... -> ..., value
- *
- * @version $Id: BIPUSH.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class BIPUSH extends Instruction implements ConstantPushInstruction {
-
- private byte b;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- BIPUSH() {
- }
-
-
- /** Push byte on stack
- */
- public BIPUSH(byte b) {
- super(org.apache.bcel5_2_0.Constants.BIPUSH, (short) 2);
- this.b = b;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- */
- public void dump( DataOutputStream out ) throws IOException {
- super.dump(out);
- out.writeByte(b);
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- return super.toString(verbose) + " " + b;
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- length = 2;
- b = bytes.readByte();
- }
-
-
- public Number getValue() {
- return new Integer(b);
- }
-
-
- /** @return Type.BYTE
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.BYTE;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitPushInstruction(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitConstantPushInstruction(this);
- v.visitBIPUSH(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * BIPUSH - Push byte on stack
+ *
+ * Stack: ... -> ..., value
+ *
+ * @version $Id: BIPUSH.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class BIPUSH extends Instruction implements ConstantPushInstruction {
+
+ private byte b;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ BIPUSH() {
+ }
+
+
+ /** Push byte on stack
+ */
+ public BIPUSH(byte b) {
+ super(org.apache.bcel5_2_0.Constants.BIPUSH, (short) 2);
+ this.b = b;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ super.dump(out);
+ out.writeByte(b);
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ return super.toString(verbose) + " " + b;
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ length = 2;
+ b = bytes.readByte();
+ }
+
+
+ public Number getValue() {
+ return new Integer(b);
+ }
+
+
+ /** @return Type.BYTE
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.BYTE;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitPushInstruction(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitConstantPushInstruction(this);
+ v.visitBIPUSH(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BREAKPOINT.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BREAKPOINT.java
index 4029192f..39c567fa 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BREAKPOINT.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BREAKPOINT.java
@@ -1,43 +1,43 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * BREAKPOINT, JVM dependent, ignored by default
- *
- * @version $Id: BREAKPOINT.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class BREAKPOINT extends Instruction {
-
- public BREAKPOINT() {
- super(org.apache.bcel5_2_0.Constants.BREAKPOINT, (short) 1);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitBREAKPOINT(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * BREAKPOINT, JVM dependent, ignored by default
+ *
+ * @version $Id: BREAKPOINT.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class BREAKPOINT extends Instruction {
+
+ public BREAKPOINT() {
+ super(org.apache.bcel5_2_0.Constants.BREAKPOINT, (short) 1);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitBREAKPOINT(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BasicType.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BasicType.java
index 8869f455..a43541ac 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BasicType.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BasicType.java
@@ -1,81 +1,81 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Denotes basic type such as int.
- *
- * @version $Id: BasicType.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class BasicType extends Type {
-
- /**
- * Constructor for basic types such as int, long, `void'
- *
- * @param type one of T_INT, T_BOOLEAN, ..., T_VOID
- * @see org.apache.bcel5_2_0.Constants
- */
- BasicType(byte type) {
- super(type, Constants.SHORT_TYPE_NAMES[type]);
- if ((type < Constants.T_BOOLEAN) || (type > Constants.T_VOID)) {
- throw new ClassGenException("Invalid type: " + type);
- }
- }
-
-
- public static final BasicType getType( byte type ) {
- switch (type) {
- case Constants.T_VOID:
- return VOID;
- case Constants.T_BOOLEAN:
- return BOOLEAN;
- case Constants.T_BYTE:
- return BYTE;
- case Constants.T_SHORT:
- return SHORT;
- case Constants.T_CHAR:
- return CHAR;
- case Constants.T_INT:
- return INT;
- case Constants.T_LONG:
- return LONG;
- case Constants.T_DOUBLE:
- return DOUBLE;
- case Constants.T_FLOAT:
- return FLOAT;
- default:
- throw new ClassGenException("Invalid type: " + type);
- }
- }
-
-
- /** @return a hash code value for the object.
- */
- public int hashCode() {
- return type;
- }
-
-
- /** @return true if both type objects refer to the same type
- */
- public boolean equals( Object _type ) {
- return (_type instanceof BasicType) ? ((BasicType) _type).type == this.type : false;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Denotes basic type such as int.
+ *
+ * @version $Id: BasicType.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class BasicType extends Type {
+
+ /**
+ * Constructor for basic types such as int, long, `void'
+ *
+ * @param type one of T_INT, T_BOOLEAN, ..., T_VOID
+ * @see org.apache.bcel5_2_0.Constants
+ */
+ BasicType(byte type) {
+ super(type, Constants.SHORT_TYPE_NAMES[type]);
+ if ((type < Constants.T_BOOLEAN) || (type > Constants.T_VOID)) {
+ throw new ClassGenException("Invalid type: " + type);
+ }
+ }
+
+
+ public static final BasicType getType( byte type ) {
+ switch (type) {
+ case Constants.T_VOID:
+ return VOID;
+ case Constants.T_BOOLEAN:
+ return BOOLEAN;
+ case Constants.T_BYTE:
+ return BYTE;
+ case Constants.T_SHORT:
+ return SHORT;
+ case Constants.T_CHAR:
+ return CHAR;
+ case Constants.T_INT:
+ return INT;
+ case Constants.T_LONG:
+ return LONG;
+ case Constants.T_DOUBLE:
+ return DOUBLE;
+ case Constants.T_FLOAT:
+ return FLOAT;
+ default:
+ throw new ClassGenException("Invalid type: " + type);
+ }
+ }
+
+
+ /** @return a hash code value for the object.
+ */
+ public int hashCode() {
+ return type;
+ }
+
+
+ /** @return true if both type objects refer to the same type
+ */
+ public boolean equals( Object _type ) {
+ return (_type instanceof BasicType) ? ((BasicType) _type).type == this.type : false;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchHandle.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchHandle.java
index 04e4de55..75cc67b9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchHandle.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchHandle.java
@@ -1,121 +1,121 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * BranchHandle is returned by specialized InstructionList.append() whenever a
- * BranchInstruction is appended. This is useful when the target of this
- * instruction is not known at time of creation and must be set later
- * via setTarget().
- *
- * @see InstructionHandle
- * @see Instruction
- * @see InstructionList
- * @version $Id: BranchHandle.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class BranchHandle extends InstructionHandle {
-
- private BranchInstruction bi; // An alias in fact, but saves lots of casts
-
-
- private BranchHandle(BranchInstruction i) {
- super(i);
- bi = i;
- }
-
- /** Factory methods.
- */
- private static BranchHandle bh_list = null; // List of reusable handles
-
-
- static final BranchHandle getBranchHandle( BranchInstruction i ) {
- if (bh_list == null) {
- return new BranchHandle(i);
- }
- BranchHandle bh = bh_list;
- bh_list = (BranchHandle) bh.next;
- bh.setInstruction(i);
- return bh;
- }
-
-
- /** Handle adds itself to the list of resuable handles.
- */
- protected void addHandle() {
- next = bh_list;
- bh_list = this;
- }
-
-
- /* Override InstructionHandle methods: delegate to branch instruction.
- * Through this overriding all access to the private i_position field should
- * be prevented.
- */
- public int getPosition() {
- return bi.position;
- }
-
-
- void setPosition( int pos ) {
- i_position = bi.position = pos;
- }
-
-
- protected int updatePosition( int offset, int max_offset ) {
- int x = bi.updatePosition(offset, max_offset);
- i_position = bi.position;
- return x;
- }
-
-
- /**
- * Pass new target to instruction.
- */
- public void setTarget( InstructionHandle ih ) {
- bi.setTarget(ih);
- }
-
-
- /**
- * Update target of instruction.
- */
- public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
- bi.updateTarget(old_ih, new_ih);
- }
-
-
- /**
- * @return target of instruction.
- */
- public InstructionHandle getTarget() {
- return bi.getTarget();
- }
-
-
- /**
- * Set new contents. Old instruction is disposed and may not be used anymore.
- */
- public void setInstruction( Instruction i ) {
- super.setInstruction(i);
- if (!(i instanceof BranchInstruction)) {
- throw new ClassGenException("Assigning " + i
- + " to branch handle which is not a branch instruction");
- }
- bi = (BranchInstruction) i;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * BranchHandle is returned by specialized InstructionList.append() whenever a
+ * BranchInstruction is appended. This is useful when the target of this
+ * instruction is not known at time of creation and must be set later
+ * via setTarget().
+ *
+ * @see InstructionHandle
+ * @see Instruction
+ * @see InstructionList
+ * @version $Id: BranchHandle.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class BranchHandle extends InstructionHandle {
+
+ private BranchInstruction bi; // An alias in fact, but saves lots of casts
+
+
+ private BranchHandle(BranchInstruction i) {
+ super(i);
+ bi = i;
+ }
+
+ /** Factory methods.
+ */
+ private static BranchHandle bh_list = null; // List of reusable handles
+
+
+ static final BranchHandle getBranchHandle( BranchInstruction i ) {
+ if (bh_list == null) {
+ return new BranchHandle(i);
+ }
+ BranchHandle bh = bh_list;
+ bh_list = (BranchHandle) bh.next;
+ bh.setInstruction(i);
+ return bh;
+ }
+
+
+ /** Handle adds itself to the list of resuable handles.
+ */
+ protected void addHandle() {
+ next = bh_list;
+ bh_list = this;
+ }
+
+
+ /* Override InstructionHandle methods: delegate to branch instruction.
+ * Through this overriding all access to the private i_position field should
+ * be prevented.
+ */
+ public int getPosition() {
+ return bi.position;
+ }
+
+
+ void setPosition( int pos ) {
+ i_position = bi.position = pos;
+ }
+
+
+ protected int updatePosition( int offset, int max_offset ) {
+ int x = bi.updatePosition(offset, max_offset);
+ i_position = bi.position;
+ return x;
+ }
+
+
+ /**
+ * Pass new target to instruction.
+ */
+ public void setTarget( InstructionHandle ih ) {
+ bi.setTarget(ih);
+ }
+
+
+ /**
+ * Update target of instruction.
+ */
+ public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
+ bi.updateTarget(old_ih, new_ih);
+ }
+
+
+ /**
+ * @return target of instruction.
+ */
+ public InstructionHandle getTarget() {
+ return bi.getTarget();
+ }
+
+
+ /**
+ * Set new contents. Old instruction is disposed and may not be used anymore.
+ */
+ public void setInstruction( Instruction i ) {
+ super.setInstruction(i);
+ if (!(i instanceof BranchInstruction)) {
+ throw new ClassGenException("Assigning " + i
+ + " to branch handle which is not a branch instruction");
+ }
+ bi = (BranchInstruction) i;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchInstruction.java
index 2da2ac4c..2bac9663 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/BranchInstruction.java
@@ -1,231 +1,231 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * Abstract super class for branching instructions like GOTO, IFEQ, etc..
- * Branch instructions may have a variable length, namely GOTO, JSR,
- * LOOKUPSWITCH and TABLESWITCH.
- *
- * @see InstructionList
- * @version $Id: BranchInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class BranchInstruction extends Instruction implements InstructionTargeter {
-
- protected int index; // Branch target relative to this instruction
- protected InstructionHandle target; // Target object in instruction list
- protected int position; // Byte code offset
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- BranchInstruction() {
- }
-
-
- /** Common super constructor
- * @param opcode Instruction opcode
- * @param target instruction to branch to
- */
- protected BranchInstruction(short opcode, InstructionHandle target) {
- super(opcode, (short) 3);
- setTarget(target);
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode);
- index = getTargetOffset();
- if (Math.abs(index) >= 32767) {
- throw new ClassGenException("Branch target offset too large for short");
- }
- out.writeShort(index); // May be negative, i.e., point backwards
- }
-
-
- /**
- * @param _target branch target
- * @return the offset to `target' relative to this instruction
- */
- protected int getTargetOffset( InstructionHandle _target ) {
- if (_target == null) {
- throw new ClassGenException("Target of " + super.toString(true)
- + " is invalid null handle");
- }
- int t = _target.getPosition();
- if (t < 0) {
- throw new ClassGenException("Invalid branch target position offset for "
- + super.toString(true) + ":" + t + ":" + _target);
- }
- return t - position;
- }
-
-
- /**
- * @return the offset to this instruction's target
- */
- protected int getTargetOffset() {
- return getTargetOffset(target);
- }
-
-
- /**
- * Called by InstructionList.setPositions when setting the position for every
- * instruction. In the presence of variable length instructions `setPositions'
- * performs multiple passes over the instruction list to calculate the
- * correct (byte) positions and offsets by calling this function.
- *
- * @param offset additional offset caused by preceding (variable length) instructions
- * @param max_offset the maximum offset that may be caused by these instructions
- * @return additional offset caused by possible change of this instruction's length
- */
- protected int updatePosition( int offset, int max_offset ) {
- position += offset;
- return 0;
- }
-
-
- /**
- * Long output format:
- *
- * <position in byte code>
- * <name of opcode> "["<opcode number>"]"
- * "("<length of instruction>")"
- * "<"<target instruction>">" "@"<branch target offset>
- *
- * @param verbose long/short format switch
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- String s = super.toString(verbose);
- String t = "null";
- if (verbose) {
- if (target != null) {
- if (target.getInstruction() == this) {
- t = "";
- } else if (target.getInstruction() == null) {
- t = "";
- } else {
- t = target.getInstruction().toString(false); // Avoid circles
- }
- }
- } else {
- if (target != null) {
- index = getTargetOffset();
- t = "" + (index + position);
- }
- }
- return s + " -> " + t;
- }
-
-
- /**
- * Read needed data (e.g. index) from file. Conversion to a InstructionHandle
- * is done in InstructionList(byte[]).
- *
- * @param bytes input stream
- * @param wide wide prefix?
- * @see InstructionList
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- length = 3;
- index = bytes.readShort();
- }
-
-
- /**
- * @return target offset in byte code
- */
- public final int getIndex() {
- return index;
- }
-
-
- /**
- * @return target of branch instruction
- */
- public InstructionHandle getTarget() {
- return target;
- }
-
-
- /**
- * Set branch target
- * @param target branch target
- */
- public void setTarget( InstructionHandle target ) {
- notifyTarget(this.target, target, this);
- this.target = target;
- }
-
-
- /**
- * Used by BranchInstruction, LocalVariableGen, CodeExceptionGen
- */
- static final void notifyTarget( InstructionHandle old_ih, InstructionHandle new_ih,
- InstructionTargeter t ) {
- if (old_ih != null) {
- old_ih.removeTargeter(t);
- }
- if (new_ih != null) {
- new_ih.addTargeter(t);
- }
- }
-
-
- /**
- * @param old_ih old target
- * @param new_ih new target
- */
- public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
- if (target == old_ih) {
- setTarget(new_ih);
- } else {
- throw new ClassGenException("Not targeting " + old_ih + ", but " + target);
- }
- }
-
-
- /**
- * @return true, if ih is target of this instruction
- */
- public boolean containsTarget( InstructionHandle ih ) {
- return (target == ih);
- }
-
-
- /**
- * Inform target that it's not targeted anymore.
- */
- void dispose() {
- setTarget(null);
- index = -1;
- position = -1;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * Abstract super class for branching instructions like GOTO, IFEQ, etc..
+ * Branch instructions may have a variable length, namely GOTO, JSR,
+ * LOOKUPSWITCH and TABLESWITCH.
+ *
+ * @see InstructionList
+ * @version $Id: BranchInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class BranchInstruction extends Instruction implements InstructionTargeter {
+
+ protected int index; // Branch target relative to this instruction
+ protected InstructionHandle target; // Target object in instruction list
+ protected int position; // Byte code offset
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ BranchInstruction() {
+ }
+
+
+ /** Common super constructor
+ * @param opcode Instruction opcode
+ * @param target instruction to branch to
+ */
+ protected BranchInstruction(short opcode, InstructionHandle target) {
+ super(opcode, (short) 3);
+ setTarget(target);
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode);
+ index = getTargetOffset();
+ if (Math.abs(index) >= 32767) {
+ throw new ClassGenException("Branch target offset too large for short");
+ }
+ out.writeShort(index); // May be negative, i.e., point backwards
+ }
+
+
+ /**
+ * @param _target branch target
+ * @return the offset to `target' relative to this instruction
+ */
+ protected int getTargetOffset( InstructionHandle _target ) {
+ if (_target == null) {
+ throw new ClassGenException("Target of " + super.toString(true)
+ + " is invalid null handle");
+ }
+ int t = _target.getPosition();
+ if (t < 0) {
+ throw new ClassGenException("Invalid branch target position offset for "
+ + super.toString(true) + ":" + t + ":" + _target);
+ }
+ return t - position;
+ }
+
+
+ /**
+ * @return the offset to this instruction's target
+ */
+ protected int getTargetOffset() {
+ return getTargetOffset(target);
+ }
+
+
+ /**
+ * Called by InstructionList.setPositions when setting the position for every
+ * instruction. In the presence of variable length instructions `setPositions'
+ * performs multiple passes over the instruction list to calculate the
+ * correct (byte) positions and offsets by calling this function.
+ *
+ * @param offset additional offset caused by preceding (variable length) instructions
+ * @param max_offset the maximum offset that may be caused by these instructions
+ * @return additional offset caused by possible change of this instruction's length
+ */
+ protected int updatePosition( int offset, int max_offset ) {
+ position += offset;
+ return 0;
+ }
+
+
+ /**
+ * Long output format:
+ *
+ * <position in byte code>
+ * <name of opcode> "["<opcode number>"]"
+ * "("<length of instruction>")"
+ * "<"<target instruction>">" "@"<branch target offset>
+ *
+ * @param verbose long/short format switch
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ String s = super.toString(verbose);
+ String t = "null";
+ if (verbose) {
+ if (target != null) {
+ if (target.getInstruction() == this) {
+ t = "";
+ } else if (target.getInstruction() == null) {
+ t = "";
+ } else {
+ t = target.getInstruction().toString(false); // Avoid circles
+ }
+ }
+ } else {
+ if (target != null) {
+ index = getTargetOffset();
+ t = "" + (index + position);
+ }
+ }
+ return s + " -> " + t;
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file. Conversion to a InstructionHandle
+ * is done in InstructionList(byte[]).
+ *
+ * @param bytes input stream
+ * @param wide wide prefix?
+ * @see InstructionList
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ length = 3;
+ index = bytes.readShort();
+ }
+
+
+ /**
+ * @return target offset in byte code
+ */
+ public final int getIndex() {
+ return index;
+ }
+
+
+ /**
+ * @return target of branch instruction
+ */
+ public InstructionHandle getTarget() {
+ return target;
+ }
+
+
+ /**
+ * Set branch target
+ * @param target branch target
+ */
+ public void setTarget( InstructionHandle target ) {
+ notifyTarget(this.target, target, this);
+ this.target = target;
+ }
+
+
+ /**
+ * Used by BranchInstruction, LocalVariableGen, CodeExceptionGen
+ */
+ static final void notifyTarget( InstructionHandle old_ih, InstructionHandle new_ih,
+ InstructionTargeter t ) {
+ if (old_ih != null) {
+ old_ih.removeTargeter(t);
+ }
+ if (new_ih != null) {
+ new_ih.addTargeter(t);
+ }
+ }
+
+
+ /**
+ * @param old_ih old target
+ * @param new_ih new target
+ */
+ public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
+ if (target == old_ih) {
+ setTarget(new_ih);
+ } else {
+ throw new ClassGenException("Not targeting " + old_ih + ", but " + target);
+ }
+ }
+
+
+ /**
+ * @return true, if ih is target of this instruction
+ */
+ public boolean containsTarget( InstructionHandle ih ) {
+ return (target == ih);
+ }
+
+
+ /**
+ * Inform target that it's not targeted anymore.
+ */
+ void dispose() {
+ setTarget(null);
+ index = -1;
+ position = -1;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CALOAD.java
index c9b9cc7b..d23c135e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CALOAD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * CALOAD - Load char from array
- * Stack: ..., arrayref, index -> ..., value
- *
- * @version $Id: CALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class CALOAD extends ArrayInstruction implements StackProducer {
-
- /** Load char from array
- */
- public CALOAD() {
- super(org.apache.bcel5_2_0.Constants.CALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitCALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * CALOAD - Load char from array
+ * Stack: ..., arrayref, index -> ..., value
+ *
+ * @version $Id: CALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class CALOAD extends ArrayInstruction implements StackProducer {
+
+ /** Load char from array
+ */
+ public CALOAD() {
+ super(org.apache.bcel5_2_0.Constants.CALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitCALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CASTORE.java
index 4713588f..7e327535 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CASTORE.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * CASTORE - Store into char array
- * Stack: ..., arrayref, index, value -> ...
- *
- * @version $Id: CASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class CASTORE extends ArrayInstruction implements StackConsumer {
-
- /** Store char into array
- */
- public CASTORE() {
- super(org.apache.bcel5_2_0.Constants.CASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitCASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * CASTORE - Store into char array
+ * Stack: ..., arrayref, index, value -> ...
+ *
+ * @version $Id: CASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class CASTORE extends ArrayInstruction implements StackConsumer {
+
+ /** Store char into array
+ */
+ public CASTORE() {
+ super(org.apache.bcel5_2_0.Constants.CASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitCASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CHECKCAST.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CHECKCAST.java
index bc2983ee..108a224b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CHECKCAST.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CHECKCAST.java
@@ -1,84 +1,84 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * CHECKCAST - Check whether object is of given type
- * Stack: ..., objectref -> ..., objectref
- *
- * @version $Id: CHECKCAST.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class CHECKCAST extends CPInstruction implements LoadClass, ExceptionThrower, StackProducer,
- StackConsumer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- CHECKCAST() {
- }
-
-
- /** Check whether object is of given type
- * @param index index to class in constant pool
- */
- public CHECKCAST(int index) {
- super(org.apache.bcel5_2_0.Constants.CHECKCAST, index);
- }
-
-
- /** @return exceptions this instruction may cause
- */
- public Class[] getExceptions() {
- Class[] cs = new Class[1 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.CLASS_CAST_EXCEPTION;
- return cs;
- }
-
-
- public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
- Type t = getType(cpg);
- if (t instanceof ArrayType) {
- t = ((ArrayType) t).getBasicType();
- }
- return (t instanceof ObjectType) ? (ObjectType) t : null;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLoadClass(this);
- v.visitExceptionThrower(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitTypedInstruction(this);
- v.visitCPInstruction(this);
- v.visitCHECKCAST(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * CHECKCAST - Check whether object is of given type
+ * Stack: ..., objectref -> ..., objectref
+ *
+ * @version $Id: CHECKCAST.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class CHECKCAST extends CPInstruction implements LoadClass, ExceptionThrower, StackProducer,
+ StackConsumer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ CHECKCAST() {
+ }
+
+
+ /** Check whether object is of given type
+ * @param index index to class in constant pool
+ */
+ public CHECKCAST(int index) {
+ super(org.apache.bcel5_2_0.Constants.CHECKCAST, index);
+ }
+
+
+ /** @return exceptions this instruction may cause
+ */
+ public Class[] getExceptions() {
+ Class[] cs = new Class[1 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.CLASS_CAST_EXCEPTION;
+ return cs;
+ }
+
+
+ public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
+ Type t = getType(cpg);
+ if (t instanceof ArrayType) {
+ t = ((ArrayType) t).getBasicType();
+ }
+ return (t instanceof ObjectType) ? (ObjectType) t : null;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLoadClass(this);
+ v.visitExceptionThrower(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitTypedInstruction(this);
+ v.visitCPInstruction(this);
+ v.visitCHECKCAST(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CPInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CPInstruction.java
index e70a27e9..15f8047d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CPInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CPInstruction.java
@@ -1,139 +1,139 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.classfile.Constant;
-import org.apache.bcel5_2_0.classfile.ConstantClass;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * Abstract super class for instructions that use an index into the
- * constant pool such as LDC, INVOKEVIRTUAL, etc.
- *
- * @see ConstantPoolGen
- * @see LDC
- * @see INVOKEVIRTUAL
- *
- * @version $Id: CPInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class CPInstruction extends Instruction implements TypedInstruction,
- IndexedInstruction {
-
- protected int index; // index to constant pool
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- CPInstruction() {
- }
-
-
- /**
- * @param index to constant pool
- */
- protected CPInstruction(short opcode, int index) {
- super(opcode, (short) 3);
- setIndex(index);
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode);
- out.writeShort(index);
- }
-
-
- /**
- * Long output format:
- *
- * <name of opcode> "["<opcode number>"]"
- * "("<length of instruction>")" "<"< constant pool index>">"
- *
- * @param verbose long/short format switch
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- return super.toString(verbose) + " " + index;
- }
-
-
- /**
- * @return mnemonic for instruction with symbolic references resolved
- */
- public String toString( ConstantPool cp ) {
- Constant c = cp.getConstant(index);
- String str = cp.constantToString(c);
- if (c instanceof ConstantClass) {
- str = str.replace('.', '/');
- }
- return org.apache.bcel5_2_0.Constants.OPCODE_NAMES[opcode] + " " + str;
- }
-
-
- /**
- * Read needed data (i.e., index) from file.
- * @param bytes input stream
- * @param wide wide prefix?
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- setIndex(bytes.readUnsignedShort());
- length = 3;
- }
-
-
- /**
- * @return index in constant pool referred by this instruction.
- */
- public final int getIndex() {
- return index;
- }
-
-
- /**
- * Set the index to constant pool.
- * @param index in constant pool.
- */
- public void setIndex( int index ) {
- if (index < 0) {
- throw new ClassGenException("Negative index value: " + index);
- }
- this.index = index;
- }
-
-
- /** @return type related with this instruction.
- */
- public Type getType( ConstantPoolGen cpg ) {
- ConstantPool cp = cpg.getConstantPool();
- String name = cp.getConstantString(index, org.apache.bcel5_2_0.Constants.CONSTANT_Class);
- if (!name.startsWith("[")) {
- name = "L" + name + ";";
- }
- return Type.getType(name);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.classfile.Constant;
+import org.apache.bcel5_2_0.classfile.ConstantClass;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * Abstract super class for instructions that use an index into the
+ * constant pool such as LDC, INVOKEVIRTUAL, etc.
+ *
+ * @see ConstantPoolGen
+ * @see LDC
+ * @see INVOKEVIRTUAL
+ *
+ * @version $Id: CPInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class CPInstruction extends Instruction implements TypedInstruction,
+ IndexedInstruction {
+
+ protected int index; // index to constant pool
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ CPInstruction() {
+ }
+
+
+ /**
+ * @param index to constant pool
+ */
+ protected CPInstruction(short opcode, int index) {
+ super(opcode, (short) 3);
+ setIndex(index);
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode);
+ out.writeShort(index);
+ }
+
+
+ /**
+ * Long output format:
+ *
+ * <name of opcode> "["<opcode number>"]"
+ * "("<length of instruction>")" "<"< constant pool index>">"
+ *
+ * @param verbose long/short format switch
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ return super.toString(verbose) + " " + index;
+ }
+
+
+ /**
+ * @return mnemonic for instruction with symbolic references resolved
+ */
+ public String toString( ConstantPool cp ) {
+ Constant c = cp.getConstant(index);
+ String str = cp.constantToString(c);
+ if (c instanceof ConstantClass) {
+ str = str.replace('.', '/');
+ }
+ return org.apache.bcel5_2_0.Constants.OPCODE_NAMES[opcode] + " " + str;
+ }
+
+
+ /**
+ * Read needed data (i.e., index) from file.
+ * @param bytes input stream
+ * @param wide wide prefix?
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ setIndex(bytes.readUnsignedShort());
+ length = 3;
+ }
+
+
+ /**
+ * @return index in constant pool referred by this instruction.
+ */
+ public final int getIndex() {
+ return index;
+ }
+
+
+ /**
+ * Set the index to constant pool.
+ * @param index in constant pool.
+ */
+ public void setIndex( int index ) {
+ if (index < 0) {
+ throw new ClassGenException("Negative index value: " + index);
+ }
+ this.index = index;
+ }
+
+
+ /** @return type related with this instruction.
+ */
+ public Type getType( ConstantPoolGen cpg ) {
+ ConstantPool cp = cpg.getConstantPool();
+ String name = cp.getConstantString(index, org.apache.bcel5_2_0.Constants.CONSTANT_Class);
+ if (!name.startsWith("[")) {
+ name = "L" + name + ";";
+ }
+ return Type.getType(name);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGen.java
index 803be1cd..5c7f404c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGen.java
@@ -1,542 +1,542 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.AccessFlags;
-import org.apache.bcel5_2_0.classfile.Attribute;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.Field;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-import org.apache.bcel5_2_0.classfile.Method;
-import org.apache.bcel5_2_0.classfile.SourceFile;
-import org.apache.bcel5_2_0.util.BCELComparator;
-
-/**
- * Template class for building up a java class. May be initialized with an
- * existing java class (file).
- *
- * @see JavaClass
- * @version $Id: ClassGen.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ClassGen extends AccessFlags implements Cloneable {
-
- /* Corresponds to the fields found in a JavaClass object.
- */
- private String class_name, super_class_name, file_name;
- private int class_name_index = -1, superclass_name_index = -1;
- private int major = Constants.MAJOR_1_1, minor = Constants.MINOR_1_1;
- private ConstantPoolGen cp; // Template for building up constant pool
- // ArrayLists instead of arrays to gather fields, methods, etc.
- private List field_vec = new ArrayList();
- private List method_vec = new ArrayList();
- private List attribute_vec = new ArrayList();
- private List interface_vec = new ArrayList();
- private static BCELComparator _cmp = new BCELComparator() {
-
- public boolean equals( Object o1, Object o2 ) {
- ClassGen THIS = (ClassGen) o1;
- ClassGen THAT = (ClassGen) o2;
- return THIS.getClassName().equals(THAT.getClassName());
- }
-
-
- public int hashCode( Object o ) {
- ClassGen THIS = (ClassGen) o;
- return THIS.getClassName().hashCode();
- }
- };
-
-
- /** Convenience constructor to set up some important values initially.
- *
- * @param class_name fully qualified class name
- * @param super_class_name fully qualified superclass name
- * @param file_name source file name
- * @param access_flags access qualifiers
- * @param interfaces implemented interfaces
- * @param cp constant pool to use
- */
- public ClassGen(String class_name, String super_class_name, String file_name, int access_flags,
- String[] interfaces, ConstantPoolGen cp) {
- this.class_name = class_name;
- this.super_class_name = super_class_name;
- this.file_name = file_name;
- this.access_flags = access_flags;
- this.cp = cp;
- // Put everything needed by default into the constant pool and the vectors
- if (file_name != null) {
- addAttribute(new SourceFile(cp.addUtf8("SourceFile"), 2, cp.addUtf8(file_name), cp
- .getConstantPool()));
- }
- class_name_index = cp.addClass(class_name);
- superclass_name_index = cp.addClass(super_class_name);
- if (interfaces != null) {
- for (int i = 0; i < interfaces.length; i++) {
- addInterface(interfaces[i]);
- }
- }
- }
-
-
- /** Convenience constructor to set up some important values initially.
- *
- * @param class_name fully qualified class name
- * @param super_class_name fully qualified superclass name
- * @param file_name source file name
- * @param access_flags access qualifiers
- * @param interfaces implemented interfaces
- */
- public ClassGen(String class_name, String super_class_name, String file_name, int access_flags,
- String[] interfaces) {
- this(class_name, super_class_name, file_name, access_flags, interfaces,
- new ConstantPoolGen());
- }
-
-
- /**
- * Initialize with existing class.
- * @param clazz JavaClass object (e.g. read from file)
- */
- public ClassGen(JavaClass clazz) {
- class_name_index = clazz.getClassNameIndex();
- superclass_name_index = clazz.getSuperclassNameIndex();
- class_name = clazz.getClassName();
- super_class_name = clazz.getSuperclassName();
- file_name = clazz.getSourceFileName();
- access_flags = clazz.getAccessFlags();
- cp = new ConstantPoolGen(clazz.getConstantPool());
- major = clazz.getMajor();
- minor = clazz.getMinor();
- Attribute[] attributes = clazz.getAttributes();
- Method[] methods = clazz.getMethods();
- Field[] fields = clazz.getFields();
- String[] interfaces = clazz.getInterfaceNames();
- for (int i = 0; i < interfaces.length; i++) {
- addInterface(interfaces[i]);
- }
- for (int i = 0; i < attributes.length; i++) {
- addAttribute(attributes[i]);
- }
- for (int i = 0; i < methods.length; i++) {
- addMethod(methods[i]);
- }
- for (int i = 0; i < fields.length; i++) {
- addField(fields[i]);
- }
- }
-
-
- /**
- * @return the (finally) built up Java class object.
- */
- public JavaClass getJavaClass() {
- int[] interfaces = getInterfaces();
- Field[] fields = getFields();
- Method[] methods = getMethods();
- Attribute[] attributes = getAttributes();
- // Must be last since the above calls may still add something to it
- ConstantPool _cp = this.cp.getFinalConstantPool();
- return new JavaClass(class_name_index, superclass_name_index, file_name, major, minor,
- access_flags, _cp, interfaces, fields, methods, attributes);
- }
-
-
- /**
- * Add an interface to this class, i.e., this class has to implement it.
- * @param name interface to implement (fully qualified class name)
- */
- public void addInterface( String name ) {
- interface_vec.add(name);
- }
-
-
- /**
- * Remove an interface from this class.
- * @param name interface to remove (fully qualified name)
- */
- public void removeInterface( String name ) {
- interface_vec.remove(name);
- }
-
-
- /**
- * @return major version number of class file
- */
- public int getMajor() {
- return major;
- }
-
-
- /** Set major version number of class file, default value is 45 (JDK 1.1)
- * @param major major version number
- */
- public void setMajor( int major ) {
- this.major = major;
- }
-
-
- /** Set minor version number of class file, default value is 3 (JDK 1.1)
- * @param minor minor version number
- */
- public void setMinor( int minor ) {
- this.minor = minor;
- }
-
-
- /**
- * @return minor version number of class file
- */
- public int getMinor() {
- return minor;
- }
-
-
- /**
- * Add an attribute to this class.
- * @param a attribute to add
- */
- public void addAttribute( Attribute a ) {
- attribute_vec.add(a);
- }
-
-
- /**
- * Add a method to this class.
- * @param m method to add
- */
- public void addMethod( Method m ) {
- method_vec.add(m);
- }
-
-
- /**
- * Convenience method.
- *
- * Add an empty constructor to this class that does nothing but calling super().
- * @param access_flags rights for constructor
- */
- public void addEmptyConstructor( int access_flags ) {
- InstructionList il = new InstructionList();
- il.append(InstructionConstants.THIS); // Push `this'
- il.append(new INVOKESPECIAL(cp.addMethodref(super_class_name, "", "()V")));
- il.append(InstructionConstants.RETURN);
- MethodGen mg = new MethodGen(access_flags, Type.VOID, Type.NO_ARGS, null, "",
- class_name, il, cp);
- mg.setMaxStack(1);
- addMethod(mg.getMethod());
- }
-
-
- /**
- * Add a field to this class.
- * @param f field to add
- */
- public void addField( Field f ) {
- field_vec.add(f);
- }
-
-
- public boolean containsField( Field f ) {
- return field_vec.contains(f);
- }
-
-
- /** @return field object with given name, or null
- */
- public Field containsField( String name ) {
- for (Iterator e = field_vec.iterator(); e.hasNext();) {
- Field f = (Field) e.next();
- if (f.getName().equals(name)) {
- return f;
- }
- }
- return null;
- }
-
-
- /** @return method object with given name and signature, or null
- */
- public Method containsMethod( String name, String signature ) {
- for (Iterator e = method_vec.iterator(); e.hasNext();) {
- Method m = (Method) e.next();
- if (m.getName().equals(name) && m.getSignature().equals(signature)) {
- return m;
- }
- }
- return null;
- }
-
-
- /**
- * Remove an attribute from this class.
- * @param a attribute to remove
- */
- public void removeAttribute( Attribute a ) {
- attribute_vec.remove(a);
- }
-
-
- /**
- * Remove a method from this class.
- * @param m method to remove
- */
- public void removeMethod( Method m ) {
- method_vec.remove(m);
- }
-
-
- /** Replace given method with new one. If the old one does not exist
- * add the new_ method to the class anyway.
- */
- public void replaceMethod( Method old, Method new_ ) {
- if (new_ == null) {
- throw new ClassGenException("Replacement method must not be null");
- }
- int i = method_vec.indexOf(old);
- if (i < 0) {
- method_vec.add(new_);
- } else {
- method_vec.set(i, new_);
- }
- }
-
-
- /** Replace given field with new one. If the old one does not exist
- * add the new_ field to the class anyway.
- */
- public void replaceField( Field old, Field new_ ) {
- if (new_ == null) {
- throw new ClassGenException("Replacement method must not be null");
- }
- int i = field_vec.indexOf(old);
- if (i < 0) {
- field_vec.add(new_);
- } else {
- field_vec.set(i, new_);
- }
- }
-
-
- /**
- * Remove a field to this class.
- * @param f field to remove
- */
- public void removeField( Field f ) {
- field_vec.remove(f);
- }
-
-
- public String getClassName() {
- return class_name;
- }
-
-
- public String getSuperclassName() {
- return super_class_name;
- }
-
-
- public String getFileName() {
- return file_name;
- }
-
-
- public void setClassName( String name ) {
- class_name = name.replace('/', '.');
- class_name_index = cp.addClass(name);
- }
-
-
- public void setSuperclassName( String name ) {
- super_class_name = name.replace('/', '.');
- superclass_name_index = cp.addClass(name);
- }
-
-
- public Method[] getMethods() {
- return (Method[]) method_vec.toArray(new Method[method_vec.size()]);
- }
-
-
- public void setMethods( Method[] methods ) {
- method_vec.clear();
- for (int m = 0; m < methods.length; m++) {
- addMethod(methods[m]);
- }
- }
-
-
- public void setMethodAt( Method method, int pos ) {
- method_vec.set(pos, method);
- }
-
-
- public Method getMethodAt( int pos ) {
- return (Method) method_vec.get(pos);
- }
-
-
- public String[] getInterfaceNames() {
- int size = interface_vec.size();
- String[] interfaces = new String[size];
- interface_vec.toArray(interfaces);
- return interfaces;
- }
-
-
- public int[] getInterfaces() {
- int size = interface_vec.size();
- int[] interfaces = new int[size];
- for (int i = 0; i < size; i++) {
- interfaces[i] = cp.addClass((String) interface_vec.get(i));
- }
- return interfaces;
- }
-
-
- public Field[] getFields() {
- return (Field[]) field_vec.toArray(new Field[field_vec.size()]);
- }
-
-
- public Attribute[] getAttributes() {
- return (Attribute[]) attribute_vec.toArray(new Attribute[attribute_vec.size()]);
- }
-
-
- public ConstantPoolGen getConstantPool() {
- return cp;
- }
-
-
- public void setConstantPool( ConstantPoolGen constant_pool ) {
- cp = constant_pool;
- }
-
-
- public void setClassNameIndex( int class_name_index ) {
- this.class_name_index = class_name_index;
- class_name = cp.getConstantPool().getConstantString(class_name_index,
- Constants.CONSTANT_Class).replace('/', '.');
- }
-
-
- public void setSuperclassNameIndex( int superclass_name_index ) {
- this.superclass_name_index = superclass_name_index;
- super_class_name = cp.getConstantPool().getConstantString(superclass_name_index,
- Constants.CONSTANT_Class).replace('/', '.');
- }
-
-
- public int getSuperclassNameIndex() {
- return superclass_name_index;
- }
-
-
- public int getClassNameIndex() {
- return class_name_index;
- }
-
- private ArrayList observers;
-
-
- /** Add observer for this object.
- */
- public void addObserver( ClassObserver o ) {
- if (observers == null) {
- observers = new ArrayList();
- }
- observers.add(o);
- }
-
-
- /** Remove observer for this object.
- */
- public void removeObserver( ClassObserver o ) {
- if (observers != null) {
- observers.remove(o);
- }
- }
-
-
- /** Call notify() method on all observers. This method is not called
- * automatically whenever the state has changed, but has to be
- * called by the user after he has finished editing the object.
- */
- public void update() {
- if (observers != null) {
- for (Iterator e = observers.iterator(); e.hasNext();) {
- ((ClassObserver) e.next()).notify(this);
- }
- }
- }
-
-
- public Object clone() {
- try {
- return super.clone();
- } catch (CloneNotSupportedException e) {
- System.err.println(e);
- return null;
- }
- }
-
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator( BCELComparator comparator ) {
- _cmp = comparator;
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two ClassGen objects are said to be equal when
- * their class names are equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals( Object obj ) {
- return _cmp.equals(this, obj);
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the class name.
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.AccessFlags;
+import org.apache.bcel5_2_0.classfile.Attribute;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.Field;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+import org.apache.bcel5_2_0.classfile.Method;
+import org.apache.bcel5_2_0.classfile.SourceFile;
+import org.apache.bcel5_2_0.util.BCELComparator;
+
+/**
+ * Template class for building up a java class. May be initialized with an
+ * existing java class (file).
+ *
+ * @see JavaClass
+ * @version $Id: ClassGen.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ClassGen extends AccessFlags implements Cloneable {
+
+ /* Corresponds to the fields found in a JavaClass object.
+ */
+ private String class_name, super_class_name, file_name;
+ private int class_name_index = -1, superclass_name_index = -1;
+ private int major = Constants.MAJOR_1_1, minor = Constants.MINOR_1_1;
+ private ConstantPoolGen cp; // Template for building up constant pool
+ // ArrayLists instead of arrays to gather fields, methods, etc.
+ private List field_vec = new ArrayList();
+ private List method_vec = new ArrayList();
+ private List attribute_vec = new ArrayList();
+ private List interface_vec = new ArrayList();
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ ClassGen THIS = (ClassGen) o1;
+ ClassGen THAT = (ClassGen) o2;
+ return THIS.getClassName().equals(THAT.getClassName());
+ }
+
+
+ public int hashCode( Object o ) {
+ ClassGen THIS = (ClassGen) o;
+ return THIS.getClassName().hashCode();
+ }
+ };
+
+
+ /** Convenience constructor to set up some important values initially.
+ *
+ * @param class_name fully qualified class name
+ * @param super_class_name fully qualified superclass name
+ * @param file_name source file name
+ * @param access_flags access qualifiers
+ * @param interfaces implemented interfaces
+ * @param cp constant pool to use
+ */
+ public ClassGen(String class_name, String super_class_name, String file_name, int access_flags,
+ String[] interfaces, ConstantPoolGen cp) {
+ this.class_name = class_name;
+ this.super_class_name = super_class_name;
+ this.file_name = file_name;
+ this.access_flags = access_flags;
+ this.cp = cp;
+ // Put everything needed by default into the constant pool and the vectors
+ if (file_name != null) {
+ addAttribute(new SourceFile(cp.addUtf8("SourceFile"), 2, cp.addUtf8(file_name), cp
+ .getConstantPool()));
+ }
+ class_name_index = cp.addClass(class_name);
+ superclass_name_index = cp.addClass(super_class_name);
+ if (interfaces != null) {
+ for (int i = 0; i < interfaces.length; i++) {
+ addInterface(interfaces[i]);
+ }
+ }
+ }
+
+
+ /** Convenience constructor to set up some important values initially.
+ *
+ * @param class_name fully qualified class name
+ * @param super_class_name fully qualified superclass name
+ * @param file_name source file name
+ * @param access_flags access qualifiers
+ * @param interfaces implemented interfaces
+ */
+ public ClassGen(String class_name, String super_class_name, String file_name, int access_flags,
+ String[] interfaces) {
+ this(class_name, super_class_name, file_name, access_flags, interfaces,
+ new ConstantPoolGen());
+ }
+
+
+ /**
+ * Initialize with existing class.
+ * @param clazz JavaClass object (e.g. read from file)
+ */
+ public ClassGen(JavaClass clazz) {
+ class_name_index = clazz.getClassNameIndex();
+ superclass_name_index = clazz.getSuperclassNameIndex();
+ class_name = clazz.getClassName();
+ super_class_name = clazz.getSuperclassName();
+ file_name = clazz.getSourceFileName();
+ access_flags = clazz.getAccessFlags();
+ cp = new ConstantPoolGen(clazz.getConstantPool());
+ major = clazz.getMajor();
+ minor = clazz.getMinor();
+ Attribute[] attributes = clazz.getAttributes();
+ Method[] methods = clazz.getMethods();
+ Field[] fields = clazz.getFields();
+ String[] interfaces = clazz.getInterfaceNames();
+ for (int i = 0; i < interfaces.length; i++) {
+ addInterface(interfaces[i]);
+ }
+ for (int i = 0; i < attributes.length; i++) {
+ addAttribute(attributes[i]);
+ }
+ for (int i = 0; i < methods.length; i++) {
+ addMethod(methods[i]);
+ }
+ for (int i = 0; i < fields.length; i++) {
+ addField(fields[i]);
+ }
+ }
+
+
+ /**
+ * @return the (finally) built up Java class object.
+ */
+ public JavaClass getJavaClass() {
+ int[] interfaces = getInterfaces();
+ Field[] fields = getFields();
+ Method[] methods = getMethods();
+ Attribute[] attributes = getAttributes();
+ // Must be last since the above calls may still add something to it
+ ConstantPool _cp = this.cp.getFinalConstantPool();
+ return new JavaClass(class_name_index, superclass_name_index, file_name, major, minor,
+ access_flags, _cp, interfaces, fields, methods, attributes);
+ }
+
+
+ /**
+ * Add an interface to this class, i.e., this class has to implement it.
+ * @param name interface to implement (fully qualified class name)
+ */
+ public void addInterface( String name ) {
+ interface_vec.add(name);
+ }
+
+
+ /**
+ * Remove an interface from this class.
+ * @param name interface to remove (fully qualified name)
+ */
+ public void removeInterface( String name ) {
+ interface_vec.remove(name);
+ }
+
+
+ /**
+ * @return major version number of class file
+ */
+ public int getMajor() {
+ return major;
+ }
+
+
+ /** Set major version number of class file, default value is 45 (JDK 1.1)
+ * @param major major version number
+ */
+ public void setMajor( int major ) {
+ this.major = major;
+ }
+
+
+ /** Set minor version number of class file, default value is 3 (JDK 1.1)
+ * @param minor minor version number
+ */
+ public void setMinor( int minor ) {
+ this.minor = minor;
+ }
+
+
+ /**
+ * @return minor version number of class file
+ */
+ public int getMinor() {
+ return minor;
+ }
+
+
+ /**
+ * Add an attribute to this class.
+ * @param a attribute to add
+ */
+ public void addAttribute( Attribute a ) {
+ attribute_vec.add(a);
+ }
+
+
+ /**
+ * Add a method to this class.
+ * @param m method to add
+ */
+ public void addMethod( Method m ) {
+ method_vec.add(m);
+ }
+
+
+ /**
+ * Convenience method.
+ *
+ * Add an empty constructor to this class that does nothing but calling super().
+ * @param access_flags rights for constructor
+ */
+ public void addEmptyConstructor( int access_flags ) {
+ InstructionList il = new InstructionList();
+ il.append(InstructionConstants.THIS); // Push `this'
+ il.append(new INVOKESPECIAL(cp.addMethodref(super_class_name, "", "()V")));
+ il.append(InstructionConstants.RETURN);
+ MethodGen mg = new MethodGen(access_flags, Type.VOID, Type.NO_ARGS, null, "",
+ class_name, il, cp);
+ mg.setMaxStack(1);
+ addMethod(mg.getMethod());
+ }
+
+
+ /**
+ * Add a field to this class.
+ * @param f field to add
+ */
+ public void addField( Field f ) {
+ field_vec.add(f);
+ }
+
+
+ public boolean containsField( Field f ) {
+ return field_vec.contains(f);
+ }
+
+
+ /** @return field object with given name, or null
+ */
+ public Field containsField( String name ) {
+ for (Iterator e = field_vec.iterator(); e.hasNext();) {
+ Field f = (Field) e.next();
+ if (f.getName().equals(name)) {
+ return f;
+ }
+ }
+ return null;
+ }
+
+
+ /** @return method object with given name and signature, or null
+ */
+ public Method containsMethod( String name, String signature ) {
+ for (Iterator e = method_vec.iterator(); e.hasNext();) {
+ Method m = (Method) e.next();
+ if (m.getName().equals(name) && m.getSignature().equals(signature)) {
+ return m;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Remove an attribute from this class.
+ * @param a attribute to remove
+ */
+ public void removeAttribute( Attribute a ) {
+ attribute_vec.remove(a);
+ }
+
+
+ /**
+ * Remove a method from this class.
+ * @param m method to remove
+ */
+ public void removeMethod( Method m ) {
+ method_vec.remove(m);
+ }
+
+
+ /** Replace given method with new one. If the old one does not exist
+ * add the new_ method to the class anyway.
+ */
+ public void replaceMethod( Method old, Method new_ ) {
+ if (new_ == null) {
+ throw new ClassGenException("Replacement method must not be null");
+ }
+ int i = method_vec.indexOf(old);
+ if (i < 0) {
+ method_vec.add(new_);
+ } else {
+ method_vec.set(i, new_);
+ }
+ }
+
+
+ /** Replace given field with new one. If the old one does not exist
+ * add the new_ field to the class anyway.
+ */
+ public void replaceField( Field old, Field new_ ) {
+ if (new_ == null) {
+ throw new ClassGenException("Replacement method must not be null");
+ }
+ int i = field_vec.indexOf(old);
+ if (i < 0) {
+ field_vec.add(new_);
+ } else {
+ field_vec.set(i, new_);
+ }
+ }
+
+
+ /**
+ * Remove a field to this class.
+ * @param f field to remove
+ */
+ public void removeField( Field f ) {
+ field_vec.remove(f);
+ }
+
+
+ public String getClassName() {
+ return class_name;
+ }
+
+
+ public String getSuperclassName() {
+ return super_class_name;
+ }
+
+
+ public String getFileName() {
+ return file_name;
+ }
+
+
+ public void setClassName( String name ) {
+ class_name = name.replace('/', '.');
+ class_name_index = cp.addClass(name);
+ }
+
+
+ public void setSuperclassName( String name ) {
+ super_class_name = name.replace('/', '.');
+ superclass_name_index = cp.addClass(name);
+ }
+
+
+ public Method[] getMethods() {
+ return (Method[]) method_vec.toArray(new Method[method_vec.size()]);
+ }
+
+
+ public void setMethods( Method[] methods ) {
+ method_vec.clear();
+ for (int m = 0; m < methods.length; m++) {
+ addMethod(methods[m]);
+ }
+ }
+
+
+ public void setMethodAt( Method method, int pos ) {
+ method_vec.set(pos, method);
+ }
+
+
+ public Method getMethodAt( int pos ) {
+ return (Method) method_vec.get(pos);
+ }
+
+
+ public String[] getInterfaceNames() {
+ int size = interface_vec.size();
+ String[] interfaces = new String[size];
+ interface_vec.toArray(interfaces);
+ return interfaces;
+ }
+
+
+ public int[] getInterfaces() {
+ int size = interface_vec.size();
+ int[] interfaces = new int[size];
+ for (int i = 0; i < size; i++) {
+ interfaces[i] = cp.addClass((String) interface_vec.get(i));
+ }
+ return interfaces;
+ }
+
+
+ public Field[] getFields() {
+ return (Field[]) field_vec.toArray(new Field[field_vec.size()]);
+ }
+
+
+ public Attribute[] getAttributes() {
+ return (Attribute[]) attribute_vec.toArray(new Attribute[attribute_vec.size()]);
+ }
+
+
+ public ConstantPoolGen getConstantPool() {
+ return cp;
+ }
+
+
+ public void setConstantPool( ConstantPoolGen constant_pool ) {
+ cp = constant_pool;
+ }
+
+
+ public void setClassNameIndex( int class_name_index ) {
+ this.class_name_index = class_name_index;
+ class_name = cp.getConstantPool().getConstantString(class_name_index,
+ Constants.CONSTANT_Class).replace('/', '.');
+ }
+
+
+ public void setSuperclassNameIndex( int superclass_name_index ) {
+ this.superclass_name_index = superclass_name_index;
+ super_class_name = cp.getConstantPool().getConstantString(superclass_name_index,
+ Constants.CONSTANT_Class).replace('/', '.');
+ }
+
+
+ public int getSuperclassNameIndex() {
+ return superclass_name_index;
+ }
+
+
+ public int getClassNameIndex() {
+ return class_name_index;
+ }
+
+ private ArrayList observers;
+
+
+ /** Add observer for this object.
+ */
+ public void addObserver( ClassObserver o ) {
+ if (observers == null) {
+ observers = new ArrayList();
+ }
+ observers.add(o);
+ }
+
+
+ /** Remove observer for this object.
+ */
+ public void removeObserver( ClassObserver o ) {
+ if (observers != null) {
+ observers.remove(o);
+ }
+ }
+
+
+ /** Call notify() method on all observers. This method is not called
+ * automatically whenever the state has changed, but has to be
+ * called by the user after he has finished editing the object.
+ */
+ public void update() {
+ if (observers != null) {
+ for (Iterator e = observers.iterator(); e.hasNext();) {
+ ((ClassObserver) e.next()).notify(this);
+ }
+ }
+ }
+
+
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch (CloneNotSupportedException e) {
+ System.err.println(e);
+ return null;
+ }
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two ClassGen objects are said to be equal when
+ * their class names are equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the class name.
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGenException.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGenException.java
index 696b31a6..316a7cb5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGenException.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassGenException.java
@@ -1,36 +1,36 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Thrown on internal errors. Extends RuntimeException so it hasn't to be declared
- * in the throws clause every time.
- *
- * @version $Id: ClassGenException.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ClassGenException extends RuntimeException {
-
- public ClassGenException() {
- super();
- }
-
-
- public ClassGenException(String s) {
- super(s);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Thrown on internal errors. Extends RuntimeException so it hasn't to be declared
+ * in the throws clause every time.
+ *
+ * @version $Id: ClassGenException.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ClassGenException extends RuntimeException {
+
+ public ClassGenException() {
+ super();
+ }
+
+
+ public ClassGenException(String s) {
+ super(s);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassObserver.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassObserver.java
index 37bcb2e5..de664b57 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassObserver.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ClassObserver.java
@@ -1,29 +1,29 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Implement this interface if you're interested in changes to a ClassGen object
- * and register yourself with addObserver().
- *
- * @version $Id: ClassObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface ClassObserver {
-
- public void notify( ClassGen clazz );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Implement this interface if you're interested in changes to a ClassGen object
+ * and register yourself with addObserver().
+ *
+ * @version $Id: ClassObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface ClassObserver {
+
+ public void notify( ClassGen clazz );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CodeExceptionGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CodeExceptionGen.java
index 070be6a1..890c356c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CodeExceptionGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CodeExceptionGen.java
@@ -1,184 +1,184 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.classfile.CodeException;
-
-/**
- * This class represents an exception handler, i.e., specifies the region where
- * a handler is active and an instruction where the actual handling is done.
- * pool as parameters. Opposed to the JVM specification the end of the handled
- * region is set to be inclusive, i.e. all instructions between start and end
- * are protected including the start and end instructions (handles) themselves.
- * The end of the region is automatically mapped to be exclusive when calling
- * getCodeException(), i.e., there is no difference semantically.
- *
- * @version $Id: CodeExceptionGen.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see MethodGen
- * @see CodeException
- * @see InstructionHandle
- */
-public final class CodeExceptionGen implements InstructionTargeter, Cloneable, java.io.Serializable {
-
- private InstructionHandle start_pc;
- private InstructionHandle end_pc;
- private InstructionHandle handler_pc;
- private ObjectType catch_type;
-
-
- /**
- * Add an exception handler, i.e., specify region where a handler is active and an
- * instruction where the actual handling is done.
- *
- * @param start_pc Start of handled region (inclusive)
- * @param end_pc End of handled region (inclusive)
- * @param handler_pc Where handling is done
- * @param catch_type which exception is handled, null for ANY
- */
- public CodeExceptionGen(InstructionHandle start_pc, InstructionHandle end_pc,
- InstructionHandle handler_pc, ObjectType catch_type) {
- setStartPC(start_pc);
- setEndPC(end_pc);
- setHandlerPC(handler_pc);
- this.catch_type = catch_type;
- }
-
-
- /**
- * Get CodeException object.
- *
- * This relies on that the instruction list has already been dumped
- * to byte code or or that the `setPositions' methods has been
- * called for the instruction list.
- *
- * @param cp constant pool
- */
- public CodeException getCodeException( ConstantPoolGen cp ) {
- return new CodeException(start_pc.getPosition(), end_pc.getPosition()
- + end_pc.getInstruction().getLength(), handler_pc.getPosition(),
- (catch_type == null) ? 0 : cp.addClass(catch_type));
- }
-
-
- /* Set start of handler
- * @param start_pc Start of handled region (inclusive)
- */
- public void setStartPC( InstructionHandle start_pc ) {
- BranchInstruction.notifyTarget(this.start_pc, start_pc, this);
- this.start_pc = start_pc;
- }
-
-
- /* Set end of handler
- * @param end_pc End of handled region (inclusive)
- */
- public void setEndPC( InstructionHandle end_pc ) {
- BranchInstruction.notifyTarget(this.end_pc, end_pc, this);
- this.end_pc = end_pc;
- }
-
-
- /* Set handler code
- * @param handler_pc Start of handler
- */
- public void setHandlerPC( InstructionHandle handler_pc ) {
- BranchInstruction.notifyTarget(this.handler_pc, handler_pc, this);
- this.handler_pc = handler_pc;
- }
-
-
- /**
- * @param old_ih old target, either start or end
- * @param new_ih new target
- */
- public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
- boolean targeted = false;
- if (start_pc == old_ih) {
- targeted = true;
- setStartPC(new_ih);
- }
- if (end_pc == old_ih) {
- targeted = true;
- setEndPC(new_ih);
- }
- if (handler_pc == old_ih) {
- targeted = true;
- setHandlerPC(new_ih);
- }
- if (!targeted) {
- throw new ClassGenException("Not targeting " + old_ih + ", but {" + start_pc + ", "
- + end_pc + ", " + handler_pc + "}");
- }
- }
-
-
- /**
- * @return true, if ih is target of this handler
- */
- public boolean containsTarget( InstructionHandle ih ) {
- return (start_pc == ih) || (end_pc == ih) || (handler_pc == ih);
- }
-
-
- /** Sets the type of the Exception to catch. Set 'null' for ANY. */
- public void setCatchType( ObjectType catch_type ) {
- this.catch_type = catch_type;
- }
-
-
- /** Gets the type of the Exception to catch, 'null' for ANY. */
- public ObjectType getCatchType() {
- return catch_type;
- }
-
-
- /** @return start of handled region (inclusive)
- */
- public InstructionHandle getStartPC() {
- return start_pc;
- }
-
-
- /** @return end of handled region (inclusive)
- */
- public InstructionHandle getEndPC() {
- return end_pc;
- }
-
-
- /** @return start of handler
- */
- public InstructionHandle getHandlerPC() {
- return handler_pc;
- }
-
-
- public String toString() {
- return "CodeExceptionGen(" + start_pc + ", " + end_pc + ", " + handler_pc + ")";
- }
-
-
- public Object clone() {
- try {
- return super.clone();
- } catch (CloneNotSupportedException e) {
- System.err.println(e);
- return null;
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.classfile.CodeException;
+
+/**
+ * This class represents an exception handler, i.e., specifies the region where
+ * a handler is active and an instruction where the actual handling is done.
+ * pool as parameters. Opposed to the JVM specification the end of the handled
+ * region is set to be inclusive, i.e. all instructions between start and end
+ * are protected including the start and end instructions (handles) themselves.
+ * The end of the region is automatically mapped to be exclusive when calling
+ * getCodeException(), i.e., there is no difference semantically.
+ *
+ * @version $Id: CodeExceptionGen.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see MethodGen
+ * @see CodeException
+ * @see InstructionHandle
+ */
+public final class CodeExceptionGen implements InstructionTargeter, Cloneable, java.io.Serializable {
+
+ private InstructionHandle start_pc;
+ private InstructionHandle end_pc;
+ private InstructionHandle handler_pc;
+ private ObjectType catch_type;
+
+
+ /**
+ * Add an exception handler, i.e., specify region where a handler is active and an
+ * instruction where the actual handling is done.
+ *
+ * @param start_pc Start of handled region (inclusive)
+ * @param end_pc End of handled region (inclusive)
+ * @param handler_pc Where handling is done
+ * @param catch_type which exception is handled, null for ANY
+ */
+ public CodeExceptionGen(InstructionHandle start_pc, InstructionHandle end_pc,
+ InstructionHandle handler_pc, ObjectType catch_type) {
+ setStartPC(start_pc);
+ setEndPC(end_pc);
+ setHandlerPC(handler_pc);
+ this.catch_type = catch_type;
+ }
+
+
+ /**
+ * Get CodeException object.
+ *
+ * This relies on that the instruction list has already been dumped
+ * to byte code or or that the `setPositions' methods has been
+ * called for the instruction list.
+ *
+ * @param cp constant pool
+ */
+ public CodeException getCodeException( ConstantPoolGen cp ) {
+ return new CodeException(start_pc.getPosition(), end_pc.getPosition()
+ + end_pc.getInstruction().getLength(), handler_pc.getPosition(),
+ (catch_type == null) ? 0 : cp.addClass(catch_type));
+ }
+
+
+ /* Set start of handler
+ * @param start_pc Start of handled region (inclusive)
+ */
+ public void setStartPC( InstructionHandle start_pc ) {
+ BranchInstruction.notifyTarget(this.start_pc, start_pc, this);
+ this.start_pc = start_pc;
+ }
+
+
+ /* Set end of handler
+ * @param end_pc End of handled region (inclusive)
+ */
+ public void setEndPC( InstructionHandle end_pc ) {
+ BranchInstruction.notifyTarget(this.end_pc, end_pc, this);
+ this.end_pc = end_pc;
+ }
+
+
+ /* Set handler code
+ * @param handler_pc Start of handler
+ */
+ public void setHandlerPC( InstructionHandle handler_pc ) {
+ BranchInstruction.notifyTarget(this.handler_pc, handler_pc, this);
+ this.handler_pc = handler_pc;
+ }
+
+
+ /**
+ * @param old_ih old target, either start or end
+ * @param new_ih new target
+ */
+ public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
+ boolean targeted = false;
+ if (start_pc == old_ih) {
+ targeted = true;
+ setStartPC(new_ih);
+ }
+ if (end_pc == old_ih) {
+ targeted = true;
+ setEndPC(new_ih);
+ }
+ if (handler_pc == old_ih) {
+ targeted = true;
+ setHandlerPC(new_ih);
+ }
+ if (!targeted) {
+ throw new ClassGenException("Not targeting " + old_ih + ", but {" + start_pc + ", "
+ + end_pc + ", " + handler_pc + "}");
+ }
+ }
+
+
+ /**
+ * @return true, if ih is target of this handler
+ */
+ public boolean containsTarget( InstructionHandle ih ) {
+ return (start_pc == ih) || (end_pc == ih) || (handler_pc == ih);
+ }
+
+
+ /** Sets the type of the Exception to catch. Set 'null' for ANY. */
+ public void setCatchType( ObjectType catch_type ) {
+ this.catch_type = catch_type;
+ }
+
+
+ /** Gets the type of the Exception to catch, 'null' for ANY. */
+ public ObjectType getCatchType() {
+ return catch_type;
+ }
+
+
+ /** @return start of handled region (inclusive)
+ */
+ public InstructionHandle getStartPC() {
+ return start_pc;
+ }
+
+
+ /** @return end of handled region (inclusive)
+ */
+ public InstructionHandle getEndPC() {
+ return end_pc;
+ }
+
+
+ /** @return start of handler
+ */
+ public InstructionHandle getHandlerPC() {
+ return handler_pc;
+ }
+
+
+ public String toString() {
+ return "CodeExceptionGen(" + start_pc + ", " + end_pc + ", " + handler_pc + ")";
+ }
+
+
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch (CloneNotSupportedException e) {
+ System.err.println(e);
+ return null;
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CompoundInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CompoundInstruction.java
index 4116cc0a..f8d9b7c2 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CompoundInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/CompoundInstruction.java
@@ -1,38 +1,38 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Wrapper class for `compound' operations, virtual instructions that
- * don't exist as byte code, but give a useful meaning. For example,
- * the (virtual) PUSH instruction takes an arbitray argument and produces the
- * appropiate code at dump time (ICONST, LDC, BIPUSH, ...). Also you can use the
- * SWITCH instruction as a useful template for either LOOKUPSWITCH or
- * TABLESWITCH.
- *
- * The interface provides the possibilty for the user to write
- * `templates' or `macros' for such reuseable code patterns.
- *
- * @version $Id: CompoundInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see PUSH
- * @see SWITCH
- */
-public interface CompoundInstruction {
-
- public InstructionList getInstructionList();
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Wrapper class for `compound' operations, virtual instructions that
+ * don't exist as byte code, but give a useful meaning. For example,
+ * the (virtual) PUSH instruction takes an arbitray argument and produces the
+ * appropiate code at dump time (ICONST, LDC, BIPUSH, ...). Also you can use the
+ * SWITCH instruction as a useful template for either LOOKUPSWITCH or
+ * TABLESWITCH.
+ *
+ * The interface provides the possibilty for the user to write
+ * `templates' or `macros' for such reuseable code patterns.
+ *
+ * @version $Id: CompoundInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see PUSH
+ * @see SWITCH
+ */
+public interface CompoundInstruction {
+
+ public InstructionList getInstructionList();
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPoolGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPoolGen.java
index 5ae20528..99218949 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPoolGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPoolGen.java
@@ -1,765 +1,765 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.Constant;
-import org.apache.bcel5_2_0.classfile.ConstantCP;
-import org.apache.bcel5_2_0.classfile.ConstantClass;
-import org.apache.bcel5_2_0.classfile.ConstantDouble;
-import org.apache.bcel5_2_0.classfile.ConstantFieldref;
-import org.apache.bcel5_2_0.classfile.ConstantFloat;
-import org.apache.bcel5_2_0.classfile.ConstantInteger;
-import org.apache.bcel5_2_0.classfile.ConstantInterfaceMethodref;
-import org.apache.bcel5_2_0.classfile.ConstantLong;
-import org.apache.bcel5_2_0.classfile.ConstantMethodref;
-import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.ConstantString;
-import org.apache.bcel5_2_0.classfile.ConstantUtf8;
-
-/**
- * This class is used to build up a constant pool. The user adds
- * constants via `addXXX' methods, `addString', `addClass',
- * etc.. These methods return an index into the constant
- * pool. Finally, `getFinalConstantPool()' returns the constant pool
- * built up. Intermediate versions of the constant pool can be
- * obtained with `getConstantPool()'. A constant pool has capacity for
- * Constants.MAX_SHORT entries. Note that the first (0) is used by the
- * JVM and that Double and Long constants need two slots.
- *
- * @version $Id: ConstantPoolGen.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constant
- */
-public class ConstantPoolGen implements java.io.Serializable {
-
- protected int size = 1024; // Inital size, sufficient in most cases
- protected Constant[] constants = new Constant[size];
- protected int index = 1; // First entry (0) used by JVM
- private static final String METHODREF_DELIM = ":";
- private static final String IMETHODREF_DELIM = "#";
- private static final String FIELDREF_DELIM = "&";
- private static final String NAT_DELIM = "%";
-
- private static class Index implements java.io.Serializable {
-
- int index;
-
-
- Index(int i) {
- index = i;
- }
- }
-
-
- /**
- * Initialize with given array of constants.
- *
- * @param cs array of given constants, new ones will be appended
- */
- public ConstantPoolGen(Constant[] cs) {
- if (cs.length > size) {
- size = cs.length;
- constants = new Constant[size];
- }
- System.arraycopy(cs, 0, constants, 0, cs.length);
- if (cs.length > 0) {
- index = cs.length;
- }
- for (int i = 1; i < index; i++) {
- Constant c = constants[i];
- if (c instanceof ConstantString) {
- ConstantString s = (ConstantString) c;
- ConstantUtf8 u8 = (ConstantUtf8) constants[s.getStringIndex()];
- String key = u8.getBytes();
- if (!string_table.containsKey(key)) {
- string_table.put(key, new Index(i));
- }
- } else if (c instanceof ConstantClass) {
- ConstantClass s = (ConstantClass) c;
- ConstantUtf8 u8 = (ConstantUtf8) constants[s.getNameIndex()];
- String key = u8.getBytes();
- if (!class_table.containsKey(key)) {
- class_table.put(key, new Index(i));
- }
- } else if (c instanceof ConstantNameAndType) {
- ConstantNameAndType n = (ConstantNameAndType) c;
- ConstantUtf8 u8 = (ConstantUtf8) constants[n.getNameIndex()];
- ConstantUtf8 u8_2 = (ConstantUtf8) constants[n.getSignatureIndex()];
- String key = u8.getBytes() + NAT_DELIM + u8_2.getBytes();
- if (!n_a_t_table.containsKey(key)) {
- n_a_t_table.put(key, new Index(i));
- }
- } else if (c instanceof ConstantUtf8) {
- ConstantUtf8 u = (ConstantUtf8) c;
- String key = u.getBytes();
- if (!utf8_table.containsKey(key)) {
- utf8_table.put(key, new Index(i));
- }
- } else if (c instanceof ConstantCP) {
- ConstantCP m = (ConstantCP) c;
- ConstantClass clazz = (ConstantClass) constants[m.getClassIndex()];
- ConstantNameAndType n = (ConstantNameAndType) constants[m.getNameAndTypeIndex()];
- ConstantUtf8 u8 = (ConstantUtf8) constants[clazz.getNameIndex()];
- String class_name = u8.getBytes().replace('/', '.');
- u8 = (ConstantUtf8) constants[n.getNameIndex()];
- String method_name = u8.getBytes();
- u8 = (ConstantUtf8) constants[n.getSignatureIndex()];
- String signature = u8.getBytes();
- String delim = METHODREF_DELIM;
- if (c instanceof ConstantInterfaceMethodref) {
- delim = IMETHODREF_DELIM;
- } else if (c instanceof ConstantFieldref) {
- delim = FIELDREF_DELIM;
- }
- String key = class_name + delim + method_name + delim + signature;
- if (!cp_table.containsKey(key)) {
- cp_table.put(key, new Index(i));
- }
- }
- }
- }
-
-
- /**
- * Initialize with given constant pool.
- */
- public ConstantPoolGen(ConstantPool cp) {
- this(cp.getConstantPool());
- }
-
-
- /**
- * Create empty constant pool.
- */
- public ConstantPoolGen() {
- }
-
-
- /** Resize internal array of constants.
- */
- protected void adjustSize() {
- if (index + 3 >= size) {
- Constant[] cs = constants;
- size *= 2;
- constants = new Constant[size];
- System.arraycopy(cs, 0, constants, 0, index);
- }
- }
-
- private Map string_table = new HashMap();
-
-
- /**
- * Look for ConstantString in ConstantPool containing String `str'.
- *
- * @param str String to search for
- * @return index on success, -1 otherwise
- */
- public int lookupString( String str ) {
- Index index = (Index) string_table.get(str);
- return (index != null) ? index.index : -1;
- }
-
-
- /**
- * Add a new String constant to the ConstantPool, if it is not already in there.
- *
- * @param str String to add
- * @return index of entry
- */
- public int addString( String str ) {
- int ret;
- if ((ret = lookupString(str)) != -1) {
- return ret; // Already in CP
- }
- int utf8 = addUtf8(str);
- adjustSize();
- ConstantString s = new ConstantString(utf8);
- ret = index;
- constants[index++] = s;
- if (!string_table.containsKey(str)) {
- string_table.put(str, new Index(ret));
- }
- return ret;
- }
-
- private Map class_table = new HashMap();
-
-
- /**
- * Look for ConstantClass in ConstantPool named `str'.
- *
- * @param str String to search for
- * @return index on success, -1 otherwise
- */
- public int lookupClass( String str ) {
- Index index = (Index) class_table.get(str.replace('.', '/'));
- return (index != null) ? index.index : -1;
- }
-
-
- private int addClass_( String clazz ) {
- int ret;
- if ((ret = lookupClass(clazz)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- ConstantClass c = new ConstantClass(addUtf8(clazz));
- ret = index;
- constants[index++] = c;
- if (!class_table.containsKey(clazz)) {
- class_table.put(clazz, new Index(ret));
- }
- return ret;
- }
-
-
- /**
- * Add a new Class reference to the ConstantPool, if it is not already in there.
- *
- * @param str Class to add
- * @return index of entry
- */
- public int addClass( String str ) {
- return addClass_(str.replace('.', '/'));
- }
-
-
- /**
- * Add a new Class reference to the ConstantPool for a given type.
- *
- * @param type Class to add
- * @return index of entry
- */
- public int addClass( ObjectType type ) {
- return addClass(type.getClassName());
- }
-
-
- /**
- * Add a reference to an array class (e.g. String[][]) as needed by MULTIANEWARRAY
- * instruction, e.g. to the ConstantPool.
- *
- * @param type type of array class
- * @return index of entry
- */
- public int addArrayClass( ArrayType type ) {
- return addClass_(type.getSignature());
- }
-
-
- /**
- * Look for ConstantInteger in ConstantPool.
- *
- * @param n integer number to look for
- * @return index on success, -1 otherwise
- */
- public int lookupInteger( int n ) {
- for (int i = 1; i < index; i++) {
- if (constants[i] instanceof ConstantInteger) {
- ConstantInteger c = (ConstantInteger) constants[i];
- if (c.getBytes() == n) {
- return i;
- }
- }
- }
- return -1;
- }
-
-
- /**
- * Add a new Integer constant to the ConstantPool, if it is not already in there.
- *
- * @param n integer number to add
- * @return index of entry
- */
- public int addInteger( int n ) {
- int ret;
- if ((ret = lookupInteger(n)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- ret = index;
- constants[index++] = new ConstantInteger(n);
- return ret;
- }
-
-
- /**
- * Look for ConstantFloat in ConstantPool.
- *
- * @param n Float number to look for
- * @return index on success, -1 otherwise
- */
- public int lookupFloat( float n ) {
- int bits = Float.floatToIntBits(n);
- for (int i = 1; i < index; i++) {
- if (constants[i] instanceof ConstantFloat) {
- ConstantFloat c = (ConstantFloat) constants[i];
- if (Float.floatToIntBits(c.getBytes()) == bits) {
- return i;
- }
- }
- }
- return -1;
- }
-
-
- /**
- * Add a new Float constant to the ConstantPool, if it is not already in there.
- *
- * @param n Float number to add
- * @return index of entry
- */
- public int addFloat( float n ) {
- int ret;
- if ((ret = lookupFloat(n)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- ret = index;
- constants[index++] = new ConstantFloat(n);
- return ret;
- }
-
- private Map utf8_table = new HashMap();
-
-
- /**
- * Look for ConstantUtf8 in ConstantPool.
- *
- * @param n Utf8 string to look for
- * @return index on success, -1 otherwise
- */
- public int lookupUtf8( String n ) {
- Index index = (Index) utf8_table.get(n);
- return (index != null) ? index.index : -1;
- }
-
-
- /**
- * Add a new Utf8 constant to the ConstantPool, if it is not already in there.
- *
- * @param n Utf8 string to add
- * @return index of entry
- */
- public int addUtf8( String n ) {
- int ret;
- if ((ret = lookupUtf8(n)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- ret = index;
- constants[index++] = new ConstantUtf8(n);
- if (!utf8_table.containsKey(n)) {
- utf8_table.put(n, new Index(ret));
- }
- return ret;
- }
-
-
- /**
- * Look for ConstantLong in ConstantPool.
- *
- * @param n Long number to look for
- * @return index on success, -1 otherwise
- */
- public int lookupLong( long n ) {
- for (int i = 1; i < index; i++) {
- if (constants[i] instanceof ConstantLong) {
- ConstantLong c = (ConstantLong) constants[i];
- if (c.getBytes() == n) {
- return i;
- }
- }
- }
- return -1;
- }
-
-
- /**
- * Add a new long constant to the ConstantPool, if it is not already in there.
- *
- * @param n Long number to add
- * @return index of entry
- */
- public int addLong( long n ) {
- int ret;
- if ((ret = lookupLong(n)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- ret = index;
- constants[index] = new ConstantLong(n);
- index += 2; // Wastes one entry according to spec
- return ret;
- }
-
-
- /**
- * Look for ConstantDouble in ConstantPool.
- *
- * @param n Double number to look for
- * @return index on success, -1 otherwise
- */
- public int lookupDouble( double n ) {
- long bits = Double.doubleToLongBits(n);
- for (int i = 1; i < index; i++) {
- if (constants[i] instanceof ConstantDouble) {
- ConstantDouble c = (ConstantDouble) constants[i];
- if (Double.doubleToLongBits(c.getBytes()) == bits) {
- return i;
- }
- }
- }
- return -1;
- }
-
-
- /**
- * Add a new double constant to the ConstantPool, if it is not already in there.
- *
- * @param n Double number to add
- * @return index of entry
- */
- public int addDouble( double n ) {
- int ret;
- if ((ret = lookupDouble(n)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- ret = index;
- constants[index] = new ConstantDouble(n);
- index += 2; // Wastes one entry according to spec
- return ret;
- }
-
- private Map n_a_t_table = new HashMap();
-
-
- /**
- * Look for ConstantNameAndType in ConstantPool.
- *
- * @param name of variable/method
- * @param signature of variable/method
- * @return index on success, -1 otherwise
- */
- public int lookupNameAndType( String name, String signature ) {
- Index _index = (Index) n_a_t_table.get(name + NAT_DELIM + signature);
- return (_index != null) ? _index.index : -1;
- }
-
-
- /**
- * Add a new NameAndType constant to the ConstantPool if it is not already
- * in there.
- *
- * @param name Name string to add
- * @param signature signature string to add
- * @return index of entry
- */
- public int addNameAndType( String name, String signature ) {
- int ret;
- int name_index, signature_index;
- if ((ret = lookupNameAndType(name, signature)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- name_index = addUtf8(name);
- signature_index = addUtf8(signature);
- ret = index;
- constants[index++] = new ConstantNameAndType(name_index, signature_index);
- String key = name + NAT_DELIM + signature;
- if (!n_a_t_table.containsKey(key)) {
- n_a_t_table.put(key, new Index(ret));
- }
- return ret;
- }
-
- private Map cp_table = new HashMap();
-
-
- /**
- * Look for ConstantMethodref in ConstantPool.
- *
- * @param class_name Where to find method
- * @param method_name Guess what
- * @param signature return and argument types
- * @return index on success, -1 otherwise
- */
- public int lookupMethodref( String class_name, String method_name, String signature ) {
- Index index = (Index) cp_table.get(class_name + METHODREF_DELIM + method_name
- + METHODREF_DELIM + signature);
- return (index != null) ? index.index : -1;
- }
-
-
- public int lookupMethodref( MethodGen method ) {
- return lookupMethodref(method.getClassName(), method.getName(), method.getSignature());
- }
-
-
- /**
- * Add a new Methodref constant to the ConstantPool, if it is not already
- * in there.
- *
- * @param class_name class name string to add
- * @param method_name method name string to add
- * @param signature method signature string to add
- * @return index of entry
- */
- public int addMethodref( String class_name, String method_name, String signature ) {
- int ret, class_index, name_and_type_index;
- if ((ret = lookupMethodref(class_name, method_name, signature)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- name_and_type_index = addNameAndType(method_name, signature);
- class_index = addClass(class_name);
- ret = index;
- constants[index++] = new ConstantMethodref(class_index, name_and_type_index);
- String key = class_name + METHODREF_DELIM + method_name + METHODREF_DELIM + signature;
- if (!cp_table.containsKey(key)) {
- cp_table.put(key, new Index(ret));
- }
- return ret;
- }
-
-
- public int addMethodref( MethodGen method ) {
- return addMethodref(method.getClassName(), method.getName(), method.getSignature());
- }
-
-
- /**
- * Look for ConstantInterfaceMethodref in ConstantPool.
- *
- * @param class_name Where to find method
- * @param method_name Guess what
- * @param signature return and argument types
- * @return index on success, -1 otherwise
- */
- public int lookupInterfaceMethodref( String class_name, String method_name, String signature ) {
- Index index = (Index) cp_table.get(class_name + IMETHODREF_DELIM + method_name
- + IMETHODREF_DELIM + signature);
- return (index != null) ? index.index : -1;
- }
-
-
- public int lookupInterfaceMethodref( MethodGen method ) {
- return lookupInterfaceMethodref(method.getClassName(), method.getName(), method
- .getSignature());
- }
-
-
- /**
- * Add a new InterfaceMethodref constant to the ConstantPool, if it is not already
- * in there.
- *
- * @param class_name class name string to add
- * @param method_name method name string to add
- * @param signature signature string to add
- * @return index of entry
- */
- public int addInterfaceMethodref( String class_name, String method_name, String signature ) {
- int ret, class_index, name_and_type_index;
- if ((ret = lookupInterfaceMethodref(class_name, method_name, signature)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- class_index = addClass(class_name);
- name_and_type_index = addNameAndType(method_name, signature);
- ret = index;
- constants[index++] = new ConstantInterfaceMethodref(class_index, name_and_type_index);
- String key = class_name + IMETHODREF_DELIM + method_name + IMETHODREF_DELIM + signature;
- if (!cp_table.containsKey(key)) {
- cp_table.put(key, new Index(ret));
- }
- return ret;
- }
-
-
- public int addInterfaceMethodref( MethodGen method ) {
- return addInterfaceMethodref(method.getClassName(), method.getName(), method.getSignature());
- }
-
-
- /**
- * Look for ConstantFieldref in ConstantPool.
- *
- * @param class_name Where to find method
- * @param field_name Guess what
- * @param signature return and argument types
- * @return index on success, -1 otherwise
- */
- public int lookupFieldref( String class_name, String field_name, String signature ) {
- Index index = (Index) cp_table.get(class_name + FIELDREF_DELIM + field_name
- + FIELDREF_DELIM + signature);
- return (index != null) ? index.index : -1;
- }
-
-
- /**
- * Add a new Fieldref constant to the ConstantPool, if it is not already
- * in there.
- *
- * @param class_name class name string to add
- * @param field_name field name string to add
- * @param signature signature string to add
- * @return index of entry
- */
- public int addFieldref( String class_name, String field_name, String signature ) {
- int ret;
- int class_index, name_and_type_index;
- if ((ret = lookupFieldref(class_name, field_name, signature)) != -1) {
- return ret; // Already in CP
- }
- adjustSize();
- class_index = addClass(class_name);
- name_and_type_index = addNameAndType(field_name, signature);
- ret = index;
- constants[index++] = new ConstantFieldref(class_index, name_and_type_index);
- String key = class_name + FIELDREF_DELIM + field_name + FIELDREF_DELIM + signature;
- if (!cp_table.containsKey(key)) {
- cp_table.put(key, new Index(ret));
- }
- return ret;
- }
-
-
- /**
- * @param i index in constant pool
- * @return constant pool entry at index i
- */
- public Constant getConstant( int i ) {
- return constants[i];
- }
-
-
- /**
- * Use with care!
- *
- * @param i index in constant pool
- * @param c new constant pool entry at index i
- */
- public void setConstant( int i, Constant c ) {
- constants[i] = c;
- }
-
-
- /**
- * @return intermediate constant pool
- */
- public ConstantPool getConstantPool() {
- return new ConstantPool(constants);
- }
-
-
- /**
- * @return current size of constant pool
- */
- public int getSize() {
- return index;
- }
-
-
- /**
- * @return constant pool with proper length
- */
- public ConstantPool getFinalConstantPool() {
- Constant[] cs = new Constant[index];
- System.arraycopy(constants, 0, cs, 0, index);
- return new ConstantPool(cs);
- }
-
-
- /**
- * @return String representation.
- */
- public String toString() {
- StringBuilder buf = new StringBuilder();
- for (int i = 1; i < index; i++) {
- buf.append(i).append(")").append(constants[i]).append("\n");
- }
- return buf.toString();
- }
-
-
- /** Import constant from another ConstantPool and return new index.
- */
- public int addConstant( Constant c, ConstantPoolGen cp ) {
- Constant[] constants = cp.getConstantPool().getConstantPool();
- switch (c.getTag()) {
- case Constants.CONSTANT_String: {
- ConstantString s = (ConstantString) c;
- ConstantUtf8 u8 = (ConstantUtf8) constants[s.getStringIndex()];
- return addString(u8.getBytes());
- }
- case Constants.CONSTANT_Class: {
- ConstantClass s = (ConstantClass) c;
- ConstantUtf8 u8 = (ConstantUtf8) constants[s.getNameIndex()];
- return addClass(u8.getBytes());
- }
- case Constants.CONSTANT_NameAndType: {
- ConstantNameAndType n = (ConstantNameAndType) c;
- ConstantUtf8 u8 = (ConstantUtf8) constants[n.getNameIndex()];
- ConstantUtf8 u8_2 = (ConstantUtf8) constants[n.getSignatureIndex()];
- return addNameAndType(u8.getBytes(), u8_2.getBytes());
- }
- case Constants.CONSTANT_Utf8:
- return addUtf8(((ConstantUtf8) c).getBytes());
- case Constants.CONSTANT_Double:
- return addDouble(((ConstantDouble) c).getBytes());
- case Constants.CONSTANT_Float:
- return addFloat(((ConstantFloat) c).getBytes());
- case Constants.CONSTANT_Long:
- return addLong(((ConstantLong) c).getBytes());
- case Constants.CONSTANT_Integer:
- return addInteger(((ConstantInteger) c).getBytes());
- case Constants.CONSTANT_InterfaceMethodref:
- case Constants.CONSTANT_Methodref:
- case Constants.CONSTANT_Fieldref: {
- ConstantCP m = (ConstantCP) c;
- ConstantClass clazz = (ConstantClass) constants[m.getClassIndex()];
- ConstantNameAndType n = (ConstantNameAndType) constants[m.getNameAndTypeIndex()];
- ConstantUtf8 u8 = (ConstantUtf8) constants[clazz.getNameIndex()];
- String class_name = u8.getBytes().replace('/', '.');
- u8 = (ConstantUtf8) constants[n.getNameIndex()];
- String name = u8.getBytes();
- u8 = (ConstantUtf8) constants[n.getSignatureIndex()];
- String signature = u8.getBytes();
- switch (c.getTag()) {
- case Constants.CONSTANT_InterfaceMethodref:
- return addInterfaceMethodref(class_name, name, signature);
- case Constants.CONSTANT_Methodref:
- return addMethodref(class_name, name, signature);
- case Constants.CONSTANT_Fieldref:
- return addFieldref(class_name, name, signature);
- default: // Never reached
- throw new RuntimeException("Unknown constant type " + c);
- }
- }
- default: // Never reached
- throw new RuntimeException("Unknown constant type " + c);
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.Constant;
+import org.apache.bcel5_2_0.classfile.ConstantCP;
+import org.apache.bcel5_2_0.classfile.ConstantClass;
+import org.apache.bcel5_2_0.classfile.ConstantDouble;
+import org.apache.bcel5_2_0.classfile.ConstantFieldref;
+import org.apache.bcel5_2_0.classfile.ConstantFloat;
+import org.apache.bcel5_2_0.classfile.ConstantInteger;
+import org.apache.bcel5_2_0.classfile.ConstantInterfaceMethodref;
+import org.apache.bcel5_2_0.classfile.ConstantLong;
+import org.apache.bcel5_2_0.classfile.ConstantMethodref;
+import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.ConstantString;
+import org.apache.bcel5_2_0.classfile.ConstantUtf8;
+
+/**
+ * This class is used to build up a constant pool. The user adds
+ * constants via `addXXX' methods, `addString', `addClass',
+ * etc.. These methods return an index into the constant
+ * pool. Finally, `getFinalConstantPool()' returns the constant pool
+ * built up. Intermediate versions of the constant pool can be
+ * obtained with `getConstantPool()'. A constant pool has capacity for
+ * Constants.MAX_SHORT entries. Note that the first (0) is used by the
+ * JVM and that Double and Long constants need two slots.
+ *
+ * @version $Id: ConstantPoolGen.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constant
+ */
+public class ConstantPoolGen implements java.io.Serializable {
+
+ protected int size = 1024; // Inital size, sufficient in most cases
+ protected Constant[] constants = new Constant[size];
+ protected int index = 1; // First entry (0) used by JVM
+ private static final String METHODREF_DELIM = ":";
+ private static final String IMETHODREF_DELIM = "#";
+ private static final String FIELDREF_DELIM = "&";
+ private static final String NAT_DELIM = "%";
+
+ private static class Index implements java.io.Serializable {
+
+ int index;
+
+
+ Index(int i) {
+ index = i;
+ }
+ }
+
+
+ /**
+ * Initialize with given array of constants.
+ *
+ * @param cs array of given constants, new ones will be appended
+ */
+ public ConstantPoolGen(Constant[] cs) {
+ if (cs.length > size) {
+ size = cs.length;
+ constants = new Constant[size];
+ }
+ System.arraycopy(cs, 0, constants, 0, cs.length);
+ if (cs.length > 0) {
+ index = cs.length;
+ }
+ for (int i = 1; i < index; i++) {
+ Constant c = constants[i];
+ if (c instanceof ConstantString) {
+ ConstantString s = (ConstantString) c;
+ ConstantUtf8 u8 = (ConstantUtf8) constants[s.getStringIndex()];
+ String key = u8.getBytes();
+ if (!string_table.containsKey(key)) {
+ string_table.put(key, new Index(i));
+ }
+ } else if (c instanceof ConstantClass) {
+ ConstantClass s = (ConstantClass) c;
+ ConstantUtf8 u8 = (ConstantUtf8) constants[s.getNameIndex()];
+ String key = u8.getBytes();
+ if (!class_table.containsKey(key)) {
+ class_table.put(key, new Index(i));
+ }
+ } else if (c instanceof ConstantNameAndType) {
+ ConstantNameAndType n = (ConstantNameAndType) c;
+ ConstantUtf8 u8 = (ConstantUtf8) constants[n.getNameIndex()];
+ ConstantUtf8 u8_2 = (ConstantUtf8) constants[n.getSignatureIndex()];
+ String key = u8.getBytes() + NAT_DELIM + u8_2.getBytes();
+ if (!n_a_t_table.containsKey(key)) {
+ n_a_t_table.put(key, new Index(i));
+ }
+ } else if (c instanceof ConstantUtf8) {
+ ConstantUtf8 u = (ConstantUtf8) c;
+ String key = u.getBytes();
+ if (!utf8_table.containsKey(key)) {
+ utf8_table.put(key, new Index(i));
+ }
+ } else if (c instanceof ConstantCP) {
+ ConstantCP m = (ConstantCP) c;
+ ConstantClass clazz = (ConstantClass) constants[m.getClassIndex()];
+ ConstantNameAndType n = (ConstantNameAndType) constants[m.getNameAndTypeIndex()];
+ ConstantUtf8 u8 = (ConstantUtf8) constants[clazz.getNameIndex()];
+ String class_name = u8.getBytes().replace('/', '.');
+ u8 = (ConstantUtf8) constants[n.getNameIndex()];
+ String method_name = u8.getBytes();
+ u8 = (ConstantUtf8) constants[n.getSignatureIndex()];
+ String signature = u8.getBytes();
+ String delim = METHODREF_DELIM;
+ if (c instanceof ConstantInterfaceMethodref) {
+ delim = IMETHODREF_DELIM;
+ } else if (c instanceof ConstantFieldref) {
+ delim = FIELDREF_DELIM;
+ }
+ String key = class_name + delim + method_name + delim + signature;
+ if (!cp_table.containsKey(key)) {
+ cp_table.put(key, new Index(i));
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Initialize with given constant pool.
+ */
+ public ConstantPoolGen(ConstantPool cp) {
+ this(cp.getConstantPool());
+ }
+
+
+ /**
+ * Create empty constant pool.
+ */
+ public ConstantPoolGen() {
+ }
+
+
+ /** Resize internal array of constants.
+ */
+ protected void adjustSize() {
+ if (index + 3 >= size) {
+ Constant[] cs = constants;
+ size *= 2;
+ constants = new Constant[size];
+ System.arraycopy(cs, 0, constants, 0, index);
+ }
+ }
+
+ private Map string_table = new HashMap();
+
+
+ /**
+ * Look for ConstantString in ConstantPool containing String `str'.
+ *
+ * @param str String to search for
+ * @return index on success, -1 otherwise
+ */
+ public int lookupString( String str ) {
+ Index index = (Index) string_table.get(str);
+ return (index != null) ? index.index : -1;
+ }
+
+
+ /**
+ * Add a new String constant to the ConstantPool, if it is not already in there.
+ *
+ * @param str String to add
+ * @return index of entry
+ */
+ public int addString( String str ) {
+ int ret;
+ if ((ret = lookupString(str)) != -1) {
+ return ret; // Already in CP
+ }
+ int utf8 = addUtf8(str);
+ adjustSize();
+ ConstantString s = new ConstantString(utf8);
+ ret = index;
+ constants[index++] = s;
+ if (!string_table.containsKey(str)) {
+ string_table.put(str, new Index(ret));
+ }
+ return ret;
+ }
+
+ private Map class_table = new HashMap();
+
+
+ /**
+ * Look for ConstantClass in ConstantPool named `str'.
+ *
+ * @param str String to search for
+ * @return index on success, -1 otherwise
+ */
+ public int lookupClass( String str ) {
+ Index index = (Index) class_table.get(str.replace('.', '/'));
+ return (index != null) ? index.index : -1;
+ }
+
+
+ private int addClass_( String clazz ) {
+ int ret;
+ if ((ret = lookupClass(clazz)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ ConstantClass c = new ConstantClass(addUtf8(clazz));
+ ret = index;
+ constants[index++] = c;
+ if (!class_table.containsKey(clazz)) {
+ class_table.put(clazz, new Index(ret));
+ }
+ return ret;
+ }
+
+
+ /**
+ * Add a new Class reference to the ConstantPool, if it is not already in there.
+ *
+ * @param str Class to add
+ * @return index of entry
+ */
+ public int addClass( String str ) {
+ return addClass_(str.replace('.', '/'));
+ }
+
+
+ /**
+ * Add a new Class reference to the ConstantPool for a given type.
+ *
+ * @param type Class to add
+ * @return index of entry
+ */
+ public int addClass( ObjectType type ) {
+ return addClass(type.getClassName());
+ }
+
+
+ /**
+ * Add a reference to an array class (e.g. String[][]) as needed by MULTIANEWARRAY
+ * instruction, e.g. to the ConstantPool.
+ *
+ * @param type type of array class
+ * @return index of entry
+ */
+ public int addArrayClass( ArrayType type ) {
+ return addClass_(type.getSignature());
+ }
+
+
+ /**
+ * Look for ConstantInteger in ConstantPool.
+ *
+ * @param n integer number to look for
+ * @return index on success, -1 otherwise
+ */
+ public int lookupInteger( int n ) {
+ for (int i = 1; i < index; i++) {
+ if (constants[i] instanceof ConstantInteger) {
+ ConstantInteger c = (ConstantInteger) constants[i];
+ if (c.getBytes() == n) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Add a new Integer constant to the ConstantPool, if it is not already in there.
+ *
+ * @param n integer number to add
+ * @return index of entry
+ */
+ public int addInteger( int n ) {
+ int ret;
+ if ((ret = lookupInteger(n)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ ret = index;
+ constants[index++] = new ConstantInteger(n);
+ return ret;
+ }
+
+
+ /**
+ * Look for ConstantFloat in ConstantPool.
+ *
+ * @param n Float number to look for
+ * @return index on success, -1 otherwise
+ */
+ public int lookupFloat( float n ) {
+ int bits = Float.floatToIntBits(n);
+ for (int i = 1; i < index; i++) {
+ if (constants[i] instanceof ConstantFloat) {
+ ConstantFloat c = (ConstantFloat) constants[i];
+ if (Float.floatToIntBits(c.getBytes()) == bits) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Add a new Float constant to the ConstantPool, if it is not already in there.
+ *
+ * @param n Float number to add
+ * @return index of entry
+ */
+ public int addFloat( float n ) {
+ int ret;
+ if ((ret = lookupFloat(n)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ ret = index;
+ constants[index++] = new ConstantFloat(n);
+ return ret;
+ }
+
+ private Map utf8_table = new HashMap();
+
+
+ /**
+ * Look for ConstantUtf8 in ConstantPool.
+ *
+ * @param n Utf8 string to look for
+ * @return index on success, -1 otherwise
+ */
+ public int lookupUtf8( String n ) {
+ Index index = (Index) utf8_table.get(n);
+ return (index != null) ? index.index : -1;
+ }
+
+
+ /**
+ * Add a new Utf8 constant to the ConstantPool, if it is not already in there.
+ *
+ * @param n Utf8 string to add
+ * @return index of entry
+ */
+ public int addUtf8( String n ) {
+ int ret;
+ if ((ret = lookupUtf8(n)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ ret = index;
+ constants[index++] = new ConstantUtf8(n);
+ if (!utf8_table.containsKey(n)) {
+ utf8_table.put(n, new Index(ret));
+ }
+ return ret;
+ }
+
+
+ /**
+ * Look for ConstantLong in ConstantPool.
+ *
+ * @param n Long number to look for
+ * @return index on success, -1 otherwise
+ */
+ public int lookupLong( long n ) {
+ for (int i = 1; i < index; i++) {
+ if (constants[i] instanceof ConstantLong) {
+ ConstantLong c = (ConstantLong) constants[i];
+ if (c.getBytes() == n) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Add a new long constant to the ConstantPool, if it is not already in there.
+ *
+ * @param n Long number to add
+ * @return index of entry
+ */
+ public int addLong( long n ) {
+ int ret;
+ if ((ret = lookupLong(n)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ ret = index;
+ constants[index] = new ConstantLong(n);
+ index += 2; // Wastes one entry according to spec
+ return ret;
+ }
+
+
+ /**
+ * Look for ConstantDouble in ConstantPool.
+ *
+ * @param n Double number to look for
+ * @return index on success, -1 otherwise
+ */
+ public int lookupDouble( double n ) {
+ long bits = Double.doubleToLongBits(n);
+ for (int i = 1; i < index; i++) {
+ if (constants[i] instanceof ConstantDouble) {
+ ConstantDouble c = (ConstantDouble) constants[i];
+ if (Double.doubleToLongBits(c.getBytes()) == bits) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Add a new double constant to the ConstantPool, if it is not already in there.
+ *
+ * @param n Double number to add
+ * @return index of entry
+ */
+ public int addDouble( double n ) {
+ int ret;
+ if ((ret = lookupDouble(n)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ ret = index;
+ constants[index] = new ConstantDouble(n);
+ index += 2; // Wastes one entry according to spec
+ return ret;
+ }
+
+ private Map n_a_t_table = new HashMap();
+
+
+ /**
+ * Look for ConstantNameAndType in ConstantPool.
+ *
+ * @param name of variable/method
+ * @param signature of variable/method
+ * @return index on success, -1 otherwise
+ */
+ public int lookupNameAndType( String name, String signature ) {
+ Index _index = (Index) n_a_t_table.get(name + NAT_DELIM + signature);
+ return (_index != null) ? _index.index : -1;
+ }
+
+
+ /**
+ * Add a new NameAndType constant to the ConstantPool if it is not already
+ * in there.
+ *
+ * @param name Name string to add
+ * @param signature signature string to add
+ * @return index of entry
+ */
+ public int addNameAndType( String name, String signature ) {
+ int ret;
+ int name_index, signature_index;
+ if ((ret = lookupNameAndType(name, signature)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ name_index = addUtf8(name);
+ signature_index = addUtf8(signature);
+ ret = index;
+ constants[index++] = new ConstantNameAndType(name_index, signature_index);
+ String key = name + NAT_DELIM + signature;
+ if (!n_a_t_table.containsKey(key)) {
+ n_a_t_table.put(key, new Index(ret));
+ }
+ return ret;
+ }
+
+ private Map cp_table = new HashMap();
+
+
+ /**
+ * Look for ConstantMethodref in ConstantPool.
+ *
+ * @param class_name Where to find method
+ * @param method_name Guess what
+ * @param signature return and argument types
+ * @return index on success, -1 otherwise
+ */
+ public int lookupMethodref( String class_name, String method_name, String signature ) {
+ Index index = (Index) cp_table.get(class_name + METHODREF_DELIM + method_name
+ + METHODREF_DELIM + signature);
+ return (index != null) ? index.index : -1;
+ }
+
+
+ public int lookupMethodref( MethodGen method ) {
+ return lookupMethodref(method.getClassName(), method.getName(), method.getSignature());
+ }
+
+
+ /**
+ * Add a new Methodref constant to the ConstantPool, if it is not already
+ * in there.
+ *
+ * @param class_name class name string to add
+ * @param method_name method name string to add
+ * @param signature method signature string to add
+ * @return index of entry
+ */
+ public int addMethodref( String class_name, String method_name, String signature ) {
+ int ret, class_index, name_and_type_index;
+ if ((ret = lookupMethodref(class_name, method_name, signature)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ name_and_type_index = addNameAndType(method_name, signature);
+ class_index = addClass(class_name);
+ ret = index;
+ constants[index++] = new ConstantMethodref(class_index, name_and_type_index);
+ String key = class_name + METHODREF_DELIM + method_name + METHODREF_DELIM + signature;
+ if (!cp_table.containsKey(key)) {
+ cp_table.put(key, new Index(ret));
+ }
+ return ret;
+ }
+
+
+ public int addMethodref( MethodGen method ) {
+ return addMethodref(method.getClassName(), method.getName(), method.getSignature());
+ }
+
+
+ /**
+ * Look for ConstantInterfaceMethodref in ConstantPool.
+ *
+ * @param class_name Where to find method
+ * @param method_name Guess what
+ * @param signature return and argument types
+ * @return index on success, -1 otherwise
+ */
+ public int lookupInterfaceMethodref( String class_name, String method_name, String signature ) {
+ Index index = (Index) cp_table.get(class_name + IMETHODREF_DELIM + method_name
+ + IMETHODREF_DELIM + signature);
+ return (index != null) ? index.index : -1;
+ }
+
+
+ public int lookupInterfaceMethodref( MethodGen method ) {
+ return lookupInterfaceMethodref(method.getClassName(), method.getName(), method
+ .getSignature());
+ }
+
+
+ /**
+ * Add a new InterfaceMethodref constant to the ConstantPool, if it is not already
+ * in there.
+ *
+ * @param class_name class name string to add
+ * @param method_name method name string to add
+ * @param signature signature string to add
+ * @return index of entry
+ */
+ public int addInterfaceMethodref( String class_name, String method_name, String signature ) {
+ int ret, class_index, name_and_type_index;
+ if ((ret = lookupInterfaceMethodref(class_name, method_name, signature)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ class_index = addClass(class_name);
+ name_and_type_index = addNameAndType(method_name, signature);
+ ret = index;
+ constants[index++] = new ConstantInterfaceMethodref(class_index, name_and_type_index);
+ String key = class_name + IMETHODREF_DELIM + method_name + IMETHODREF_DELIM + signature;
+ if (!cp_table.containsKey(key)) {
+ cp_table.put(key, new Index(ret));
+ }
+ return ret;
+ }
+
+
+ public int addInterfaceMethodref( MethodGen method ) {
+ return addInterfaceMethodref(method.getClassName(), method.getName(), method.getSignature());
+ }
+
+
+ /**
+ * Look for ConstantFieldref in ConstantPool.
+ *
+ * @param class_name Where to find method
+ * @param field_name Guess what
+ * @param signature return and argument types
+ * @return index on success, -1 otherwise
+ */
+ public int lookupFieldref( String class_name, String field_name, String signature ) {
+ Index index = (Index) cp_table.get(class_name + FIELDREF_DELIM + field_name
+ + FIELDREF_DELIM + signature);
+ return (index != null) ? index.index : -1;
+ }
+
+
+ /**
+ * Add a new Fieldref constant to the ConstantPool, if it is not already
+ * in there.
+ *
+ * @param class_name class name string to add
+ * @param field_name field name string to add
+ * @param signature signature string to add
+ * @return index of entry
+ */
+ public int addFieldref( String class_name, String field_name, String signature ) {
+ int ret;
+ int class_index, name_and_type_index;
+ if ((ret = lookupFieldref(class_name, field_name, signature)) != -1) {
+ return ret; // Already in CP
+ }
+ adjustSize();
+ class_index = addClass(class_name);
+ name_and_type_index = addNameAndType(field_name, signature);
+ ret = index;
+ constants[index++] = new ConstantFieldref(class_index, name_and_type_index);
+ String key = class_name + FIELDREF_DELIM + field_name + FIELDREF_DELIM + signature;
+ if (!cp_table.containsKey(key)) {
+ cp_table.put(key, new Index(ret));
+ }
+ return ret;
+ }
+
+
+ /**
+ * @param i index in constant pool
+ * @return constant pool entry at index i
+ */
+ public Constant getConstant( int i ) {
+ return constants[i];
+ }
+
+
+ /**
+ * Use with care!
+ *
+ * @param i index in constant pool
+ * @param c new constant pool entry at index i
+ */
+ public void setConstant( int i, Constant c ) {
+ constants[i] = c;
+ }
+
+
+ /**
+ * @return intermediate constant pool
+ */
+ public ConstantPool getConstantPool() {
+ return new ConstantPool(constants);
+ }
+
+
+ /**
+ * @return current size of constant pool
+ */
+ public int getSize() {
+ return index;
+ }
+
+
+ /**
+ * @return constant pool with proper length
+ */
+ public ConstantPool getFinalConstantPool() {
+ Constant[] cs = new Constant[index];
+ System.arraycopy(constants, 0, cs, 0, index);
+ return new ConstantPool(cs);
+ }
+
+
+ /**
+ * @return String representation.
+ */
+ public String toString() {
+ StringBuilder buf = new StringBuilder();
+ for (int i = 1; i < index; i++) {
+ buf.append(i).append(")").append(constants[i]).append("\n");
+ }
+ return buf.toString();
+ }
+
+
+ /** Import constant from another ConstantPool and return new index.
+ */
+ public int addConstant( Constant c, ConstantPoolGen cp ) {
+ Constant[] constants = cp.getConstantPool().getConstantPool();
+ switch (c.getTag()) {
+ case Constants.CONSTANT_String: {
+ ConstantString s = (ConstantString) c;
+ ConstantUtf8 u8 = (ConstantUtf8) constants[s.getStringIndex()];
+ return addString(u8.getBytes());
+ }
+ case Constants.CONSTANT_Class: {
+ ConstantClass s = (ConstantClass) c;
+ ConstantUtf8 u8 = (ConstantUtf8) constants[s.getNameIndex()];
+ return addClass(u8.getBytes());
+ }
+ case Constants.CONSTANT_NameAndType: {
+ ConstantNameAndType n = (ConstantNameAndType) c;
+ ConstantUtf8 u8 = (ConstantUtf8) constants[n.getNameIndex()];
+ ConstantUtf8 u8_2 = (ConstantUtf8) constants[n.getSignatureIndex()];
+ return addNameAndType(u8.getBytes(), u8_2.getBytes());
+ }
+ case Constants.CONSTANT_Utf8:
+ return addUtf8(((ConstantUtf8) c).getBytes());
+ case Constants.CONSTANT_Double:
+ return addDouble(((ConstantDouble) c).getBytes());
+ case Constants.CONSTANT_Float:
+ return addFloat(((ConstantFloat) c).getBytes());
+ case Constants.CONSTANT_Long:
+ return addLong(((ConstantLong) c).getBytes());
+ case Constants.CONSTANT_Integer:
+ return addInteger(((ConstantInteger) c).getBytes());
+ case Constants.CONSTANT_InterfaceMethodref:
+ case Constants.CONSTANT_Methodref:
+ case Constants.CONSTANT_Fieldref: {
+ ConstantCP m = (ConstantCP) c;
+ ConstantClass clazz = (ConstantClass) constants[m.getClassIndex()];
+ ConstantNameAndType n = (ConstantNameAndType) constants[m.getNameAndTypeIndex()];
+ ConstantUtf8 u8 = (ConstantUtf8) constants[clazz.getNameIndex()];
+ String class_name = u8.getBytes().replace('/', '.');
+ u8 = (ConstantUtf8) constants[n.getNameIndex()];
+ String name = u8.getBytes();
+ u8 = (ConstantUtf8) constants[n.getSignatureIndex()];
+ String signature = u8.getBytes();
+ switch (c.getTag()) {
+ case Constants.CONSTANT_InterfaceMethodref:
+ return addInterfaceMethodref(class_name, name, signature);
+ case Constants.CONSTANT_Methodref:
+ return addMethodref(class_name, name, signature);
+ case Constants.CONSTANT_Fieldref:
+ return addFieldref(class_name, name, signature);
+ default: // Never reached
+ throw new RuntimeException("Unknown constant type " + c);
+ }
+ }
+ default: // Never reached
+ throw new RuntimeException("Unknown constant type " + c);
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPushInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPushInstruction.java
index 91fa45d5..e0848e8c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPushInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConstantPushInstruction.java
@@ -1,32 +1,32 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes a push instruction that produces a literal on the stack
- * such as SIPUSH, BIPUSH, ICONST, etc.
- *
- * @version $Id: ConstantPushInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
-
- * @see ICONST
- * @see SIPUSH
- */
-public interface ConstantPushInstruction extends PushInstruction, TypedInstruction {
-
- public Number getValue();
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes a push instruction that produces a literal on the stack
+ * such as SIPUSH, BIPUSH, ICONST, etc.
+ *
+ * @version $Id: ConstantPushInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+
+ * @see ICONST
+ * @see SIPUSH
+ */
+public interface ConstantPushInstruction extends PushInstruction, TypedInstruction {
+
+ public Number getValue();
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConversionInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConversionInstruction.java
index a89347f2..84c959c7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConversionInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ConversionInstruction.java
@@ -1,76 +1,76 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Super class for the x2y family of instructions.
- *
- * @version $Id: ConversionInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class ConversionInstruction extends Instruction implements TypedInstruction,
- StackProducer, StackConsumer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ConversionInstruction() {
- }
-
-
- /**
- * @param opcode opcode of instruction
- */
- protected ConversionInstruction(short opcode) {
- super(opcode, (short) 1);
- }
-
-
- /** @return type associated with the instruction
- */
- public Type getType( ConstantPoolGen cp ) {
- switch (opcode) {
- case Constants.D2I:
- case Constants.F2I:
- case Constants.L2I:
- return Type.INT;
- case Constants.D2F:
- case Constants.I2F:
- case Constants.L2F:
- return Type.FLOAT;
- case Constants.D2L:
- case Constants.F2L:
- case Constants.I2L:
- return Type.LONG;
- case Constants.F2D:
- case Constants.I2D:
- case Constants.L2D:
- return Type.DOUBLE;
- case Constants.I2B:
- return Type.BYTE;
- case Constants.I2C:
- return Type.CHAR;
- case Constants.I2S:
- return Type.SHORT;
- default: // Never reached
- throw new ClassGenException("Unknown type " + opcode);
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Super class for the x2y family of instructions.
+ *
+ * @version $Id: ConversionInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class ConversionInstruction extends Instruction implements TypedInstruction,
+ StackProducer, StackConsumer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ConversionInstruction() {
+ }
+
+
+ /**
+ * @param opcode opcode of instruction
+ */
+ protected ConversionInstruction(short opcode) {
+ super(opcode, (short) 1);
+ }
+
+
+ /** @return type associated with the instruction
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ switch (opcode) {
+ case Constants.D2I:
+ case Constants.F2I:
+ case Constants.L2I:
+ return Type.INT;
+ case Constants.D2F:
+ case Constants.I2F:
+ case Constants.L2F:
+ return Type.FLOAT;
+ case Constants.D2L:
+ case Constants.F2L:
+ case Constants.I2L:
+ return Type.LONG;
+ case Constants.F2D:
+ case Constants.I2D:
+ case Constants.L2D:
+ return Type.DOUBLE;
+ case Constants.I2B:
+ return Type.BYTE;
+ case Constants.I2C:
+ return Type.CHAR;
+ case Constants.I2S:
+ return Type.SHORT;
+ default: // Never reached
+ throw new ClassGenException("Unknown type " + opcode);
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2F.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2F.java
index 363ebd10..097be804 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2F.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2F.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * D2F - Convert double to float
- * Stack: ..., value.word1, value.word2 -> ..., result
- *
- * @version $Id: D2F.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class D2F extends ConversionInstruction {
-
- /** Convert double to float
- */
- public D2F() {
- super(org.apache.bcel5_2_0.Constants.D2F);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitD2F(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * D2F - Convert double to float
+ * Stack: ..., value.word1, value.word2 -> ..., result
+ *
+ * @version $Id: D2F.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class D2F extends ConversionInstruction {
+
+ /** Convert double to float
+ */
+ public D2F() {
+ super(org.apache.bcel5_2_0.Constants.D2F);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitD2F(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2I.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2I.java
index 12f4ef2a..5a729a2f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2I.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2I.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * D2I - Convert double to int
- * Stack: ..., value.word1, value.word2 -> ..., result
- *
- * @version $Id: D2I.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class D2I extends ConversionInstruction {
-
- /** Convert double to int
- */
- public D2I() {
- super(org.apache.bcel5_2_0.Constants.D2I);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitD2I(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * D2I - Convert double to int
+ * Stack: ..., value.word1, value.word2 -> ..., result
+ *
+ * @version $Id: D2I.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class D2I extends ConversionInstruction {
+
+ /** Convert double to int
+ */
+ public D2I() {
+ super(org.apache.bcel5_2_0.Constants.D2I);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitD2I(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2L.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2L.java
index cee5473d..3e6f9aa2 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2L.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/D2L.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * D2L - Convert double to long
- * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
- * @version $Id: D2L.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class D2L extends ConversionInstruction {
-
- /** Convert double to long
- */
- public D2L() {
- super(org.apache.bcel5_2_0.Constants.D2L);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitD2L(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * D2L - Convert double to long
+ * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
+ *
+ * @version $Id: D2L.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class D2L extends ConversionInstruction {
+
+ /** Convert double to long
+ */
+ public D2L() {
+ super(org.apache.bcel5_2_0.Constants.D2L);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitD2L(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DADD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DADD.java
index 518d16ef..f69f1264 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DADD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DADD.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DADD - Add doubles
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result1.word2
- *
- * @version $Id: DADD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DADD extends ArithmeticInstruction {
-
- /** Add doubles
- */
- public DADD() {
- super(org.apache.bcel5_2_0.Constants.DADD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitDADD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DADD - Add doubles
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result1.word2
+ *
+ * @version $Id: DADD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DADD extends ArithmeticInstruction {
+
+ /** Add doubles
+ */
+ public DADD() {
+ super(org.apache.bcel5_2_0.Constants.DADD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitDADD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DALOAD.java
index b789be53..3365ed71 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DALOAD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DALOAD - Load double from array
- * Stack: ..., arrayref, index -> ..., result.word1, result.word2
- *
- * @version $Id: DALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DALOAD extends ArrayInstruction implements StackProducer {
-
- /** Load double from array
- */
- public DALOAD() {
- super(org.apache.bcel5_2_0.Constants.DALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitDALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DALOAD - Load double from array
+ * Stack: ..., arrayref, index -> ..., result.word1, result.word2
+ *
+ * @version $Id: DALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DALOAD extends ArrayInstruction implements StackProducer {
+
+ /** Load double from array
+ */
+ public DALOAD() {
+ super(org.apache.bcel5_2_0.Constants.DALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitDALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DASTORE.java
index 7464b6ed..c4438068 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DASTORE.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DASTORE - Store into double array
- * Stack: ..., arrayref, index, value.word1, value.word2 -> ...
- *
- * @version $Id: DASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DASTORE extends ArrayInstruction implements StackConsumer {
-
- /** Store double into array
- */
- public DASTORE() {
- super(org.apache.bcel5_2_0.Constants.DASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitDASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DASTORE - Store into double array
+ * Stack: ..., arrayref, index, value.word1, value.word2 -> ...
+ *
+ * @version $Id: DASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DASTORE extends ArrayInstruction implements StackConsumer {
+
+ /** Store double into array
+ */
+ public DASTORE() {
+ super(org.apache.bcel5_2_0.Constants.DASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitDASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPG.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPG.java
index 90132254..e899bfb5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPG.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPG.java
@@ -1,55 +1,55 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DCMPG - Compare doubles: value1 > value2
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result
- *
- * @version $Id: DCMPG.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DCMPG extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
-
- public DCMPG() {
- super(org.apache.bcel5_2_0.Constants.DCMPG, (short) 1);
- }
-
-
- /** @return Type.DOUBLE
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.DOUBLE;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitDCMPG(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DCMPG - Compare doubles: value1 > value2
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result
+ *
+ * @version $Id: DCMPG.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DCMPG extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
+
+ public DCMPG() {
+ super(org.apache.bcel5_2_0.Constants.DCMPG, (short) 1);
+ }
+
+
+ /** @return Type.DOUBLE
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.DOUBLE;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitDCMPG(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPL.java
index c3cbb6a7..0046e67e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCMPL.java
@@ -1,55 +1,55 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DCMPL - Compare doubles: value1 < value2
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result
- *
- * @version $Id: DCMPL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DCMPL extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
-
- public DCMPL() {
- super(org.apache.bcel5_2_0.Constants.DCMPL, (short) 1);
- }
-
-
- /** @return Type.DOUBLE
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.DOUBLE;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitDCMPL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DCMPL - Compare doubles: value1 < value2
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result
+ *
+ * @version $Id: DCMPL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DCMPL extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
+
+ public DCMPL() {
+ super(org.apache.bcel5_2_0.Constants.DCMPL, (short) 1);
+ }
+
+
+ /** @return Type.DOUBLE
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.DOUBLE;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitDCMPL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCONST.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCONST.java
index 71fba77f..6e52cd8b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCONST.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DCONST.java
@@ -1,80 +1,80 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DCONST - Push 0.0 or 1.0, other values cause an exception
- *
- * Stack: ... -> ...,
- *
- * @version $Id: DCONST.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DCONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
-
- private double value;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- DCONST() {
- }
-
-
- public DCONST(double f) {
- super(org.apache.bcel5_2_0.Constants.DCONST_0, (short) 1);
- if (f == 0.0) {
- opcode = org.apache.bcel5_2_0.Constants.DCONST_0;
- } else if (f == 1.0) {
- opcode = org.apache.bcel5_2_0.Constants.DCONST_1;
- } else {
- throw new ClassGenException("DCONST can be used only for 0.0 and 1.0: " + f);
- }
- value = f;
- }
-
-
- public Number getValue() {
- return new Double(value);
- }
-
-
- /** @return Type.DOUBLE
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.DOUBLE;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitPushInstruction(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitConstantPushInstruction(this);
- v.visitDCONST(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DCONST - Push 0.0 or 1.0, other values cause an exception
+ *
+ * Stack: ... -> ...,
+ *
+ * @version $Id: DCONST.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DCONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
+
+ private double value;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ DCONST() {
+ }
+
+
+ public DCONST(double f) {
+ super(org.apache.bcel5_2_0.Constants.DCONST_0, (short) 1);
+ if (f == 0.0) {
+ opcode = org.apache.bcel5_2_0.Constants.DCONST_0;
+ } else if (f == 1.0) {
+ opcode = org.apache.bcel5_2_0.Constants.DCONST_1;
+ } else {
+ throw new ClassGenException("DCONST can be used only for 0.0 and 1.0: " + f);
+ }
+ value = f;
+ }
+
+
+ public Number getValue() {
+ return new Double(value);
+ }
+
+
+ /** @return Type.DOUBLE
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.DOUBLE;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitPushInstruction(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitConstantPushInstruction(this);
+ v.visitDCONST(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DDIV.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DDIV.java
index 402408d5..cf4db179 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DDIV.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DDIV.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DDIV - Divide doubles
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: DDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DDIV extends ArithmeticInstruction {
-
- /** Divide doubles
- */
- public DDIV() {
- super(org.apache.bcel5_2_0.Constants.DDIV);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitDDIV(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DDIV - Divide doubles
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: DDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DDIV extends ArithmeticInstruction {
+
+ /** Divide doubles
+ */
+ public DDIV() {
+ super(org.apache.bcel5_2_0.Constants.DDIV);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitDDIV(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DLOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DLOAD.java
index 47609f74..599b7d80 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DLOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DLOAD.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DLOAD - Load double from local variable
- * Stack ... -> ..., result.word1, result.word2
- *
- * @version $Id: DLOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DLOAD extends LoadInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- DLOAD() {
- super(org.apache.bcel5_2_0.Constants.DLOAD, org.apache.bcel5_2_0.Constants.DLOAD_0);
- }
-
-
- /** Load double from local variable
- * @param n index of local variable
- */
- public DLOAD(int n) {
- super(org.apache.bcel5_2_0.Constants.DLOAD, org.apache.bcel5_2_0.Constants.DLOAD_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitDLOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DLOAD - Load double from local variable
+ * Stack ... -> ..., result.word1, result.word2
+ *
+ * @version $Id: DLOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DLOAD extends LoadInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ DLOAD() {
+ super(org.apache.bcel5_2_0.Constants.DLOAD, org.apache.bcel5_2_0.Constants.DLOAD_0);
+ }
+
+
+ /** Load double from local variable
+ * @param n index of local variable
+ */
+ public DLOAD(int n) {
+ super(org.apache.bcel5_2_0.Constants.DLOAD, org.apache.bcel5_2_0.Constants.DLOAD_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitDLOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DMUL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DMUL.java
index 6aba328f..844b37e9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DMUL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DMUL.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DMUL - Multiply doubles
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: DMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DMUL extends ArithmeticInstruction {
-
- /** Multiply doubles
- */
- public DMUL() {
- super(org.apache.bcel5_2_0.Constants.DMUL);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitDMUL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DMUL - Multiply doubles
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: DMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DMUL extends ArithmeticInstruction {
+
+ /** Multiply doubles
+ */
+ public DMUL() {
+ super(org.apache.bcel5_2_0.Constants.DMUL);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitDMUL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DNEG.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DNEG.java
index 639ac38d..9ed8e67a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DNEG.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DNEG.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DNEG - Negate double
- * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
- * @version $Id: DNEG.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DNEG extends ArithmeticInstruction {
-
- public DNEG() {
- super(org.apache.bcel5_2_0.Constants.DNEG);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitDNEG(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DNEG - Negate double
+ * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
+ *
+ * @version $Id: DNEG.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DNEG extends ArithmeticInstruction {
+
+ public DNEG() {
+ super(org.apache.bcel5_2_0.Constants.DNEG);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitDNEG(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DREM.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DREM.java
index 909f06eb..05aa2ec9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DREM.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DREM.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DREM - Remainder of doubles
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: DREM.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DREM extends ArithmeticInstruction {
-
- /** Remainder of doubles
- */
- public DREM() {
- super(org.apache.bcel5_2_0.Constants.DREM);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitDREM(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DREM - Remainder of doubles
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: DREM.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DREM extends ArithmeticInstruction {
+
+ /** Remainder of doubles
+ */
+ public DREM() {
+ super(org.apache.bcel5_2_0.Constants.DREM);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitDREM(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DRETURN.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DRETURN.java
index 3f76bff1..dbc53a1b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DRETURN.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DRETURN.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DRETURN - Return double from method
- * Stack: ..., value.word1, value.word2 -> <empty>
- *
- * @version $Id: DRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DRETURN extends ReturnInstruction {
-
- /** Return double from method
- */
- public DRETURN() {
- super(org.apache.bcel5_2_0.Constants.DRETURN);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitReturnInstruction(this);
- v.visitDRETURN(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DRETURN - Return double from method
+ * Stack: ..., value.word1, value.word2 -> <empty>
+ *
+ * @version $Id: DRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DRETURN extends ReturnInstruction {
+
+ /** Return double from method
+ */
+ public DRETURN() {
+ super(org.apache.bcel5_2_0.Constants.DRETURN);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitReturnInstruction(this);
+ v.visitDRETURN(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSTORE.java
index fe25a259..da16d8ff 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSTORE.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DSTORE - Store double into local variable
- * Stack: ..., value.word1, value.word2 -> ...
- *
- * @version $Id: DSTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DSTORE extends StoreInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- DSTORE() {
- super(org.apache.bcel5_2_0.Constants.DSTORE, org.apache.bcel5_2_0.Constants.DSTORE_0);
- }
-
-
- /** Store double into local variable
- * @param n index of local variable
- */
- public DSTORE(int n) {
- super(org.apache.bcel5_2_0.Constants.DSTORE, org.apache.bcel5_2_0.Constants.DSTORE_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitDSTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DSTORE - Store double into local variable
+ * Stack: ..., value.word1, value.word2 -> ...
+ *
+ * @version $Id: DSTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DSTORE extends StoreInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ DSTORE() {
+ super(org.apache.bcel5_2_0.Constants.DSTORE, org.apache.bcel5_2_0.Constants.DSTORE_0);
+ }
+
+
+ /** Store double into local variable
+ * @param n index of local variable
+ */
+ public DSTORE(int n) {
+ super(org.apache.bcel5_2_0.Constants.DSTORE, org.apache.bcel5_2_0.Constants.DSTORE_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitDSTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSUB.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSUB.java
index 4d56b1ba..81cb2252 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSUB.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DSUB.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DSUB - Substract doubles
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: DSUB.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DSUB extends ArithmeticInstruction {
-
- /** Substract doubles
- */
- public DSUB() {
- super(org.apache.bcel5_2_0.Constants.DSUB);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitDSUB(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DSUB - Substract doubles
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: DSUB.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DSUB extends ArithmeticInstruction {
+
+ /** Substract doubles
+ */
+ public DSUB() {
+ super(org.apache.bcel5_2_0.Constants.DSUB);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitDSUB(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP.java
index d9ef76b1..ad948f10 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP.java
@@ -1,47 +1,47 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DUP - Duplicate top operand stack word
- * Stack: ..., word -> ..., word, word
- *
- * @version $Id: DUP.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DUP extends StackInstruction implements PushInstruction {
-
- public DUP() {
- super(org.apache.bcel5_2_0.Constants.DUP);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitPushInstruction(this);
- v.visitStackInstruction(this);
- v.visitDUP(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DUP - Duplicate top operand stack word
+ * Stack: ..., word -> ..., word, word
+ *
+ * @version $Id: DUP.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DUP extends StackInstruction implements PushInstruction {
+
+ public DUP() {
+ super(org.apache.bcel5_2_0.Constants.DUP);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitPushInstruction(this);
+ v.visitStackInstruction(this);
+ v.visitDUP(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2.java
index 6f1076be..914ce9a5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2.java
@@ -1,47 +1,47 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DUP2 - Duplicate two top operand stack words
- * Stack: ..., word2, word1 -> ..., word2, word1, word2, word1
- *
- * @version $Id: DUP2.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DUP2 extends StackInstruction implements PushInstruction {
-
- public DUP2() {
- super(org.apache.bcel5_2_0.Constants.DUP2);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitPushInstruction(this);
- v.visitStackInstruction(this);
- v.visitDUP2(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DUP2 - Duplicate two top operand stack words
+ * Stack: ..., word2, word1 -> ..., word2, word1, word2, word1
+ *
+ * @version $Id: DUP2.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DUP2 extends StackInstruction implements PushInstruction {
+
+ public DUP2() {
+ super(org.apache.bcel5_2_0.Constants.DUP2);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitPushInstruction(this);
+ v.visitStackInstruction(this);
+ v.visitDUP2(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X1.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X1.java
index c8a2e1d3..6e5890ec 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X1.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X1.java
@@ -1,45 +1,45 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DUP2_X1 - Duplicate two top operand stack words and put three down
- * Stack: ..., word3, word2, word1 -> ..., word2, word1, word3, word2, word1
- *
- * @version $Id: DUP2_X1.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DUP2_X1 extends StackInstruction {
-
- public DUP2_X1() {
- super(org.apache.bcel5_2_0.Constants.DUP2_X1);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackInstruction(this);
- v.visitDUP2_X1(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DUP2_X1 - Duplicate two top operand stack words and put three down
+ * Stack: ..., word3, word2, word1 -> ..., word2, word1, word3, word2, word1
+ *
+ * @version $Id: DUP2_X1.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DUP2_X1 extends StackInstruction {
+
+ public DUP2_X1() {
+ super(org.apache.bcel5_2_0.Constants.DUP2_X1);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackInstruction(this);
+ v.visitDUP2_X1(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X2.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X2.java
index 4dfc8026..3128c2b0 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X2.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP2_X2.java
@@ -1,45 +1,45 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DUP2_X2 - Duplicate two top operand stack words and put four down
- * Stack: ..., word4, word3, word2, word1 -> ..., word2, word1, word4, word3, word2, word1
- *
- * @version $Id: DUP2_X2.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DUP2_X2 extends StackInstruction {
-
- public DUP2_X2() {
- super(org.apache.bcel5_2_0.Constants.DUP2_X2);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackInstruction(this);
- v.visitDUP2_X2(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DUP2_X2 - Duplicate two top operand stack words and put four down
+ * Stack: ..., word4, word3, word2, word1 -> ..., word2, word1, word4, word3, word2, word1
+ *
+ * @version $Id: DUP2_X2.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DUP2_X2 extends StackInstruction {
+
+ public DUP2_X2() {
+ super(org.apache.bcel5_2_0.Constants.DUP2_X2);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackInstruction(this);
+ v.visitDUP2_X2(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X1.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X1.java
index 9afc3e87..8390c99c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X1.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X1.java
@@ -1,45 +1,45 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DUP_X1 - Duplicate top operand stack word and put two down
- * Stack: ..., word2, word1 -> ..., word1, word2, word1
- *
- * @version $Id: DUP_X1.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DUP_X1 extends StackInstruction {
-
- public DUP_X1() {
- super(org.apache.bcel5_2_0.Constants.DUP_X1);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackInstruction(this);
- v.visitDUP_X1(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DUP_X1 - Duplicate top operand stack word and put two down
+ * Stack: ..., word2, word1 -> ..., word1, word2, word1
+ *
+ * @version $Id: DUP_X1.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DUP_X1 extends StackInstruction {
+
+ public DUP_X1() {
+ super(org.apache.bcel5_2_0.Constants.DUP_X1);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackInstruction(this);
+ v.visitDUP_X1(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X2.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X2.java
index 9b66559f..5d34136f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X2.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/DUP_X2.java
@@ -1,45 +1,45 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * DUP_X2 - Duplicate top operand stack word and put three down
- * Stack: ..., word3, word2, word1 -> ..., word1, word3, word2, word1
- *
- * @version $Id: DUP_X2.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class DUP_X2 extends StackInstruction {
-
- public DUP_X2() {
- super(org.apache.bcel5_2_0.Constants.DUP_X2);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackInstruction(this);
- v.visitDUP_X2(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * DUP_X2 - Duplicate top operand stack word and put three down
+ * Stack: ..., word3, word2, word1 -> ..., word1, word3, word2, word1
+ *
+ * @version $Id: DUP_X2.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class DUP_X2 extends StackInstruction {
+
+ public DUP_X2() {
+ super(org.apache.bcel5_2_0.Constants.DUP_X2);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackInstruction(this);
+ v.visitDUP_X2(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/EmptyVisitor.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/EmptyVisitor.java
index ff2f111b..f7b182b8 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/EmptyVisitor.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/EmptyVisitor.java
@@ -1,745 +1,745 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Supplies empty method bodies to be overridden by subclasses.
- *
- * @version $Id: EmptyVisitor.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class EmptyVisitor implements Visitor {
-
- public void visitStackInstruction( StackInstruction obj ) {
- }
-
-
- public void visitLocalVariableInstruction( LocalVariableInstruction obj ) {
- }
-
-
- public void visitBranchInstruction( BranchInstruction obj ) {
- }
-
-
- public void visitLoadClass( LoadClass obj ) {
- }
-
-
- public void visitFieldInstruction( FieldInstruction obj ) {
- }
-
-
- public void visitIfInstruction( IfInstruction obj ) {
- }
-
-
- public void visitConversionInstruction( ConversionInstruction obj ) {
- }
-
-
- public void visitPopInstruction( PopInstruction obj ) {
- }
-
-
- public void visitJsrInstruction( JsrInstruction obj ) {
- }
-
-
- public void visitGotoInstruction( GotoInstruction obj ) {
- }
-
-
- public void visitStoreInstruction( StoreInstruction obj ) {
- }
-
-
- public void visitTypedInstruction( TypedInstruction obj ) {
- }
-
-
- public void visitSelect( Select obj ) {
- }
-
-
- public void visitUnconditionalBranch( UnconditionalBranch obj ) {
- }
-
-
- public void visitPushInstruction( PushInstruction obj ) {
- }
-
-
- public void visitArithmeticInstruction( ArithmeticInstruction obj ) {
- }
-
-
- public void visitCPInstruction( CPInstruction obj ) {
- }
-
-
- public void visitInvokeInstruction( InvokeInstruction obj ) {
- }
-
-
- public void visitArrayInstruction( ArrayInstruction obj ) {
- }
-
-
- public void visitAllocationInstruction( AllocationInstruction obj ) {
- }
-
-
- public void visitReturnInstruction( ReturnInstruction obj ) {
- }
-
-
- public void visitFieldOrMethod( FieldOrMethod obj ) {
- }
-
-
- public void visitConstantPushInstruction( ConstantPushInstruction obj ) {
- }
-
-
- public void visitExceptionThrower( ExceptionThrower obj ) {
- }
-
-
- public void visitLoadInstruction( LoadInstruction obj ) {
- }
-
-
- public void visitVariableLengthInstruction( VariableLengthInstruction obj ) {
- }
-
-
- public void visitStackProducer( StackProducer obj ) {
- }
-
-
- public void visitStackConsumer( StackConsumer obj ) {
- }
-
-
- public void visitACONST_NULL( ACONST_NULL obj ) {
- }
-
-
- public void visitGETSTATIC( GETSTATIC obj ) {
- }
-
-
- public void visitIF_ICMPLT( IF_ICMPLT obj ) {
- }
-
-
- public void visitMONITOREXIT( MONITOREXIT obj ) {
- }
-
-
- public void visitIFLT( IFLT obj ) {
- }
-
-
- public void visitLSTORE( LSTORE obj ) {
- }
-
-
- public void visitPOP2( POP2 obj ) {
- }
-
-
- public void visitBASTORE( BASTORE obj ) {
- }
-
-
- public void visitISTORE( ISTORE obj ) {
- }
-
-
- public void visitCHECKCAST( CHECKCAST obj ) {
- }
-
-
- public void visitFCMPG( FCMPG obj ) {
- }
-
-
- public void visitI2F( I2F obj ) {
- }
-
-
- public void visitATHROW( ATHROW obj ) {
- }
-
-
- public void visitDCMPL( DCMPL obj ) {
- }
-
-
- public void visitARRAYLENGTH( ARRAYLENGTH obj ) {
- }
-
-
- public void visitDUP( DUP obj ) {
- }
-
-
- public void visitINVOKESTATIC( INVOKESTATIC obj ) {
- }
-
-
- public void visitLCONST( LCONST obj ) {
- }
-
-
- public void visitDREM( DREM obj ) {
- }
-
-
- public void visitIFGE( IFGE obj ) {
- }
-
-
- public void visitCALOAD( CALOAD obj ) {
- }
-
-
- public void visitLASTORE( LASTORE obj ) {
- }
-
-
- public void visitI2D( I2D obj ) {
- }
-
-
- public void visitDADD( DADD obj ) {
- }
-
-
- public void visitINVOKESPECIAL( INVOKESPECIAL obj ) {
- }
-
-
- public void visitIAND( IAND obj ) {
- }
-
-
- public void visitPUTFIELD( PUTFIELD obj ) {
- }
-
-
- public void visitILOAD( ILOAD obj ) {
- }
-
-
- public void visitDLOAD( DLOAD obj ) {
- }
-
-
- public void visitDCONST( DCONST obj ) {
- }
-
-
- public void visitNEW( NEW obj ) {
- }
-
-
- public void visitIFNULL( IFNULL obj ) {
- }
-
-
- public void visitLSUB( LSUB obj ) {
- }
-
-
- public void visitL2I( L2I obj ) {
- }
-
-
- public void visitISHR( ISHR obj ) {
- }
-
-
- public void visitTABLESWITCH( TABLESWITCH obj ) {
- }
-
-
- public void visitIINC( IINC obj ) {
- }
-
-
- public void visitDRETURN( DRETURN obj ) {
- }
-
-
- public void visitFSTORE( FSTORE obj ) {
- }
-
-
- public void visitDASTORE( DASTORE obj ) {
- }
-
-
- public void visitIALOAD( IALOAD obj ) {
- }
-
-
- public void visitDDIV( DDIV obj ) {
- }
-
-
- public void visitIF_ICMPGE( IF_ICMPGE obj ) {
- }
-
-
- public void visitLAND( LAND obj ) {
- }
-
-
- public void visitIDIV( IDIV obj ) {
- }
-
-
- public void visitLOR( LOR obj ) {
- }
-
-
- public void visitCASTORE( CASTORE obj ) {
- }
-
-
- public void visitFREM( FREM obj ) {
- }
-
-
- public void visitLDC( LDC obj ) {
- }
-
-
- public void visitBIPUSH( BIPUSH obj ) {
- }
-
-
- public void visitDSTORE( DSTORE obj ) {
- }
-
-
- public void visitF2L( F2L obj ) {
- }
-
-
- public void visitFMUL( FMUL obj ) {
- }
-
-
- public void visitLLOAD( LLOAD obj ) {
- }
-
-
- public void visitJSR( JSR obj ) {
- }
-
-
- public void visitFSUB( FSUB obj ) {
- }
-
-
- public void visitSASTORE( SASTORE obj ) {
- }
-
-
- public void visitALOAD( ALOAD obj ) {
- }
-
-
- public void visitDUP2_X2( DUP2_X2 obj ) {
- }
-
-
- public void visitRETURN( RETURN obj ) {
- }
-
-
- public void visitDALOAD( DALOAD obj ) {
- }
-
-
- public void visitSIPUSH( SIPUSH obj ) {
- }
-
-
- public void visitDSUB( DSUB obj ) {
- }
-
-
- public void visitL2F( L2F obj ) {
- }
-
-
- public void visitIF_ICMPGT( IF_ICMPGT obj ) {
- }
-
-
- public void visitF2D( F2D obj ) {
- }
-
-
- public void visitI2L( I2L obj ) {
- }
-
-
- public void visitIF_ACMPNE( IF_ACMPNE obj ) {
- }
-
-
- public void visitPOP( POP obj ) {
- }
-
-
- public void visitI2S( I2S obj ) {
- }
-
-
- public void visitIFEQ( IFEQ obj ) {
- }
-
-
- public void visitSWAP( SWAP obj ) {
- }
-
-
- public void visitIOR( IOR obj ) {
- }
-
-
- public void visitIREM( IREM obj ) {
- }
-
-
- public void visitIASTORE( IASTORE obj ) {
- }
-
-
- public void visitNEWARRAY( NEWARRAY obj ) {
- }
-
-
- public void visitINVOKEINTERFACE( INVOKEINTERFACE obj ) {
- }
-
-
- public void visitINEG( INEG obj ) {
- }
-
-
- public void visitLCMP( LCMP obj ) {
- }
-
-
- public void visitJSR_W( JSR_W obj ) {
- }
-
-
- public void visitMULTIANEWARRAY( MULTIANEWARRAY obj ) {
- }
-
-
- public void visitDUP_X2( DUP_X2 obj ) {
- }
-
-
- public void visitSALOAD( SALOAD obj ) {
- }
-
-
- public void visitIFNONNULL( IFNONNULL obj ) {
- }
-
-
- public void visitDMUL( DMUL obj ) {
- }
-
-
- public void visitIFNE( IFNE obj ) {
- }
-
-
- public void visitIF_ICMPLE( IF_ICMPLE obj ) {
- }
-
-
- public void visitLDC2_W( LDC2_W obj ) {
- }
-
-
- public void visitGETFIELD( GETFIELD obj ) {
- }
-
-
- public void visitLADD( LADD obj ) {
- }
-
-
- public void visitNOP( NOP obj ) {
- }
-
-
- public void visitFALOAD( FALOAD obj ) {
- }
-
-
- public void visitINSTANCEOF( INSTANCEOF obj ) {
- }
-
-
- public void visitIFLE( IFLE obj ) {
- }
-
-
- public void visitLXOR( LXOR obj ) {
- }
-
-
- public void visitLRETURN( LRETURN obj ) {
- }
-
-
- public void visitFCONST( FCONST obj ) {
- }
-
-
- public void visitIUSHR( IUSHR obj ) {
- }
-
-
- public void visitBALOAD( BALOAD obj ) {
- }
-
-
- public void visitDUP2( DUP2 obj ) {
- }
-
-
- public void visitIF_ACMPEQ( IF_ACMPEQ obj ) {
- }
-
-
- public void visitIMPDEP1( IMPDEP1 obj ) {
- }
-
-
- public void visitMONITORENTER( MONITORENTER obj ) {
- }
-
-
- public void visitLSHL( LSHL obj ) {
- }
-
-
- public void visitDCMPG( DCMPG obj ) {
- }
-
-
- public void visitD2L( D2L obj ) {
- }
-
-
- public void visitIMPDEP2( IMPDEP2 obj ) {
- }
-
-
- public void visitL2D( L2D obj ) {
- }
-
-
- public void visitRET( RET obj ) {
- }
-
-
- public void visitIFGT( IFGT obj ) {
- }
-
-
- public void visitIXOR( IXOR obj ) {
- }
-
-
- public void visitINVOKEVIRTUAL( INVOKEVIRTUAL obj ) {
- }
-
-
- public void visitFASTORE( FASTORE obj ) {
- }
-
-
- public void visitIRETURN( IRETURN obj ) {
- }
-
-
- public void visitIF_ICMPNE( IF_ICMPNE obj ) {
- }
-
-
- public void visitFLOAD( FLOAD obj ) {
- }
-
-
- public void visitLDIV( LDIV obj ) {
- }
-
-
- public void visitPUTSTATIC( PUTSTATIC obj ) {
- }
-
-
- public void visitAALOAD( AALOAD obj ) {
- }
-
-
- public void visitD2I( D2I obj ) {
- }
-
-
- public void visitIF_ICMPEQ( IF_ICMPEQ obj ) {
- }
-
-
- public void visitAASTORE( AASTORE obj ) {
- }
-
-
- public void visitARETURN( ARETURN obj ) {
- }
-
-
- public void visitDUP2_X1( DUP2_X1 obj ) {
- }
-
-
- public void visitFNEG( FNEG obj ) {
- }
-
-
- public void visitGOTO_W( GOTO_W obj ) {
- }
-
-
- public void visitD2F( D2F obj ) {
- }
-
-
- public void visitGOTO( GOTO obj ) {
- }
-
-
- public void visitISUB( ISUB obj ) {
- }
-
-
- public void visitF2I( F2I obj ) {
- }
-
-
- public void visitDNEG( DNEG obj ) {
- }
-
-
- public void visitICONST( ICONST obj ) {
- }
-
-
- public void visitFDIV( FDIV obj ) {
- }
-
-
- public void visitI2B( I2B obj ) {
- }
-
-
- public void visitLNEG( LNEG obj ) {
- }
-
-
- public void visitLREM( LREM obj ) {
- }
-
-
- public void visitIMUL( IMUL obj ) {
- }
-
-
- public void visitIADD( IADD obj ) {
- }
-
-
- public void visitLSHR( LSHR obj ) {
- }
-
-
- public void visitLOOKUPSWITCH( LOOKUPSWITCH obj ) {
- }
-
-
- public void visitDUP_X1( DUP_X1 obj ) {
- }
-
-
- public void visitFCMPL( FCMPL obj ) {
- }
-
-
- public void visitI2C( I2C obj ) {
- }
-
-
- public void visitLMUL( LMUL obj ) {
- }
-
-
- public void visitLUSHR( LUSHR obj ) {
- }
-
-
- public void visitISHL( ISHL obj ) {
- }
-
-
- public void visitLALOAD( LALOAD obj ) {
- }
-
-
- public void visitASTORE( ASTORE obj ) {
- }
-
-
- public void visitANEWARRAY( ANEWARRAY obj ) {
- }
-
-
- public void visitFRETURN( FRETURN obj ) {
- }
-
-
- public void visitFADD( FADD obj ) {
- }
-
-
- public void visitBREAKPOINT( BREAKPOINT obj ) {
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Supplies empty method bodies to be overridden by subclasses.
+ *
+ * @version $Id: EmptyVisitor.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class EmptyVisitor implements Visitor {
+
+ public void visitStackInstruction( StackInstruction obj ) {
+ }
+
+
+ public void visitLocalVariableInstruction( LocalVariableInstruction obj ) {
+ }
+
+
+ public void visitBranchInstruction( BranchInstruction obj ) {
+ }
+
+
+ public void visitLoadClass( LoadClass obj ) {
+ }
+
+
+ public void visitFieldInstruction( FieldInstruction obj ) {
+ }
+
+
+ public void visitIfInstruction( IfInstruction obj ) {
+ }
+
+
+ public void visitConversionInstruction( ConversionInstruction obj ) {
+ }
+
+
+ public void visitPopInstruction( PopInstruction obj ) {
+ }
+
+
+ public void visitJsrInstruction( JsrInstruction obj ) {
+ }
+
+
+ public void visitGotoInstruction( GotoInstruction obj ) {
+ }
+
+
+ public void visitStoreInstruction( StoreInstruction obj ) {
+ }
+
+
+ public void visitTypedInstruction( TypedInstruction obj ) {
+ }
+
+
+ public void visitSelect( Select obj ) {
+ }
+
+
+ public void visitUnconditionalBranch( UnconditionalBranch obj ) {
+ }
+
+
+ public void visitPushInstruction( PushInstruction obj ) {
+ }
+
+
+ public void visitArithmeticInstruction( ArithmeticInstruction obj ) {
+ }
+
+
+ public void visitCPInstruction( CPInstruction obj ) {
+ }
+
+
+ public void visitInvokeInstruction( InvokeInstruction obj ) {
+ }
+
+
+ public void visitArrayInstruction( ArrayInstruction obj ) {
+ }
+
+
+ public void visitAllocationInstruction( AllocationInstruction obj ) {
+ }
+
+
+ public void visitReturnInstruction( ReturnInstruction obj ) {
+ }
+
+
+ public void visitFieldOrMethod( FieldOrMethod obj ) {
+ }
+
+
+ public void visitConstantPushInstruction( ConstantPushInstruction obj ) {
+ }
+
+
+ public void visitExceptionThrower( ExceptionThrower obj ) {
+ }
+
+
+ public void visitLoadInstruction( LoadInstruction obj ) {
+ }
+
+
+ public void visitVariableLengthInstruction( VariableLengthInstruction obj ) {
+ }
+
+
+ public void visitStackProducer( StackProducer obj ) {
+ }
+
+
+ public void visitStackConsumer( StackConsumer obj ) {
+ }
+
+
+ public void visitACONST_NULL( ACONST_NULL obj ) {
+ }
+
+
+ public void visitGETSTATIC( GETSTATIC obj ) {
+ }
+
+
+ public void visitIF_ICMPLT( IF_ICMPLT obj ) {
+ }
+
+
+ public void visitMONITOREXIT( MONITOREXIT obj ) {
+ }
+
+
+ public void visitIFLT( IFLT obj ) {
+ }
+
+
+ public void visitLSTORE( LSTORE obj ) {
+ }
+
+
+ public void visitPOP2( POP2 obj ) {
+ }
+
+
+ public void visitBASTORE( BASTORE obj ) {
+ }
+
+
+ public void visitISTORE( ISTORE obj ) {
+ }
+
+
+ public void visitCHECKCAST( CHECKCAST obj ) {
+ }
+
+
+ public void visitFCMPG( FCMPG obj ) {
+ }
+
+
+ public void visitI2F( I2F obj ) {
+ }
+
+
+ public void visitATHROW( ATHROW obj ) {
+ }
+
+
+ public void visitDCMPL( DCMPL obj ) {
+ }
+
+
+ public void visitARRAYLENGTH( ARRAYLENGTH obj ) {
+ }
+
+
+ public void visitDUP( DUP obj ) {
+ }
+
+
+ public void visitINVOKESTATIC( INVOKESTATIC obj ) {
+ }
+
+
+ public void visitLCONST( LCONST obj ) {
+ }
+
+
+ public void visitDREM( DREM obj ) {
+ }
+
+
+ public void visitIFGE( IFGE obj ) {
+ }
+
+
+ public void visitCALOAD( CALOAD obj ) {
+ }
+
+
+ public void visitLASTORE( LASTORE obj ) {
+ }
+
+
+ public void visitI2D( I2D obj ) {
+ }
+
+
+ public void visitDADD( DADD obj ) {
+ }
+
+
+ public void visitINVOKESPECIAL( INVOKESPECIAL obj ) {
+ }
+
+
+ public void visitIAND( IAND obj ) {
+ }
+
+
+ public void visitPUTFIELD( PUTFIELD obj ) {
+ }
+
+
+ public void visitILOAD( ILOAD obj ) {
+ }
+
+
+ public void visitDLOAD( DLOAD obj ) {
+ }
+
+
+ public void visitDCONST( DCONST obj ) {
+ }
+
+
+ public void visitNEW( NEW obj ) {
+ }
+
+
+ public void visitIFNULL( IFNULL obj ) {
+ }
+
+
+ public void visitLSUB( LSUB obj ) {
+ }
+
+
+ public void visitL2I( L2I obj ) {
+ }
+
+
+ public void visitISHR( ISHR obj ) {
+ }
+
+
+ public void visitTABLESWITCH( TABLESWITCH obj ) {
+ }
+
+
+ public void visitIINC( IINC obj ) {
+ }
+
+
+ public void visitDRETURN( DRETURN obj ) {
+ }
+
+
+ public void visitFSTORE( FSTORE obj ) {
+ }
+
+
+ public void visitDASTORE( DASTORE obj ) {
+ }
+
+
+ public void visitIALOAD( IALOAD obj ) {
+ }
+
+
+ public void visitDDIV( DDIV obj ) {
+ }
+
+
+ public void visitIF_ICMPGE( IF_ICMPGE obj ) {
+ }
+
+
+ public void visitLAND( LAND obj ) {
+ }
+
+
+ public void visitIDIV( IDIV obj ) {
+ }
+
+
+ public void visitLOR( LOR obj ) {
+ }
+
+
+ public void visitCASTORE( CASTORE obj ) {
+ }
+
+
+ public void visitFREM( FREM obj ) {
+ }
+
+
+ public void visitLDC( LDC obj ) {
+ }
+
+
+ public void visitBIPUSH( BIPUSH obj ) {
+ }
+
+
+ public void visitDSTORE( DSTORE obj ) {
+ }
+
+
+ public void visitF2L( F2L obj ) {
+ }
+
+
+ public void visitFMUL( FMUL obj ) {
+ }
+
+
+ public void visitLLOAD( LLOAD obj ) {
+ }
+
+
+ public void visitJSR( JSR obj ) {
+ }
+
+
+ public void visitFSUB( FSUB obj ) {
+ }
+
+
+ public void visitSASTORE( SASTORE obj ) {
+ }
+
+
+ public void visitALOAD( ALOAD obj ) {
+ }
+
+
+ public void visitDUP2_X2( DUP2_X2 obj ) {
+ }
+
+
+ public void visitRETURN( RETURN obj ) {
+ }
+
+
+ public void visitDALOAD( DALOAD obj ) {
+ }
+
+
+ public void visitSIPUSH( SIPUSH obj ) {
+ }
+
+
+ public void visitDSUB( DSUB obj ) {
+ }
+
+
+ public void visitL2F( L2F obj ) {
+ }
+
+
+ public void visitIF_ICMPGT( IF_ICMPGT obj ) {
+ }
+
+
+ public void visitF2D( F2D obj ) {
+ }
+
+
+ public void visitI2L( I2L obj ) {
+ }
+
+
+ public void visitIF_ACMPNE( IF_ACMPNE obj ) {
+ }
+
+
+ public void visitPOP( POP obj ) {
+ }
+
+
+ public void visitI2S( I2S obj ) {
+ }
+
+
+ public void visitIFEQ( IFEQ obj ) {
+ }
+
+
+ public void visitSWAP( SWAP obj ) {
+ }
+
+
+ public void visitIOR( IOR obj ) {
+ }
+
+
+ public void visitIREM( IREM obj ) {
+ }
+
+
+ public void visitIASTORE( IASTORE obj ) {
+ }
+
+
+ public void visitNEWARRAY( NEWARRAY obj ) {
+ }
+
+
+ public void visitINVOKEINTERFACE( INVOKEINTERFACE obj ) {
+ }
+
+
+ public void visitINEG( INEG obj ) {
+ }
+
+
+ public void visitLCMP( LCMP obj ) {
+ }
+
+
+ public void visitJSR_W( JSR_W obj ) {
+ }
+
+
+ public void visitMULTIANEWARRAY( MULTIANEWARRAY obj ) {
+ }
+
+
+ public void visitDUP_X2( DUP_X2 obj ) {
+ }
+
+
+ public void visitSALOAD( SALOAD obj ) {
+ }
+
+
+ public void visitIFNONNULL( IFNONNULL obj ) {
+ }
+
+
+ public void visitDMUL( DMUL obj ) {
+ }
+
+
+ public void visitIFNE( IFNE obj ) {
+ }
+
+
+ public void visitIF_ICMPLE( IF_ICMPLE obj ) {
+ }
+
+
+ public void visitLDC2_W( LDC2_W obj ) {
+ }
+
+
+ public void visitGETFIELD( GETFIELD obj ) {
+ }
+
+
+ public void visitLADD( LADD obj ) {
+ }
+
+
+ public void visitNOP( NOP obj ) {
+ }
+
+
+ public void visitFALOAD( FALOAD obj ) {
+ }
+
+
+ public void visitINSTANCEOF( INSTANCEOF obj ) {
+ }
+
+
+ public void visitIFLE( IFLE obj ) {
+ }
+
+
+ public void visitLXOR( LXOR obj ) {
+ }
+
+
+ public void visitLRETURN( LRETURN obj ) {
+ }
+
+
+ public void visitFCONST( FCONST obj ) {
+ }
+
+
+ public void visitIUSHR( IUSHR obj ) {
+ }
+
+
+ public void visitBALOAD( BALOAD obj ) {
+ }
+
+
+ public void visitDUP2( DUP2 obj ) {
+ }
+
+
+ public void visitIF_ACMPEQ( IF_ACMPEQ obj ) {
+ }
+
+
+ public void visitIMPDEP1( IMPDEP1 obj ) {
+ }
+
+
+ public void visitMONITORENTER( MONITORENTER obj ) {
+ }
+
+
+ public void visitLSHL( LSHL obj ) {
+ }
+
+
+ public void visitDCMPG( DCMPG obj ) {
+ }
+
+
+ public void visitD2L( D2L obj ) {
+ }
+
+
+ public void visitIMPDEP2( IMPDEP2 obj ) {
+ }
+
+
+ public void visitL2D( L2D obj ) {
+ }
+
+
+ public void visitRET( RET obj ) {
+ }
+
+
+ public void visitIFGT( IFGT obj ) {
+ }
+
+
+ public void visitIXOR( IXOR obj ) {
+ }
+
+
+ public void visitINVOKEVIRTUAL( INVOKEVIRTUAL obj ) {
+ }
+
+
+ public void visitFASTORE( FASTORE obj ) {
+ }
+
+
+ public void visitIRETURN( IRETURN obj ) {
+ }
+
+
+ public void visitIF_ICMPNE( IF_ICMPNE obj ) {
+ }
+
+
+ public void visitFLOAD( FLOAD obj ) {
+ }
+
+
+ public void visitLDIV( LDIV obj ) {
+ }
+
+
+ public void visitPUTSTATIC( PUTSTATIC obj ) {
+ }
+
+
+ public void visitAALOAD( AALOAD obj ) {
+ }
+
+
+ public void visitD2I( D2I obj ) {
+ }
+
+
+ public void visitIF_ICMPEQ( IF_ICMPEQ obj ) {
+ }
+
+
+ public void visitAASTORE( AASTORE obj ) {
+ }
+
+
+ public void visitARETURN( ARETURN obj ) {
+ }
+
+
+ public void visitDUP2_X1( DUP2_X1 obj ) {
+ }
+
+
+ public void visitFNEG( FNEG obj ) {
+ }
+
+
+ public void visitGOTO_W( GOTO_W obj ) {
+ }
+
+
+ public void visitD2F( D2F obj ) {
+ }
+
+
+ public void visitGOTO( GOTO obj ) {
+ }
+
+
+ public void visitISUB( ISUB obj ) {
+ }
+
+
+ public void visitF2I( F2I obj ) {
+ }
+
+
+ public void visitDNEG( DNEG obj ) {
+ }
+
+
+ public void visitICONST( ICONST obj ) {
+ }
+
+
+ public void visitFDIV( FDIV obj ) {
+ }
+
+
+ public void visitI2B( I2B obj ) {
+ }
+
+
+ public void visitLNEG( LNEG obj ) {
+ }
+
+
+ public void visitLREM( LREM obj ) {
+ }
+
+
+ public void visitIMUL( IMUL obj ) {
+ }
+
+
+ public void visitIADD( IADD obj ) {
+ }
+
+
+ public void visitLSHR( LSHR obj ) {
+ }
+
+
+ public void visitLOOKUPSWITCH( LOOKUPSWITCH obj ) {
+ }
+
+
+ public void visitDUP_X1( DUP_X1 obj ) {
+ }
+
+
+ public void visitFCMPL( FCMPL obj ) {
+ }
+
+
+ public void visitI2C( I2C obj ) {
+ }
+
+
+ public void visitLMUL( LMUL obj ) {
+ }
+
+
+ public void visitLUSHR( LUSHR obj ) {
+ }
+
+
+ public void visitISHL( ISHL obj ) {
+ }
+
+
+ public void visitLALOAD( LALOAD obj ) {
+ }
+
+
+ public void visitASTORE( ASTORE obj ) {
+ }
+
+
+ public void visitANEWARRAY( ANEWARRAY obj ) {
+ }
+
+
+ public void visitFRETURN( FRETURN obj ) {
+ }
+
+
+ public void visitFADD( FADD obj ) {
+ }
+
+
+ public void visitBREAKPOINT( BREAKPOINT obj ) {
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ExceptionThrower.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ExceptionThrower.java
index 6a3f92c3..4a6973ff 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ExceptionThrower.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ExceptionThrower.java
@@ -1,42 +1,42 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denote an instruction that may throw a run-time or a linking
- * exception (or both) during execution. This is not quite the truth
- * as such; because all instructions may throw an
- * java.lang.VirtualMachineError. These exceptions are omitted.
- *
- * The Lava Language Specification specifies exactly which
- * RUN-TIME and which LINKING exceptions each
- * instruction may throw which is reflected by the implementers. Due
- * to the structure of the JVM specification, it may be possible that
- * an Instruction implementing this interface returns a Class[] of
- * size 0.
- *
- * Please note that we speak of an "exception" here when we mean any
- * "Throwable" object; so this term is equally used for "Exception"
- * and "Error" objects.
- *
- * @version $Id: ExceptionThrower.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author Enver Haase
- */
-public interface ExceptionThrower {
-
- public java.lang.Class[] getExceptions();
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denote an instruction that may throw a run-time or a linking
+ * exception (or both) during execution. This is not quite the truth
+ * as such; because all instructions may throw an
+ * java.lang.VirtualMachineError. These exceptions are omitted.
+ *
+ * The Lava Language Specification specifies exactly which
+ * RUN-TIME and which LINKING exceptions each
+ * instruction may throw which is reflected by the implementers. Due
+ * to the structure of the JVM specification, it may be possible that
+ * an Instruction implementing this interface returns a Class[] of
+ * size 0.
+ *
+ * Please note that we speak of an "exception" here when we mean any
+ * "Throwable" object; so this term is equally used for "Exception"
+ * and "Error" objects.
+ *
+ * @version $Id: ExceptionThrower.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author Enver Haase
+ */
+public interface ExceptionThrower {
+
+ public java.lang.Class[] getExceptions();
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2D.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2D.java
index 8bd545ee..89af7665 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2D.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2D.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * F2D - Convert float to double
- * Stack: ..., value -> ..., result.word1, result.word2
- *
- * @version $Id: F2D.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class F2D extends ConversionInstruction {
-
- /** Convert float to double
- */
- public F2D() {
- super(org.apache.bcel5_2_0.Constants.F2D);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitF2D(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * F2D - Convert float to double
+ * Stack: ..., value -> ..., result.word1, result.word2
+ *
+ * @version $Id: F2D.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class F2D extends ConversionInstruction {
+
+ /** Convert float to double
+ */
+ public F2D() {
+ super(org.apache.bcel5_2_0.Constants.F2D);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitF2D(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2I.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2I.java
index 863b2750..7095b318 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2I.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2I.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * F2I - Convert float to int
- * Stack: ..., value -> ..., result
- *
- * @version $Id: F2I.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class F2I extends ConversionInstruction {
-
- /** Convert float to int
- */
- public F2I() {
- super(org.apache.bcel5_2_0.Constants.F2I);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitF2I(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * F2I - Convert float to int
+ * Stack: ..., value -> ..., result
+ *
+ * @version $Id: F2I.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class F2I extends ConversionInstruction {
+
+ /** Convert float to int
+ */
+ public F2I() {
+ super(org.apache.bcel5_2_0.Constants.F2I);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitF2I(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2L.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2L.java
index baa1ed67..816c4a25 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2L.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/F2L.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * F2L - Convert float to long
- * Stack: ..., value -> ..., result.word1, result.word2
- *
- * @version $Id: F2L.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class F2L extends ConversionInstruction {
-
- /** Convert float to long
- */
- public F2L() {
- super(org.apache.bcel5_2_0.Constants.F2L);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitF2L(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * F2L - Convert float to long
+ * Stack: ..., value -> ..., result.word1, result.word2
+ *
+ * @version $Id: F2L.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class F2L extends ConversionInstruction {
+
+ /** Convert float to long
+ */
+ public F2L() {
+ super(org.apache.bcel5_2_0.Constants.F2L);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitF2L(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FADD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FADD.java
index 394dc524..e9336f0c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FADD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FADD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FADD - Add floats
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: FADD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FADD extends ArithmeticInstruction {
-
- /** Add floats
- */
- public FADD() {
- super(org.apache.bcel5_2_0.Constants.FADD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitFADD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FADD - Add floats
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: FADD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FADD extends ArithmeticInstruction {
+
+ /** Add floats
+ */
+ public FADD() {
+ super(org.apache.bcel5_2_0.Constants.FADD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitFADD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FALOAD.java
index 42e77efa..d58a047b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FALOAD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FALOAD - Load float from array
- * Stack: ..., arrayref, index -> ..., value
- *
- * @version $Id: FALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FALOAD extends ArrayInstruction implements StackProducer {
-
- /** Load float from array
- */
- public FALOAD() {
- super(org.apache.bcel5_2_0.Constants.FALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitFALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FALOAD - Load float from array
+ * Stack: ..., arrayref, index -> ..., value
+ *
+ * @version $Id: FALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FALOAD extends ArrayInstruction implements StackProducer {
+
+ /** Load float from array
+ */
+ public FALOAD() {
+ super(org.apache.bcel5_2_0.Constants.FALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitFALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FASTORE.java
index f0c3b544..656a36d4 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FASTORE.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FASTORE - Store into float array
- * Stack: ..., arrayref, index, value -> ...
- *
- * @version $Id: FASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FASTORE extends ArrayInstruction implements StackConsumer {
-
- /** Store float into array
- */
- public FASTORE() {
- super(org.apache.bcel5_2_0.Constants.FASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitFASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FASTORE - Store into float array
+ * Stack: ..., arrayref, index, value -> ...
+ *
+ * @version $Id: FASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FASTORE extends ArrayInstruction implements StackConsumer {
+
+ /** Store float into array
+ */
+ public FASTORE() {
+ super(org.apache.bcel5_2_0.Constants.FASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitFASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPG.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPG.java
index ee4c4d03..ef4dedc1 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPG.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPG.java
@@ -1,54 +1,54 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FCMPG - Compare floats: value1 > value2
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: FCMPG.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FCMPG extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
-
- public FCMPG() {
- super(org.apache.bcel5_2_0.Constants.FCMPG, (short) 1);
- }
-
-
- /** @return Type.FLOAT
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.FLOAT;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitFCMPG(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FCMPG - Compare floats: value1 > value2
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: FCMPG.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FCMPG extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
+
+ public FCMPG() {
+ super(org.apache.bcel5_2_0.Constants.FCMPG, (short) 1);
+ }
+
+
+ /** @return Type.FLOAT
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.FLOAT;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitFCMPG(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPL.java
index 35d93891..c8b7c179 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCMPL.java
@@ -1,54 +1,54 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FCMPL - Compare floats: value1 < value2
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: FCMPL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FCMPL extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
-
- public FCMPL() {
- super(org.apache.bcel5_2_0.Constants.FCMPL, (short) 1);
- }
-
-
- /** @return Type.FLOAT
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.FLOAT;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitFCMPL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FCMPL - Compare floats: value1 < value2
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: FCMPL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FCMPL extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
+
+ public FCMPL() {
+ super(org.apache.bcel5_2_0.Constants.FCMPL, (short) 1);
+ }
+
+
+ /** @return Type.FLOAT
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.FLOAT;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitFCMPL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCONST.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCONST.java
index e339dcec..d1025e2c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCONST.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FCONST.java
@@ -1,82 +1,82 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
- *
- * Stack: ... -> ...,
- *
- * @version $Id: FCONST.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FCONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
-
- private float value;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- FCONST() {
- }
-
-
- public FCONST(float f) {
- super(org.apache.bcel5_2_0.Constants.FCONST_0, (short) 1);
- if (f == 0.0) {
- opcode = org.apache.bcel5_2_0.Constants.FCONST_0;
- } else if (f == 1.0) {
- opcode = org.apache.bcel5_2_0.Constants.FCONST_1;
- } else if (f == 2.0) {
- opcode = org.apache.bcel5_2_0.Constants.FCONST_2;
- } else {
- throw new ClassGenException("FCONST can be used only for 0.0, 1.0 and 2.0: " + f);
- }
- value = f;
- }
-
-
- public Number getValue() {
- return new Float(value);
- }
-
-
- /** @return Type.FLOAT
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.FLOAT;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitPushInstruction(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitConstantPushInstruction(this);
- v.visitFCONST(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
+ *
+ * Stack: ... -> ...,
+ *
+ * @version $Id: FCONST.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FCONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
+
+ private float value;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ FCONST() {
+ }
+
+
+ public FCONST(float f) {
+ super(org.apache.bcel5_2_0.Constants.FCONST_0, (short) 1);
+ if (f == 0.0) {
+ opcode = org.apache.bcel5_2_0.Constants.FCONST_0;
+ } else if (f == 1.0) {
+ opcode = org.apache.bcel5_2_0.Constants.FCONST_1;
+ } else if (f == 2.0) {
+ opcode = org.apache.bcel5_2_0.Constants.FCONST_2;
+ } else {
+ throw new ClassGenException("FCONST can be used only for 0.0, 1.0 and 2.0: " + f);
+ }
+ value = f;
+ }
+
+
+ public Number getValue() {
+ return new Float(value);
+ }
+
+
+ /** @return Type.FLOAT
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.FLOAT;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitPushInstruction(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitConstantPushInstruction(this);
+ v.visitFCONST(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FDIV.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FDIV.java
index d28ef766..b47744e2 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FDIV.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FDIV.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FDIV - Divide floats
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: FDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FDIV extends ArithmeticInstruction {
-
- /** Divide floats
- */
- public FDIV() {
- super(org.apache.bcel5_2_0.Constants.FDIV);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitFDIV(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FDIV - Divide floats
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: FDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FDIV extends ArithmeticInstruction {
+
+ /** Divide floats
+ */
+ public FDIV() {
+ super(org.apache.bcel5_2_0.Constants.FDIV);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitFDIV(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FLOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FLOAD.java
index 75099cc0..e532f510 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FLOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FLOAD.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FLOAD - Load float from local variable
- * Stack ... -> ..., result
- *
- * @version $Id: FLOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FLOAD extends LoadInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- FLOAD() {
- super(org.apache.bcel5_2_0.Constants.FLOAD, org.apache.bcel5_2_0.Constants.FLOAD_0);
- }
-
-
- /** Load float from local variable
- * @param n index of local variable
- */
- public FLOAD(int n) {
- super(org.apache.bcel5_2_0.Constants.FLOAD, org.apache.bcel5_2_0.Constants.FLOAD_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitFLOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FLOAD - Load float from local variable
+ * Stack ... -> ..., result
+ *
+ * @version $Id: FLOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FLOAD extends LoadInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ FLOAD() {
+ super(org.apache.bcel5_2_0.Constants.FLOAD, org.apache.bcel5_2_0.Constants.FLOAD_0);
+ }
+
+
+ /** Load float from local variable
+ * @param n index of local variable
+ */
+ public FLOAD(int n) {
+ super(org.apache.bcel5_2_0.Constants.FLOAD, org.apache.bcel5_2_0.Constants.FLOAD_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitFLOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FMUL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FMUL.java
index 5c8d382c..be524051 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FMUL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FMUL.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FMUL - Multiply floats
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: FMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FMUL extends ArithmeticInstruction {
-
- /** Multiply floats
- */
- public FMUL() {
- super(org.apache.bcel5_2_0.Constants.FMUL);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitFMUL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FMUL - Multiply floats
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: FMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FMUL extends ArithmeticInstruction {
+
+ /** Multiply floats
+ */
+ public FMUL() {
+ super(org.apache.bcel5_2_0.Constants.FMUL);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitFMUL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FNEG.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FNEG.java
index d7f8e012..8185d746 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FNEG.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FNEG.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FNEG - Negate float
- * Stack: ..., value -> ..., result
- *
- * @version $Id: FNEG.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FNEG extends ArithmeticInstruction {
-
- public FNEG() {
- super(org.apache.bcel5_2_0.Constants.FNEG);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitFNEG(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FNEG - Negate float
+ * Stack: ..., value -> ..., result
+ *
+ * @version $Id: FNEG.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FNEG extends ArithmeticInstruction {
+
+ public FNEG() {
+ super(org.apache.bcel5_2_0.Constants.FNEG);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitFNEG(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FREM.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FREM.java
index 35f57da3..25b60cfe 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FREM.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FREM.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FREM - Remainder of floats
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: FREM.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FREM extends ArithmeticInstruction {
-
- /** Remainder of floats
- */
- public FREM() {
- super(org.apache.bcel5_2_0.Constants.FREM);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitFREM(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FREM - Remainder of floats
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: FREM.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FREM extends ArithmeticInstruction {
+
+ /** Remainder of floats
+ */
+ public FREM() {
+ super(org.apache.bcel5_2_0.Constants.FREM);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitFREM(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FRETURN.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FRETURN.java
index e487c498..56476abb 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FRETURN.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FRETURN.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FRETURN - Return float from method
- * Stack: ..., value -> <empty>
- *
- * @version $Id: FRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FRETURN extends ReturnInstruction {
-
- /** Return float from method
- */
- public FRETURN() {
- super(org.apache.bcel5_2_0.Constants.FRETURN);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitReturnInstruction(this);
- v.visitFRETURN(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FRETURN - Return float from method
+ * Stack: ..., value -> <empty>
+ *
+ * @version $Id: FRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FRETURN extends ReturnInstruction {
+
+ /** Return float from method
+ */
+ public FRETURN() {
+ super(org.apache.bcel5_2_0.Constants.FRETURN);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitReturnInstruction(this);
+ v.visitFRETURN(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSTORE.java
index e34af929..8118e1bf 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSTORE.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FSTORE - Store float into local variable
- * Stack: ..., value -> ...
- *
- * @version $Id: FSTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FSTORE extends StoreInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- FSTORE() {
- super(org.apache.bcel5_2_0.Constants.FSTORE, org.apache.bcel5_2_0.Constants.FSTORE_0);
- }
-
-
- /** Store float into local variable
- * @param n index of local variable
- */
- public FSTORE(int n) {
- super(org.apache.bcel5_2_0.Constants.FSTORE, org.apache.bcel5_2_0.Constants.FSTORE_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitFSTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FSTORE - Store float into local variable
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: FSTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FSTORE extends StoreInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ FSTORE() {
+ super(org.apache.bcel5_2_0.Constants.FSTORE, org.apache.bcel5_2_0.Constants.FSTORE_0);
+ }
+
+
+ /** Store float into local variable
+ * @param n index of local variable
+ */
+ public FSTORE(int n) {
+ super(org.apache.bcel5_2_0.Constants.FSTORE, org.apache.bcel5_2_0.Constants.FSTORE_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitFSTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSUB.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSUB.java
index 431f9064..21f46224 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSUB.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FSUB.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * FSUB - Substract floats
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: FSUB.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class FSUB extends ArithmeticInstruction {
-
- /** Substract floats
- */
- public FSUB() {
- super(org.apache.bcel5_2_0.Constants.FSUB);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitFSUB(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * FSUB - Substract floats
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: FSUB.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class FSUB extends ArithmeticInstruction {
+
+ /** Substract floats
+ */
+ public FSUB() {
+ super(org.apache.bcel5_2_0.Constants.FSUB);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitFSUB(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGen.java
index 88718658..a991f61d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGen.java
@@ -1,358 +1,358 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.Attribute;
-import org.apache.bcel5_2_0.classfile.Constant;
-import org.apache.bcel5_2_0.classfile.ConstantObject;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.ConstantValue;
-import org.apache.bcel5_2_0.classfile.Field;
-import org.apache.bcel5_2_0.classfile.Utility;
-import org.apache.bcel5_2_0.util.BCELComparator;
-
-/**
- * Template class for building up a field. The only extraordinary thing
- * one can do is to add a constant value attribute to a field (which must of
- * course be compatible with to the declared type).
- *
- * @version $Id: FieldGen.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Field
- */
-public class FieldGen extends FieldGenOrMethodGen {
-
- private Object value = null;
- private static BCELComparator _cmp = new BCELComparator() {
-
- public boolean equals( Object o1, Object o2 ) {
- FieldGen THIS = (FieldGen) o1;
- FieldGen THAT = (FieldGen) o2;
- return THIS.getName().equals(THAT.getName())
- && THIS.getSignature().equals(THAT.getSignature());
- }
-
-
- public int hashCode( Object o ) {
- FieldGen THIS = (FieldGen) o;
- return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
- }
- };
-
-
- /**
- * Declare a field. If it is static (isStatic() == true) and has a
- * basic type like int or String it may have an initial value
- * associated with it as defined by setInitValue().
- *
- * @param access_flags access qualifiers
- * @param type field type
- * @param name field name
- * @param cp constant pool
- */
- public FieldGen(int access_flags, Type type, String name, ConstantPoolGen cp) {
- setAccessFlags(access_flags);
- setType(type);
- setName(name);
- setConstantPool(cp);
- }
-
-
- /**
- * Instantiate from existing field.
- *
- * @param field Field object
- * @param cp constant pool (must contain the same entries as the field's constant pool)
- */
- public FieldGen(Field field, ConstantPoolGen cp) {
- this(field.getAccessFlags(), Type.getType(field.getSignature()), field.getName(), cp);
- Attribute[] attrs = field.getAttributes();
- for (int i = 0; i < attrs.length; i++) {
- if (attrs[i] instanceof ConstantValue) {
- setValue(((ConstantValue) attrs[i]).getConstantValueIndex());
- } else {
- addAttribute(attrs[i]);
- }
- }
- }
-
-
- private void setValue( int index ) {
- ConstantPool cp = this.cp.getConstantPool();
- Constant c = cp.getConstant(index);
- value = ((ConstantObject) c).getConstantValue(cp);
- }
-
-
- /**
- * Set (optional) initial value of field, otherwise it will be set to null/0/false
- * by the JVM automatically.
- */
- public void setInitValue( String str ) {
- checkType(new ObjectType("java.lang.String"));
- if (str != null) {
- value = str;
- }
- }
-
-
- public void setInitValue( long l ) {
- checkType(Type.LONG);
- if (l != 0L) {
- value = new Long(l);
- }
- }
-
-
- public void setInitValue( int i ) {
- checkType(Type.INT);
- if (i != 0) {
- value = new Integer(i);
- }
- }
-
-
- public void setInitValue( short s ) {
- checkType(Type.SHORT);
- if (s != 0) {
- value = new Integer(s);
- }
- }
-
-
- public void setInitValue( char c ) {
- checkType(Type.CHAR);
- if (c != 0) {
- value = new Integer(c);
- }
- }
-
-
- public void setInitValue( byte b ) {
- checkType(Type.BYTE);
- if (b != 0) {
- value = new Integer(b);
- }
- }
-
-
- public void setInitValue( boolean b ) {
- checkType(Type.BOOLEAN);
- if (b) {
- value = new Integer(1);
- }
- }
-
-
- public void setInitValue( float f ) {
- checkType(Type.FLOAT);
- if (f != 0.0) {
- value = new Float(f);
- }
- }
-
-
- public void setInitValue( double d ) {
- checkType(Type.DOUBLE);
- if (d != 0.0) {
- value = new Double(d);
- }
- }
-
-
- /** Remove any initial value.
- */
- public void cancelInitValue() {
- value = null;
- }
-
-
- private void checkType( Type atype ) {
- if (type == null) {
- throw new ClassGenException("You haven't defined the type of the field yet");
- }
- if (!isFinal()) {
- throw new ClassGenException("Only final fields may have an initial value!");
- }
- if (!type.equals(atype)) {
- throw new ClassGenException("Types are not compatible: " + type + " vs. " + atype);
- }
- }
-
-
- /**
- * Get field object after having set up all necessary values.
- */
- public Field getField() {
- String signature = getSignature();
- int name_index = cp.addUtf8(name);
- int signature_index = cp.addUtf8(signature);
- if (value != null) {
- checkType(type);
- int index = addConstant();
- addAttribute(new ConstantValue(cp.addUtf8("ConstantValue"), 2, index, cp
- .getConstantPool()));
- }
- return new Field(access_flags, name_index, signature_index, getAttributes(), cp
- .getConstantPool());
- }
-
-
- private int addConstant() {
- switch (type.getType()) {
- case Constants.T_INT:
- case Constants.T_CHAR:
- case Constants.T_BYTE:
- case Constants.T_BOOLEAN:
- case Constants.T_SHORT:
- return cp.addInteger(((Integer) value).intValue());
- case Constants.T_FLOAT:
- return cp.addFloat(((Float) value).floatValue());
- case Constants.T_DOUBLE:
- return cp.addDouble(((Double) value).doubleValue());
- case Constants.T_LONG:
- return cp.addLong(((Long) value).longValue());
- case Constants.T_REFERENCE:
- return cp.addString(((String) value));
- default:
- throw new RuntimeException("Oops: Unhandled : " + type.getType());
- }
- }
-
-
- public String getSignature() {
- return type.getSignature();
- }
-
- private List observers;
-
-
- /** Add observer for this object.
- */
- public void addObserver( FieldObserver o ) {
- if (observers == null) {
- observers = new ArrayList();
- }
- observers.add(o);
- }
-
-
- /** Remove observer for this object.
- */
- public void removeObserver( FieldObserver o ) {
- if (observers != null) {
- observers.remove(o);
- }
- }
-
-
- /** Call notify() method on all observers. This method is not called
- * automatically whenever the state has changed, but has to be
- * called by the user after he has finished editing the object.
- */
- public void update() {
- if (observers != null) {
- for (Iterator e = observers.iterator(); e.hasNext();) {
- ((FieldObserver) e.next()).notify(this);
- }
- }
- }
-
-
- public String getInitValue() {
- if (value != null) {
- return value.toString();
- } else {
- return null;
- }
- }
-
-
- /**
- * Return string representation close to declaration format,
- * `public static final short MAX = 100', e.g..
- *
- * @return String representation of field
- */
- public final String toString() {
- String name, signature, access; // Short cuts to constant pool
- access = Utility.accessToString(access_flags);
- access = access.equals("") ? "" : (access + " ");
- signature = type.toString();
- name = getName();
- StringBuilder buf = new StringBuilder(32);
- buf.append(access).append(signature).append(" ").append(name);
- String value = getInitValue();
- if (value != null) {
- buf.append(" = ").append(value);
- }
- return buf.toString();
- }
-
-
- /** @return deep copy of this field
- */
- public FieldGen copy( ConstantPoolGen cp ) {
- FieldGen fg = (FieldGen) clone();
- fg.setConstantPool(cp);
- return fg;
- }
-
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator( BCELComparator comparator ) {
- _cmp = comparator;
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two FieldGen objects are said to be equal when
- * their names and signatures are equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals( Object obj ) {
- return _cmp.equals(this, obj);
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the field's name XOR signature.
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.Attribute;
+import org.apache.bcel5_2_0.classfile.Constant;
+import org.apache.bcel5_2_0.classfile.ConstantObject;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.ConstantValue;
+import org.apache.bcel5_2_0.classfile.Field;
+import org.apache.bcel5_2_0.classfile.Utility;
+import org.apache.bcel5_2_0.util.BCELComparator;
+
+/**
+ * Template class for building up a field. The only extraordinary thing
+ * one can do is to add a constant value attribute to a field (which must of
+ * course be compatible with to the declared type).
+ *
+ * @version $Id: FieldGen.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Field
+ */
+public class FieldGen extends FieldGenOrMethodGen {
+
+ private Object value = null;
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ FieldGen THIS = (FieldGen) o1;
+ FieldGen THAT = (FieldGen) o2;
+ return THIS.getName().equals(THAT.getName())
+ && THIS.getSignature().equals(THAT.getSignature());
+ }
+
+
+ public int hashCode( Object o ) {
+ FieldGen THIS = (FieldGen) o;
+ return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
+ }
+ };
+
+
+ /**
+ * Declare a field. If it is static (isStatic() == true) and has a
+ * basic type like int or String it may have an initial value
+ * associated with it as defined by setInitValue().
+ *
+ * @param access_flags access qualifiers
+ * @param type field type
+ * @param name field name
+ * @param cp constant pool
+ */
+ public FieldGen(int access_flags, Type type, String name, ConstantPoolGen cp) {
+ setAccessFlags(access_flags);
+ setType(type);
+ setName(name);
+ setConstantPool(cp);
+ }
+
+
+ /**
+ * Instantiate from existing field.
+ *
+ * @param field Field object
+ * @param cp constant pool (must contain the same entries as the field's constant pool)
+ */
+ public FieldGen(Field field, ConstantPoolGen cp) {
+ this(field.getAccessFlags(), Type.getType(field.getSignature()), field.getName(), cp);
+ Attribute[] attrs = field.getAttributes();
+ for (int i = 0; i < attrs.length; i++) {
+ if (attrs[i] instanceof ConstantValue) {
+ setValue(((ConstantValue) attrs[i]).getConstantValueIndex());
+ } else {
+ addAttribute(attrs[i]);
+ }
+ }
+ }
+
+
+ private void setValue( int index ) {
+ ConstantPool cp = this.cp.getConstantPool();
+ Constant c = cp.getConstant(index);
+ value = ((ConstantObject) c).getConstantValue(cp);
+ }
+
+
+ /**
+ * Set (optional) initial value of field, otherwise it will be set to null/0/false
+ * by the JVM automatically.
+ */
+ public void setInitValue( String str ) {
+ checkType(new ObjectType("java.lang.String"));
+ if (str != null) {
+ value = str;
+ }
+ }
+
+
+ public void setInitValue( long l ) {
+ checkType(Type.LONG);
+ if (l != 0L) {
+ value = new Long(l);
+ }
+ }
+
+
+ public void setInitValue( int i ) {
+ checkType(Type.INT);
+ if (i != 0) {
+ value = new Integer(i);
+ }
+ }
+
+
+ public void setInitValue( short s ) {
+ checkType(Type.SHORT);
+ if (s != 0) {
+ value = new Integer(s);
+ }
+ }
+
+
+ public void setInitValue( char c ) {
+ checkType(Type.CHAR);
+ if (c != 0) {
+ value = new Integer(c);
+ }
+ }
+
+
+ public void setInitValue( byte b ) {
+ checkType(Type.BYTE);
+ if (b != 0) {
+ value = new Integer(b);
+ }
+ }
+
+
+ public void setInitValue( boolean b ) {
+ checkType(Type.BOOLEAN);
+ if (b) {
+ value = new Integer(1);
+ }
+ }
+
+
+ public void setInitValue( float f ) {
+ checkType(Type.FLOAT);
+ if (f != 0.0) {
+ value = new Float(f);
+ }
+ }
+
+
+ public void setInitValue( double d ) {
+ checkType(Type.DOUBLE);
+ if (d != 0.0) {
+ value = new Double(d);
+ }
+ }
+
+
+ /** Remove any initial value.
+ */
+ public void cancelInitValue() {
+ value = null;
+ }
+
+
+ private void checkType( Type atype ) {
+ if (type == null) {
+ throw new ClassGenException("You haven't defined the type of the field yet");
+ }
+ if (!isFinal()) {
+ throw new ClassGenException("Only final fields may have an initial value!");
+ }
+ if (!type.equals(atype)) {
+ throw new ClassGenException("Types are not compatible: " + type + " vs. " + atype);
+ }
+ }
+
+
+ /**
+ * Get field object after having set up all necessary values.
+ */
+ public Field getField() {
+ String signature = getSignature();
+ int name_index = cp.addUtf8(name);
+ int signature_index = cp.addUtf8(signature);
+ if (value != null) {
+ checkType(type);
+ int index = addConstant();
+ addAttribute(new ConstantValue(cp.addUtf8("ConstantValue"), 2, index, cp
+ .getConstantPool()));
+ }
+ return new Field(access_flags, name_index, signature_index, getAttributes(), cp
+ .getConstantPool());
+ }
+
+
+ private int addConstant() {
+ switch (type.getType()) {
+ case Constants.T_INT:
+ case Constants.T_CHAR:
+ case Constants.T_BYTE:
+ case Constants.T_BOOLEAN:
+ case Constants.T_SHORT:
+ return cp.addInteger(((Integer) value).intValue());
+ case Constants.T_FLOAT:
+ return cp.addFloat(((Float) value).floatValue());
+ case Constants.T_DOUBLE:
+ return cp.addDouble(((Double) value).doubleValue());
+ case Constants.T_LONG:
+ return cp.addLong(((Long) value).longValue());
+ case Constants.T_REFERENCE:
+ return cp.addString(((String) value));
+ default:
+ throw new RuntimeException("Oops: Unhandled : " + type.getType());
+ }
+ }
+
+
+ public String getSignature() {
+ return type.getSignature();
+ }
+
+ private List observers;
+
+
+ /** Add observer for this object.
+ */
+ public void addObserver( FieldObserver o ) {
+ if (observers == null) {
+ observers = new ArrayList();
+ }
+ observers.add(o);
+ }
+
+
+ /** Remove observer for this object.
+ */
+ public void removeObserver( FieldObserver o ) {
+ if (observers != null) {
+ observers.remove(o);
+ }
+ }
+
+
+ /** Call notify() method on all observers. This method is not called
+ * automatically whenever the state has changed, but has to be
+ * called by the user after he has finished editing the object.
+ */
+ public void update() {
+ if (observers != null) {
+ for (Iterator e = observers.iterator(); e.hasNext();) {
+ ((FieldObserver) e.next()).notify(this);
+ }
+ }
+ }
+
+
+ public String getInitValue() {
+ if (value != null) {
+ return value.toString();
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * Return string representation close to declaration format,
+ * `public static final short MAX = 100', e.g..
+ *
+ * @return String representation of field
+ */
+ public final String toString() {
+ String name, signature, access; // Short cuts to constant pool
+ access = Utility.accessToString(access_flags);
+ access = access.equals("") ? "" : (access + " ");
+ signature = type.toString();
+ name = getName();
+ StringBuilder buf = new StringBuilder(32);
+ buf.append(access).append(signature).append(" ").append(name);
+ String value = getInitValue();
+ if (value != null) {
+ buf.append(" = ").append(value);
+ }
+ return buf.toString();
+ }
+
+
+ /** @return deep copy of this field
+ */
+ public FieldGen copy( ConstantPoolGen cp ) {
+ FieldGen fg = (FieldGen) clone();
+ fg.setConstantPool(cp);
+ return fg;
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two FieldGen objects are said to be equal when
+ * their names and signatures are equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the field's name XOR signature.
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGenOrMethodGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGenOrMethodGen.java
index 3fa734ee..43a58bc9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGenOrMethodGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldGenOrMethodGen.java
@@ -1,132 +1,132 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.AccessFlags;
-import org.apache.bcel5_2_0.classfile.Attribute;
-
-/**
- * Super class for FieldGen and MethodGen objects, since they have
- * some methods in common!
- *
- * @version $Id: FieldGenOrMethodGen.java 410087 2006-05-29 12:12:19Z tcurdt $
- * @author M. Dahm
- */
-public abstract class FieldGenOrMethodGen extends AccessFlags implements NamedAndTyped, Cloneable {
-
- protected String name;
- protected Type type;
- protected ConstantPoolGen cp;
- private List attribute_vec = new ArrayList();
-
-
- protected FieldGenOrMethodGen() {
- }
-
-
- public void setType( Type type ) {
- if (type.getType() == Constants.T_ADDRESS) {
- throw new IllegalArgumentException("Type can not be " + type);
- }
- this.type = type;
- }
-
-
- public Type getType() {
- return type;
- }
-
-
- /** @return name of method/field.
- */
- public String getName() {
- return name;
- }
-
-
- public void setName( String name ) {
- this.name = name;
- }
-
-
- public ConstantPoolGen getConstantPool() {
- return cp;
- }
-
-
- public void setConstantPool( ConstantPoolGen cp ) {
- this.cp = cp;
- }
-
-
- /**
- * Add an attribute to this method. Currently, the JVM knows about
- * the `Code', `ConstantValue', `Synthetic' and `Exceptions'
- * attributes. Other attributes will be ignored by the JVM but do no
- * harm.
- *
- * @param a attribute to be added
- */
- public void addAttribute( Attribute a ) {
- attribute_vec.add(a);
- }
-
-
- /**
- * Remove an attribute.
- */
- public void removeAttribute( Attribute a ) {
- attribute_vec.remove(a);
- }
-
-
- /**
- * Remove all attributes.
- */
- public void removeAttributes() {
- attribute_vec.clear();
- }
-
-
- /**
- * @return all attributes of this method.
- */
- public Attribute[] getAttributes() {
- Attribute[] attributes = new Attribute[attribute_vec.size()];
- attribute_vec.toArray(attributes);
- return attributes;
- }
-
-
- /** @return signature of method/field.
- */
- public abstract String getSignature();
-
-
- public Object clone() {
- try {
- return super.clone();
- } catch (CloneNotSupportedException e) {
- System.err.println(e);
- return null;
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.AccessFlags;
+import org.apache.bcel5_2_0.classfile.Attribute;
+
+/**
+ * Super class for FieldGen and MethodGen objects, since they have
+ * some methods in common!
+ *
+ * @version $Id: FieldGenOrMethodGen.java 410087 2006-05-29 12:12:19Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class FieldGenOrMethodGen extends AccessFlags implements NamedAndTyped, Cloneable {
+
+ protected String name;
+ protected Type type;
+ protected ConstantPoolGen cp;
+ private List attribute_vec = new ArrayList();
+
+
+ protected FieldGenOrMethodGen() {
+ }
+
+
+ public void setType( Type type ) {
+ if (type.getType() == Constants.T_ADDRESS) {
+ throw new IllegalArgumentException("Type can not be " + type);
+ }
+ this.type = type;
+ }
+
+
+ public Type getType() {
+ return type;
+ }
+
+
+ /** @return name of method/field.
+ */
+ public String getName() {
+ return name;
+ }
+
+
+ public void setName( String name ) {
+ this.name = name;
+ }
+
+
+ public ConstantPoolGen getConstantPool() {
+ return cp;
+ }
+
+
+ public void setConstantPool( ConstantPoolGen cp ) {
+ this.cp = cp;
+ }
+
+
+ /**
+ * Add an attribute to this method. Currently, the JVM knows about
+ * the `Code', `ConstantValue', `Synthetic' and `Exceptions'
+ * attributes. Other attributes will be ignored by the JVM but do no
+ * harm.
+ *
+ * @param a attribute to be added
+ */
+ public void addAttribute( Attribute a ) {
+ attribute_vec.add(a);
+ }
+
+
+ /**
+ * Remove an attribute.
+ */
+ public void removeAttribute( Attribute a ) {
+ attribute_vec.remove(a);
+ }
+
+
+ /**
+ * Remove all attributes.
+ */
+ public void removeAttributes() {
+ attribute_vec.clear();
+ }
+
+
+ /**
+ * @return all attributes of this method.
+ */
+ public Attribute[] getAttributes() {
+ Attribute[] attributes = new Attribute[attribute_vec.size()];
+ attribute_vec.toArray(attributes);
+ return attributes;
+ }
+
+
+ /** @return signature of method/field.
+ */
+ public abstract String getSignature();
+
+
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch (CloneNotSupportedException e) {
+ System.err.println(e);
+ return null;
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldInstruction.java
index d76b99b0..2b41bcf3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldInstruction.java
@@ -1,80 +1,80 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-
-/**
- * Super class for the GET/PUTxxx family of instructions.
- *
- * @version $Id: FieldInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class FieldInstruction extends FieldOrMethod implements TypedInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- FieldInstruction() {
- }
-
-
- /**
- * @param index to constant pool
- */
- protected FieldInstruction(short opcode, int index) {
- super(opcode, index);
- }
-
-
- /**
- * @return mnemonic for instruction with symbolic references resolved
- */
- public String toString( ConstantPool cp ) {
- return org.apache.bcel5_2_0.Constants.OPCODE_NAMES[opcode] + " "
- + cp.constantToString(index, org.apache.bcel5_2_0.Constants.CONSTANT_Fieldref);
- }
-
-
- /** @return size of field (1 or 2)
- */
- protected int getFieldSize( ConstantPoolGen cpg ) {
- return getType(cpg).getSize();
- }
-
-
- /** @return return type of referenced field
- */
- public Type getType( ConstantPoolGen cpg ) {
- return getFieldType(cpg);
- }
-
-
- /** @return type of field
- */
- public Type getFieldType( ConstantPoolGen cpg ) {
- return Type.getType(getSignature(cpg));
- }
-
-
- /** @return name of referenced field.
- */
- public String getFieldName( ConstantPoolGen cpg ) {
- return getName(cpg);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+
+/**
+ * Super class for the GET/PUTxxx family of instructions.
+ *
+ * @version $Id: FieldInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class FieldInstruction extends FieldOrMethod implements TypedInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ FieldInstruction() {
+ }
+
+
+ /**
+ * @param index to constant pool
+ */
+ protected FieldInstruction(short opcode, int index) {
+ super(opcode, index);
+ }
+
+
+ /**
+ * @return mnemonic for instruction with symbolic references resolved
+ */
+ public String toString( ConstantPool cp ) {
+ return org.apache.bcel5_2_0.Constants.OPCODE_NAMES[opcode] + " "
+ + cp.constantToString(index, org.apache.bcel5_2_0.Constants.CONSTANT_Fieldref);
+ }
+
+
+ /** @return size of field (1 or 2)
+ */
+ protected int getFieldSize( ConstantPoolGen cpg ) {
+ return getType(cpg).getSize();
+ }
+
+
+ /** @return return type of referenced field
+ */
+ public Type getType( ConstantPoolGen cpg ) {
+ return getFieldType(cpg);
+ }
+
+
+ /** @return type of field
+ */
+ public Type getFieldType( ConstantPoolGen cpg ) {
+ return Type.getType(getSignature(cpg));
+ }
+
+
+ /** @return name of referenced field.
+ */
+ public String getFieldName( ConstantPoolGen cpg ) {
+ return getName(cpg);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldObserver.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldObserver.java
index 1200110c..336e59cd 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldObserver.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldObserver.java
@@ -1,29 +1,29 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Imnplement this interface if you're interested in changes to a FieldGen object
- * and register yourself with addObserver().
- *
- * @version $Id: FieldObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface FieldObserver {
-
- public void notify( FieldGen field );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Imnplement this interface if you're interested in changes to a FieldGen object
+ * and register yourself with addObserver().
+ *
+ * @version $Id: FieldObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface FieldObserver {
+
+ public void notify( FieldGen field );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldOrMethod.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldOrMethod.java
index 5ae63226..63d9c59a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldOrMethod.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/FieldOrMethod.java
@@ -1,128 +1,128 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.classfile.ConstantCP;
-import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.ConstantUtf8;
-
-/**
- * Super class for InvokeInstruction and FieldInstruction, since they have
- * some methods in common!
- *
- * @version $Id: FieldOrMethod.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class FieldOrMethod extends CPInstruction implements LoadClass {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- FieldOrMethod() {
- }
-
-
- /**
- * @param index to constant pool
- */
- protected FieldOrMethod(short opcode, int index) {
- super(opcode, index);
- }
-
-
- /** @return signature of referenced method/field.
- */
- public String getSignature( ConstantPoolGen cpg ) {
- ConstantPool cp = cpg.getConstantPool();
- ConstantCP cmr = (ConstantCP) cp.getConstant(index);
- ConstantNameAndType cnat = (ConstantNameAndType) cp.getConstant(cmr.getNameAndTypeIndex());
- return ((ConstantUtf8) cp.getConstant(cnat.getSignatureIndex())).getBytes();
- }
-
-
- /** @return name of referenced method/field.
- */
- public String getName( ConstantPoolGen cpg ) {
- ConstantPool cp = cpg.getConstantPool();
- ConstantCP cmr = (ConstantCP) cp.getConstant(index);
- ConstantNameAndType cnat = (ConstantNameAndType) cp.getConstant(cmr.getNameAndTypeIndex());
- return ((ConstantUtf8) cp.getConstant(cnat.getNameIndex())).getBytes();
- }
-
-
- /** @return name of the referenced class/interface
- * @deprecated If the instruction references an array class,
- * this method will return "java.lang.Object".
- * For code generated by Java 1.5, this answer is
- * sometimes wrong (e.g., if the "clone()" method is
- * called on an array). A better idea is to use
- * the getReferenceType() method, which correctly distinguishes
- * between class types and array types.
- */
- public String getClassName( ConstantPoolGen cpg ) {
- ConstantPool cp = cpg.getConstantPool();
- ConstantCP cmr = (ConstantCP) cp.getConstant(index);
- String className = cp.getConstantString(cmr.getClassIndex(),
- org.apache.bcel5_2_0.Constants.CONSTANT_Class);
- if (className.startsWith("[")) {
- // Turn array classes into java.lang.Object.
- return "java.lang.Object";
- }
- return className.replace('/', '.');
- }
-
-
- /** @return type of the referenced class/interface
- * @deprecated If the instruction references an array class,
- * the ObjectType returned will be invalid. Use
- * getReferenceType() instead.
- */
- public ObjectType getClassType( ConstantPoolGen cpg ) {
- return new ObjectType(getClassName(cpg));
- }
-
-
- /**
- * Return the reference type representing the class, interface,
- * or array class referenced by the instruction.
- * @param cpg the ConstantPoolGen used to create the instruction
- * @return an ObjectType (if the referenced class type is a class
- * or interface), or an ArrayType (if the referenced class
- * type is an array class)
- */
- public ReferenceType getReferenceType( ConstantPoolGen cpg ) {
- ConstantPool cp = cpg.getConstantPool();
- ConstantCP cmr = (ConstantCP) cp.getConstant(index);
- String className = cp.getConstantString(cmr.getClassIndex(),
- org.apache.bcel5_2_0.Constants.CONSTANT_Class);
- if (className.startsWith("[")) {
- return (ArrayType) Type.getType(className);
- } else {
- className = className.replace('/', '.');
- return new ObjectType(className);
- }
- }
-
-
- /** @return type of the referenced class/interface
- */
- public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
- return getClassType(cpg);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.classfile.ConstantCP;
+import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.ConstantUtf8;
+
+/**
+ * Super class for InvokeInstruction and FieldInstruction, since they have
+ * some methods in common!
+ *
+ * @version $Id: FieldOrMethod.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class FieldOrMethod extends CPInstruction implements LoadClass {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ FieldOrMethod() {
+ }
+
+
+ /**
+ * @param index to constant pool
+ */
+ protected FieldOrMethod(short opcode, int index) {
+ super(opcode, index);
+ }
+
+
+ /** @return signature of referenced method/field.
+ */
+ public String getSignature( ConstantPoolGen cpg ) {
+ ConstantPool cp = cpg.getConstantPool();
+ ConstantCP cmr = (ConstantCP) cp.getConstant(index);
+ ConstantNameAndType cnat = (ConstantNameAndType) cp.getConstant(cmr.getNameAndTypeIndex());
+ return ((ConstantUtf8) cp.getConstant(cnat.getSignatureIndex())).getBytes();
+ }
+
+
+ /** @return name of referenced method/field.
+ */
+ public String getName( ConstantPoolGen cpg ) {
+ ConstantPool cp = cpg.getConstantPool();
+ ConstantCP cmr = (ConstantCP) cp.getConstant(index);
+ ConstantNameAndType cnat = (ConstantNameAndType) cp.getConstant(cmr.getNameAndTypeIndex());
+ return ((ConstantUtf8) cp.getConstant(cnat.getNameIndex())).getBytes();
+ }
+
+
+ /** @return name of the referenced class/interface
+ * @deprecated If the instruction references an array class,
+ * this method will return "java.lang.Object".
+ * For code generated by Java 1.5, this answer is
+ * sometimes wrong (e.g., if the "clone()" method is
+ * called on an array). A better idea is to use
+ * the getReferenceType() method, which correctly distinguishes
+ * between class types and array types.
+ */
+ public String getClassName( ConstantPoolGen cpg ) {
+ ConstantPool cp = cpg.getConstantPool();
+ ConstantCP cmr = (ConstantCP) cp.getConstant(index);
+ String className = cp.getConstantString(cmr.getClassIndex(),
+ org.apache.bcel5_2_0.Constants.CONSTANT_Class);
+ if (className.startsWith("[")) {
+ // Turn array classes into java.lang.Object.
+ return "java.lang.Object";
+ }
+ return className.replace('/', '.');
+ }
+
+
+ /** @return type of the referenced class/interface
+ * @deprecated If the instruction references an array class,
+ * the ObjectType returned will be invalid. Use
+ * getReferenceType() instead.
+ */
+ public ObjectType getClassType( ConstantPoolGen cpg ) {
+ return new ObjectType(getClassName(cpg));
+ }
+
+
+ /**
+ * Return the reference type representing the class, interface,
+ * or array class referenced by the instruction.
+ * @param cpg the ConstantPoolGen used to create the instruction
+ * @return an ObjectType (if the referenced class type is a class
+ * or interface), or an ArrayType (if the referenced class
+ * type is an array class)
+ */
+ public ReferenceType getReferenceType( ConstantPoolGen cpg ) {
+ ConstantPool cp = cpg.getConstantPool();
+ ConstantCP cmr = (ConstantCP) cp.getConstant(index);
+ String className = cp.getConstantString(cmr.getClassIndex(),
+ org.apache.bcel5_2_0.Constants.CONSTANT_Class);
+ if (className.startsWith("[")) {
+ return (ArrayType) Type.getType(className);
+ } else {
+ className = className.replace('/', '.');
+ return new ObjectType(className);
+ }
+ }
+
+
+ /** @return type of the referenced class/interface
+ */
+ public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
+ return getClassType(cpg);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETFIELD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETFIELD.java
index 42d9cef1..f8c57ae3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETFIELD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETFIELD.java
@@ -1,81 +1,81 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * GETFIELD - Fetch field from object
- * Stack: ..., objectref -> ..., value
- * OR
- * Stack: ..., objectref -> ..., value.word1, value.word2
- *
- * @version $Id: GETFIELD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class GETFIELD extends FieldInstruction implements ExceptionThrower, StackConsumer,
- StackProducer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- GETFIELD() {
- }
-
-
- public GETFIELD(int index) {
- super(Constants.GETFIELD, index);
- }
-
-
- public int produceStack( ConstantPoolGen cpg ) {
- return getFieldSize(cpg);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[2 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitStackConsumer(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitFieldInstruction(this);
- v.visitGETFIELD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * GETFIELD - Fetch field from object
+ * Stack: ..., objectref -> ..., value
+ * OR
+ * Stack: ..., objectref -> ..., value.word1, value.word2
+ *
+ * @version $Id: GETFIELD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class GETFIELD extends FieldInstruction implements ExceptionThrower, StackConsumer,
+ StackProducer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ GETFIELD() {
+ }
+
+
+ public GETFIELD(int index) {
+ super(Constants.GETFIELD, index);
+ }
+
+
+ public int produceStack( ConstantPoolGen cpg ) {
+ return getFieldSize(cpg);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[2 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitStackConsumer(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitFieldInstruction(this);
+ v.visitGETFIELD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETSTATIC.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETSTATIC.java
index 60e435ce..0037483f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETSTATIC.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GETSTATIC.java
@@ -1,79 +1,79 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * GETSTATIC - Fetch static field from class
- * Stack: ..., -> ..., value
- * OR
- * Stack: ..., -> ..., value.word1, value.word2
- *
- * @version $Id: GETSTATIC.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class GETSTATIC extends FieldInstruction implements PushInstruction, ExceptionThrower {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- GETSTATIC() {
- }
-
-
- public GETSTATIC(int index) {
- super(Constants.GETSTATIC, index);
- }
-
-
- public int produceStack( ConstantPoolGen cpg ) {
- return getFieldSize(cpg);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[1 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitPushInstruction(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitFieldInstruction(this);
- v.visitGETSTATIC(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * GETSTATIC - Fetch static field from class
+ * Stack: ..., -> ..., value
+ * OR
+ * Stack: ..., -> ..., value.word1, value.word2
+ *
+ * @version $Id: GETSTATIC.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class GETSTATIC extends FieldInstruction implements PushInstruction, ExceptionThrower {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ GETSTATIC() {
+ }
+
+
+ public GETSTATIC(int index) {
+ super(Constants.GETSTATIC, index);
+ }
+
+
+ public int produceStack( ConstantPoolGen cpg ) {
+ return getFieldSize(cpg);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[1 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitPushInstruction(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitFieldInstruction(this);
+ v.visitGETSTATIC(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO.java
index 83a86a1e..018afa15 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO.java
@@ -1,89 +1,89 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-/**
- * GOTO - Branch always (to relative offset, not absolute address)
- *
- * @version $Id: GOTO.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class GOTO extends GotoInstruction implements VariableLengthInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- GOTO() {
- }
-
-
- public GOTO(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.GOTO, target);
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- index = getTargetOffset();
- if (opcode == org.apache.bcel5_2_0.Constants.GOTO) {
- super.dump(out);
- } else { // GOTO_W
- index = getTargetOffset();
- out.writeByte(opcode);
- out.writeInt(index);
- }
- }
-
-
- /** Called in pass 2 of InstructionList.setPositions() in order to update
- * the branch target, that may shift due to variable length instructions.
- */
- protected int updatePosition( int offset, int max_offset ) {
- int i = getTargetOffset(); // Depending on old position value
- position += offset; // Position may be shifted by preceding expansions
- if (Math.abs(i) >= (32767 - max_offset)) { // to large for short (estimate)
- opcode = org.apache.bcel5_2_0.Constants.GOTO_W;
- length = 5;
- return 2; // 5 - 3
- }
- return 0;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitVariableLengthInstruction(this);
- v.visitUnconditionalBranch(this);
- v.visitBranchInstruction(this);
- v.visitGotoInstruction(this);
- v.visitGOTO(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+/**
+ * GOTO - Branch always (to relative offset, not absolute address)
+ *
+ * @version $Id: GOTO.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class GOTO extends GotoInstruction implements VariableLengthInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ GOTO() {
+ }
+
+
+ public GOTO(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.GOTO, target);
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ index = getTargetOffset();
+ if (opcode == org.apache.bcel5_2_0.Constants.GOTO) {
+ super.dump(out);
+ } else { // GOTO_W
+ index = getTargetOffset();
+ out.writeByte(opcode);
+ out.writeInt(index);
+ }
+ }
+
+
+ /** Called in pass 2 of InstructionList.setPositions() in order to update
+ * the branch target, that may shift due to variable length instructions.
+ */
+ protected int updatePosition( int offset, int max_offset ) {
+ int i = getTargetOffset(); // Depending on old position value
+ position += offset; // Position may be shifted by preceding expansions
+ if (Math.abs(i) >= (32767 - max_offset)) { // to large for short (estimate)
+ opcode = org.apache.bcel5_2_0.Constants.GOTO_W;
+ length = 5;
+ return 2; // 5 - 3
+ }
+ return 0;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitVariableLengthInstruction(this);
+ v.visitUnconditionalBranch(this);
+ v.visitBranchInstruction(this);
+ v.visitGotoInstruction(this);
+ v.visitGOTO(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO_W.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO_W.java
index 392d16cf..4cd665a2 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO_W.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GOTO_W.java
@@ -1,80 +1,80 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * GOTO_W - Branch always (to relative offset, not absolute address)
- *
- * @version $Id: GOTO_W.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class GOTO_W extends GotoInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- GOTO_W() {
- }
-
-
- public GOTO_W(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.GOTO_W, target);
- length = 5;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- index = getTargetOffset();
- out.writeByte(opcode);
- out.writeInt(index);
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- index = bytes.readInt();
- length = 5;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitUnconditionalBranch(this);
- v.visitBranchInstruction(this);
- v.visitGotoInstruction(this);
- v.visitGOTO_W(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * GOTO_W - Branch always (to relative offset, not absolute address)
+ *
+ * @version $Id: GOTO_W.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class GOTO_W extends GotoInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ GOTO_W() {
+ }
+
+
+ public GOTO_W(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.GOTO_W, target);
+ length = 5;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ index = getTargetOffset();
+ out.writeByte(opcode);
+ out.writeInt(index);
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ index = bytes.readInt();
+ length = 5;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitUnconditionalBranch(this);
+ v.visitBranchInstruction(this);
+ v.visitGotoInstruction(this);
+ v.visitGOTO_W(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GotoInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GotoInstruction.java
index ccd1a3d5..b8c5faa7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GotoInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/GotoInstruction.java
@@ -1,38 +1,38 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Super class for GOTO
- *
- * @version $Id: GotoInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class GotoInstruction extends BranchInstruction implements UnconditionalBranch {
-
- GotoInstruction(short opcode, InstructionHandle target) {
- super(opcode, target);
- }
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- GotoInstruction() {
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Super class for GOTO
+ *
+ * @version $Id: GotoInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class GotoInstruction extends BranchInstruction implements UnconditionalBranch {
+
+ GotoInstruction(short opcode, InstructionHandle target) {
+ super(opcode, target);
+ }
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ GotoInstruction() {
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2B.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2B.java
index baafe8bb..b44dd492 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2B.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2B.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * I2B - Convert int to byte
- * Stack: ..., value -> ..., result
- *
- * @version $Id: I2B.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class I2B extends ConversionInstruction {
-
- /** Convert int to byte
- */
- public I2B() {
- super(org.apache.bcel5_2_0.Constants.I2B);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitI2B(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * I2B - Convert int to byte
+ * Stack: ..., value -> ..., result
+ *
+ * @version $Id: I2B.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class I2B extends ConversionInstruction {
+
+ /** Convert int to byte
+ */
+ public I2B() {
+ super(org.apache.bcel5_2_0.Constants.I2B);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitI2B(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2C.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2C.java
index 9c22b6b2..d14ba4be 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2C.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2C.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * I2C - Convert int to char
- * Stack: ..., value -> ..., result
- *
- * @version $Id: I2C.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class I2C extends ConversionInstruction {
-
- /** Convert int to char
- */
- public I2C() {
- super(org.apache.bcel5_2_0.Constants.I2C);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitI2C(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * I2C - Convert int to char
+ * Stack: ..., value -> ..., result
+ *
+ * @version $Id: I2C.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class I2C extends ConversionInstruction {
+
+ /** Convert int to char
+ */
+ public I2C() {
+ super(org.apache.bcel5_2_0.Constants.I2C);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitI2C(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2D.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2D.java
index 116f15e6..f6bdde00 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2D.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2D.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * I2D - Convert int to double
- * Stack: ..., value -> ..., result.word1, result.word2
- *
- * @version $Id: I2D.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class I2D extends ConversionInstruction {
-
- /** Convert int to double
- */
- public I2D() {
- super(org.apache.bcel5_2_0.Constants.I2D);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitI2D(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * I2D - Convert int to double
+ * Stack: ..., value -> ..., result.word1, result.word2
+ *
+ * @version $Id: I2D.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class I2D extends ConversionInstruction {
+
+ /** Convert int to double
+ */
+ public I2D() {
+ super(org.apache.bcel5_2_0.Constants.I2D);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitI2D(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2F.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2F.java
index 4920cca9..3ca7f602 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2F.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2F.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * I2F - Convert int to float
- * Stack: ..., value -> ..., result
- *
- * @version $Id: I2F.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class I2F extends ConversionInstruction {
-
- /** Convert int to float
- */
- public I2F() {
- super(org.apache.bcel5_2_0.Constants.I2F);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitI2F(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * I2F - Convert int to float
+ * Stack: ..., value -> ..., result
+ *
+ * @version $Id: I2F.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class I2F extends ConversionInstruction {
+
+ /** Convert int to float
+ */
+ public I2F() {
+ super(org.apache.bcel5_2_0.Constants.I2F);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitI2F(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2L.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2L.java
index 987bb494..1fc0767c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2L.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2L.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * I2L - Convert int to long
- * Stack: ..., value -> ..., result.word1, result.word2
- *
- * @version $Id: I2L.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class I2L extends ConversionInstruction {
-
- /** Convert int to long
- */
- public I2L() {
- super(org.apache.bcel5_2_0.Constants.I2L);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitI2L(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * I2L - Convert int to long
+ * Stack: ..., value -> ..., result.word1, result.word2
+ *
+ * @version $Id: I2L.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class I2L extends ConversionInstruction {
+
+ /** Convert int to long
+ */
+ public I2L() {
+ super(org.apache.bcel5_2_0.Constants.I2L);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitI2L(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2S.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2S.java
index d25dc6c2..282b9f08 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2S.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/I2S.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * I2S - Convert int to short
- * Stack: ..., value -> ..., result
- *
- * @version $Id: I2S.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class I2S extends ConversionInstruction {
-
- public I2S() {
- super(org.apache.bcel5_2_0.Constants.I2S);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitI2S(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * I2S - Convert int to short
+ * Stack: ..., value -> ..., result
+ *
+ * @version $Id: I2S.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class I2S extends ConversionInstruction {
+
+ public I2S() {
+ super(org.apache.bcel5_2_0.Constants.I2S);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitI2S(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IADD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IADD.java
index c1923921..51bcc19c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IADD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IADD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IADD - Add ints
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: IADD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IADD extends ArithmeticInstruction {
-
- /** Add ints
- */
- public IADD() {
- super(org.apache.bcel5_2_0.Constants.IADD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIADD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IADD - Add ints
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: IADD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IADD extends ArithmeticInstruction {
+
+ /** Add ints
+ */
+ public IADD() {
+ super(org.apache.bcel5_2_0.Constants.IADD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIADD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IALOAD.java
index 02b9f5f6..57fbfd72 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IALOAD.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IALOAD - Load int from array
- * Stack: ..., arrayref, index -> ..., value
- *
- * @version $Id: IALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IALOAD extends ArrayInstruction implements StackProducer {
-
- /**
- * Load int from array
- */
- public IALOAD() {
- super(org.apache.bcel5_2_0.Constants.IALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitIALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IALOAD - Load int from array
+ * Stack: ..., arrayref, index -> ..., value
+ *
+ * @version $Id: IALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IALOAD extends ArrayInstruction implements StackProducer {
+
+ /**
+ * Load int from array
+ */
+ public IALOAD() {
+ super(org.apache.bcel5_2_0.Constants.IALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitIALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IAND.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IAND.java
index 89b0121d..ba64e2a9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IAND.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IAND.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IAND - Bitwise AND int
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: IAND.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IAND extends ArithmeticInstruction {
-
- public IAND() {
- super(org.apache.bcel5_2_0.Constants.IAND);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIAND(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IAND - Bitwise AND int
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: IAND.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IAND extends ArithmeticInstruction {
+
+ public IAND() {
+ super(org.apache.bcel5_2_0.Constants.IAND);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIAND(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IASTORE.java
index 065e544e..9f650c84 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IASTORE.java
@@ -1,51 +1,51 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IASTORE - Store into int array
- * Stack: ..., arrayref, index, value -> ...
- *
- * @version $Id: IASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IASTORE extends ArrayInstruction implements StackConsumer {
-
- /**
- * Store into int array
- */
- public IASTORE() {
- super(org.apache.bcel5_2_0.Constants.IASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitIASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IASTORE - Store into int array
+ * Stack: ..., arrayref, index, value -> ...
+ *
+ * @version $Id: IASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IASTORE extends ArrayInstruction implements StackConsumer {
+
+ /**
+ * Store into int array
+ */
+ public IASTORE() {
+ super(org.apache.bcel5_2_0.Constants.IASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitIASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ICONST.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ICONST.java
index efe7d25f..865d93c5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ICONST.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ICONST.java
@@ -1,78 +1,78 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ICONST - Push value between -1, ..., 5, other values cause an exception
- *
- * Stack: ... -> ...,
- *
- * @version $Id: ICONST.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ICONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
-
- private int value;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ICONST() {
- }
-
-
- public ICONST(int i) {
- super(org.apache.bcel5_2_0.Constants.ICONST_0, (short) 1);
- if ((i >= -1) && (i <= 5)) {
- opcode = (short) (org.apache.bcel5_2_0.Constants.ICONST_0 + i); // Even works for i == -1
- } else {
- throw new ClassGenException("ICONST can be used only for value between -1 and 5: " + i);
- }
- value = i;
- }
-
-
- public Number getValue() {
- return new Integer(value);
- }
-
-
- /** @return Type.INT
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.INT;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitPushInstruction(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitConstantPushInstruction(this);
- v.visitICONST(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ICONST - Push value between -1, ..., 5, other values cause an exception
+ *
+ * Stack: ... -> ...,
+ *
+ * @version $Id: ICONST.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ICONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
+
+ private int value;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ICONST() {
+ }
+
+
+ public ICONST(int i) {
+ super(org.apache.bcel5_2_0.Constants.ICONST_0, (short) 1);
+ if ((i >= -1) && (i <= 5)) {
+ opcode = (short) (org.apache.bcel5_2_0.Constants.ICONST_0 + i); // Even works for i == -1
+ } else {
+ throw new ClassGenException("ICONST can be used only for value between -1 and 5: " + i);
+ }
+ value = i;
+ }
+
+
+ public Number getValue() {
+ return new Integer(value);
+ }
+
+
+ /** @return Type.INT
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.INT;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitPushInstruction(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitConstantPushInstruction(this);
+ v.visitICONST(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IDIV.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IDIV.java
index 5182cb1c..46373a37 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IDIV.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IDIV.java
@@ -1,60 +1,60 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IDIV - Divide ints
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: IDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IDIV extends ArithmeticInstruction implements ExceptionThrower {
-
- /** Divide ints
- */
- public IDIV() {
- super(org.apache.bcel5_2_0.Constants.IDIV);
- }
-
-
- /** @return exceptions this instruction may cause
- */
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIDIV(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IDIV - Divide ints
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: IDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IDIV extends ArithmeticInstruction implements ExceptionThrower {
+
+ /** Divide ints
+ */
+ public IDIV() {
+ super(org.apache.bcel5_2_0.Constants.IDIV);
+ }
+
+
+ /** @return exceptions this instruction may cause
+ */
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIDIV(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFEQ.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFEQ.java
index eda70a65..3db9c373 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFEQ.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFEQ.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFEQ - Branch if int comparison with zero succeeds
- *
- * Stack: ..., value -> ...
- *
- * @version $Id: IFEQ.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFEQ extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFEQ() {
- }
-
-
- public IFEQ(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFEQ, target);
- }
-
-
- /**
- * @return negation of instruction, e.g. IFEQ.negate() == IFNE
- */
- public IfInstruction negate() {
- return new IFNE(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFEQ(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFEQ - Branch if int comparison with zero succeeds
+ *
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: IFEQ.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFEQ extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFEQ() {
+ }
+
+
+ public IFEQ(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFEQ, target);
+ }
+
+
+ /**
+ * @return negation of instruction, e.g. IFEQ.negate() == IFNE
+ */
+ public IfInstruction negate() {
+ return new IFNE(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFEQ(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGE.java
index ff392234..d85d1afe 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGE.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFGE - Branch if int comparison with zero succeeds
- *
- * Stack: ..., value -> ...
- *
- * @version $Id: IFGE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFGE extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFGE() {
- }
-
-
- public IFGE(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFGE, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IFLT(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFGE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFGE - Branch if int comparison with zero succeeds
+ *
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: IFGE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFGE extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFGE() {
+ }
+
+
+ public IFGE(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFGE, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IFLT(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFGE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGT.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGT.java
index 9762316c..14a75e38 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGT.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFGT.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFGT - Branch if int comparison with zero succeeds
- *
- * Stack: ..., value -> ...
- *
- * @version $Id: IFGT.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFGT extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFGT() {
- }
-
-
- public IFGT(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFGT, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IFLE(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFGT(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFGT - Branch if int comparison with zero succeeds
+ *
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: IFGT.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFGT extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFGT() {
+ }
+
+
+ public IFGT(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFGT, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IFLE(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFGT(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLE.java
index bf97deac..f41c8242 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLE.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFLE - Branch if int comparison with zero succeeds
- *
- * Stack: ..., value -> ...
- *
- * @version $Id: IFLE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFLE extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFLE() {
- }
-
-
- public IFLE(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFLE, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IFGT(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFLE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFLE - Branch if int comparison with zero succeeds
+ *
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: IFLE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFLE extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFLE() {
+ }
+
+
+ public IFLE(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFLE, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IFGT(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFLE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLT.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLT.java
index a8a98bd3..55cc695c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLT.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFLT.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFLT - Branch if int comparison with zero succeeds
- *
- * Stack: ..., value -> ...
- *
- * @version $Id: IFLT.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFLT extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFLT() {
- }
-
-
- public IFLT(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFLT, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IFGE(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFLT(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFLT - Branch if int comparison with zero succeeds
+ *
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: IFLT.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFLT extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFLT() {
+ }
+
+
+ public IFLT(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFLT, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IFGE(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFLT(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNE.java
index 4b480086..df4e2e0e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNE.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFNE - Branch if int comparison with zero succeeds
- *
- * Stack: ..., value -> ...
- *
- * @version $Id: IFNE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFNE extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFNE() {
- }
-
-
- public IFNE(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFNE, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IFEQ(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFNE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFNE - Branch if int comparison with zero succeeds
+ *
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: IFNE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFNE extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFNE() {
+ }
+
+
+ public IFNE(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFNE, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IFEQ(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFNE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNONNULL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNONNULL.java
index 9cc2ba44..4753248a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNONNULL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNONNULL.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFNONNULL - Branch if reference is not null
- *
- * Stack: ..., reference -> ...
- *
- * @version $Id: IFNONNULL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFNONNULL extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFNONNULL() {
- }
-
-
- public IFNONNULL(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFNONNULL, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IFNULL(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFNONNULL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFNONNULL - Branch if reference is not null
+ *
+ * Stack: ..., reference -> ...
+ *
+ * @version $Id: IFNONNULL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFNONNULL extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFNONNULL() {
+ }
+
+
+ public IFNONNULL(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFNONNULL, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IFNULL(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFNONNULL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNULL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNULL.java
index 4e3bd88d..d2475bbf 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNULL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IFNULL.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IFNULL - Branch if reference is not null
- *
- * Stack: ..., reference -> ...
- *
- * @version $Id: IFNULL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IFNULL extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IFNULL() {
- }
-
-
- public IFNULL(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IFNULL, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IFNONNULL(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIFNULL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IFNULL - Branch if reference is not null
+ *
+ * Stack: ..., reference -> ...
+ *
+ * @version $Id: IFNULL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IFNULL extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IFNULL() {
+ }
+
+
+ public IFNULL(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IFNULL, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IFNONNULL(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIFNULL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPEQ.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPEQ.java
index 9977b477..0868adc5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPEQ.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPEQ.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ACMPEQ - Branch if reference comparison succeeds
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ACMPEQ.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ACMPEQ extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ACMPEQ() {
- }
-
-
- public IF_ACMPEQ(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ACMPEQ, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ACMPNE(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ACMPEQ(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ACMPEQ - Branch if reference comparison succeeds
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ACMPEQ.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ACMPEQ extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ACMPEQ() {
+ }
+
+
+ public IF_ACMPEQ(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ACMPEQ, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ACMPNE(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ACMPEQ(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPNE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPNE.java
index 3ec803fb..626c5b33 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPNE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ACMPNE.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ACMPNE - Branch if reference comparison doesn't succeed
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ACMPNE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ACMPNE extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ACMPNE() {
- }
-
-
- public IF_ACMPNE(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ACMPNE, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ACMPEQ(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ACMPNE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ACMPNE - Branch if reference comparison doesn't succeed
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ACMPNE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ACMPNE extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ACMPNE() {
+ }
+
+
+ public IF_ACMPNE(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ACMPNE, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ACMPEQ(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ACMPNE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPEQ.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPEQ.java
index 73a7d6f9..5fac7a28 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPEQ.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPEQ.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ICMPEQ - Branch if int comparison succeeds
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ICMPEQ.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ICMPEQ extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ICMPEQ() {
- }
-
-
- public IF_ICMPEQ(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ICMPEQ, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ICMPNE(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ICMPEQ(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ICMPEQ - Branch if int comparison succeeds
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ICMPEQ.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ICMPEQ extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ICMPEQ() {
+ }
+
+
+ public IF_ICMPEQ(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ICMPEQ, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ICMPNE(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ICMPEQ(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGE.java
index 96034c2e..2c298bc3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGE.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ICMPGE - Branch if int comparison succeeds
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ICMPGE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ICMPGE extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ICMPGE() {
- }
-
-
- public IF_ICMPGE(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ICMPGE, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ICMPLT(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ICMPGE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ICMPGE - Branch if int comparison succeeds
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ICMPGE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ICMPGE extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ICMPGE() {
+ }
+
+
+ public IF_ICMPGE(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ICMPGE, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ICMPLT(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ICMPGE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGT.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGT.java
index 3ea29a5a..5e5273b1 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGT.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPGT.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ICMPGT - Branch if int comparison succeeds
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ICMPGT.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ICMPGT extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ICMPGT() {
- }
-
-
- public IF_ICMPGT(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ICMPGT, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ICMPLE(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ICMPGT(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ICMPGT - Branch if int comparison succeeds
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ICMPGT.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ICMPGT extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ICMPGT() {
+ }
+
+
+ public IF_ICMPGT(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ICMPGT, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ICMPLE(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ICMPGT(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLE.java
index 08e803f9..49c0cf0f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLE.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ICMPLE - Branch if int comparison succeeds
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ICMPLE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ICMPLE extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ICMPLE() {
- }
-
-
- public IF_ICMPLE(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ICMPLE, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ICMPGT(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ICMPLE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ICMPLE - Branch if int comparison succeeds
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ICMPLE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ICMPLE extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ICMPLE() {
+ }
+
+
+ public IF_ICMPLE(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ICMPLE, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ICMPGT(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ICMPLE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLT.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLT.java
index 14374d95..00d02bc3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLT.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPLT.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ICMPLT - Branch if int comparison succeeds
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ICMPLT.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ICMPLT extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ICMPLT() {
- }
-
-
- public IF_ICMPLT(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ICMPLT, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ICMPGE(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ICMPLT(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ICMPLT - Branch if int comparison succeeds
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ICMPLT.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ICMPLT extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ICMPLT() {
+ }
+
+
+ public IF_ICMPLT(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ICMPLT, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ICMPGE(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ICMPLT(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPNE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPNE.java
index d8c407f3..7b3bbd10 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPNE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IF_ICMPNE.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IF_ICMPNE - Branch if int comparison doesn't succeed
- *
- * Stack: ..., value1, value2 -> ...
- *
- * @version $Id: IF_ICMPNE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IF_ICMPNE extends IfInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IF_ICMPNE() {
- }
-
-
- public IF_ICMPNE(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.IF_ICMPNE, target);
- }
-
-
- /**
- * @return negation of instruction
- */
- public IfInstruction negate() {
- return new IF_ICMPEQ(target);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitBranchInstruction(this);
- v.visitIfInstruction(this);
- v.visitIF_ICMPNE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IF_ICMPNE - Branch if int comparison doesn't succeed
+ *
+ * Stack: ..., value1, value2 -> ...
+ *
+ * @version $Id: IF_ICMPNE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IF_ICMPNE extends IfInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IF_ICMPNE() {
+ }
+
+
+ public IF_ICMPNE(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.IF_ICMPNE, target);
+ }
+
+
+ /**
+ * @return negation of instruction
+ */
+ public IfInstruction negate() {
+ return new IF_ICMPEQ(target);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitBranchInstruction(this);
+ v.visitIfInstruction(this);
+ v.visitIF_ICMPNE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IINC.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IINC.java
index 22669130..4a09d2e5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IINC.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IINC.java
@@ -1,159 +1,159 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * IINC - Increment local variable by constant
- *
- * @version $Id: IINC.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IINC extends LocalVariableInstruction {
-
- private boolean wide;
- private int c;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IINC() {
- }
-
-
- /**
- * @param n index of local variable
- * @param c increment factor
- */
- public IINC(int n, int c) {
- super(); // Default behaviour of LocalVariableInstruction causes error
- this.opcode = org.apache.bcel5_2_0.Constants.IINC;
- this.length = (short) 3;
- setIndex(n); // May set wide as side effect
- setIncrement(c);
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- if (wide) {
- out.writeByte(org.apache.bcel5_2_0.Constants.WIDE);
- }
- out.writeByte(opcode);
- if (wide) {
- out.writeShort(n);
- out.writeShort(c);
- } else {
- out.writeByte(n);
- out.writeByte(c);
- }
- }
-
-
- private final void setWide() {
- wide = (n > org.apache.bcel5_2_0.Constants.MAX_BYTE) || (Math.abs(c) > Byte.MAX_VALUE);
- if (wide) {
- length = 6; // wide byte included
- } else {
- length = 3;
- }
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- this.wide = wide;
- if (wide) {
- length = 6;
- n = bytes.readUnsignedShort();
- c = bytes.readShort();
- } else {
- length = 3;
- n = bytes.readUnsignedByte();
- c = bytes.readByte();
- }
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- return super.toString(verbose) + " " + c;
- }
-
-
- /**
- * Set index of local variable.
- */
- public final void setIndex( int n ) {
- if (n < 0) {
- throw new ClassGenException("Negative index value: " + n);
- }
- this.n = n;
- setWide();
- }
-
-
- /**
- * @return increment factor
- */
- public final int getIncrement() {
- return c;
- }
-
-
- /**
- * Set increment factor.
- */
- public final void setIncrement( int c ) {
- this.c = c;
- setWide();
- }
-
-
- /** @return int type
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.INT;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLocalVariableInstruction(this);
- v.visitIINC(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * IINC - Increment local variable by constant
+ *
+ * @version $Id: IINC.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IINC extends LocalVariableInstruction {
+
+ private boolean wide;
+ private int c;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IINC() {
+ }
+
+
+ /**
+ * @param n index of local variable
+ * @param c increment factor
+ */
+ public IINC(int n, int c) {
+ super(); // Default behaviour of LocalVariableInstruction causes error
+ this.opcode = org.apache.bcel5_2_0.Constants.IINC;
+ this.length = (short) 3;
+ setIndex(n); // May set wide as side effect
+ setIncrement(c);
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ if (wide) {
+ out.writeByte(org.apache.bcel5_2_0.Constants.WIDE);
+ }
+ out.writeByte(opcode);
+ if (wide) {
+ out.writeShort(n);
+ out.writeShort(c);
+ } else {
+ out.writeByte(n);
+ out.writeByte(c);
+ }
+ }
+
+
+ private final void setWide() {
+ wide = (n > org.apache.bcel5_2_0.Constants.MAX_BYTE) || (Math.abs(c) > Byte.MAX_VALUE);
+ if (wide) {
+ length = 6; // wide byte included
+ } else {
+ length = 3;
+ }
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ this.wide = wide;
+ if (wide) {
+ length = 6;
+ n = bytes.readUnsignedShort();
+ c = bytes.readShort();
+ } else {
+ length = 3;
+ n = bytes.readUnsignedByte();
+ c = bytes.readByte();
+ }
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ return super.toString(verbose) + " " + c;
+ }
+
+
+ /**
+ * Set index of local variable.
+ */
+ public final void setIndex( int n ) {
+ if (n < 0) {
+ throw new ClassGenException("Negative index value: " + n);
+ }
+ this.n = n;
+ setWide();
+ }
+
+
+ /**
+ * @return increment factor
+ */
+ public final int getIncrement() {
+ return c;
+ }
+
+
+ /**
+ * Set increment factor.
+ */
+ public final void setIncrement( int c ) {
+ this.c = c;
+ setWide();
+ }
+
+
+ /** @return int type
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.INT;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLocalVariableInstruction(this);
+ v.visitIINC(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ILOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ILOAD.java
index 2430ed11..c44c5b8a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ILOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ILOAD.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ILOAD - Load int from local variable onto stack
- * Stack: ... -> ..., result
- *
- * @version $Id: ILOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ILOAD extends LoadInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ILOAD() {
- super(org.apache.bcel5_2_0.Constants.ILOAD, org.apache.bcel5_2_0.Constants.ILOAD_0);
- }
-
-
- /** Load int from local variable
- * @param n index of local variable
- */
- public ILOAD(int n) {
- super(org.apache.bcel5_2_0.Constants.ILOAD, org.apache.bcel5_2_0.Constants.ILOAD_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitILOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ILOAD - Load int from local variable onto stack
+ * Stack: ... -> ..., result
+ *
+ * @version $Id: ILOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ILOAD extends LoadInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ILOAD() {
+ super(org.apache.bcel5_2_0.Constants.ILOAD, org.apache.bcel5_2_0.Constants.ILOAD_0);
+ }
+
+
+ /** Load int from local variable
+ * @param n index of local variable
+ */
+ public ILOAD(int n) {
+ super(org.apache.bcel5_2_0.Constants.ILOAD, org.apache.bcel5_2_0.Constants.ILOAD_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitILOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP1.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP1.java
index 88b3a021..16390757 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP1.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP1.java
@@ -1,43 +1,43 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IMPDEP1 - Implementation dependent
- *
- * @version $Id: IMPDEP1.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IMPDEP1 extends Instruction {
-
- public IMPDEP1() {
- super(org.apache.bcel5_2_0.Constants.IMPDEP1, (short) 1);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitIMPDEP1(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IMPDEP1 - Implementation dependent
+ *
+ * @version $Id: IMPDEP1.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IMPDEP1 extends Instruction {
+
+ public IMPDEP1() {
+ super(org.apache.bcel5_2_0.Constants.IMPDEP1, (short) 1);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitIMPDEP1(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP2.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP2.java
index 16cf3b4c..75d9a9ef 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP2.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMPDEP2.java
@@ -1,43 +1,43 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IMPDEP2 - Implementation dependent
- *
- * @version $Id: IMPDEP2.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IMPDEP2 extends Instruction {
-
- public IMPDEP2() {
- super(org.apache.bcel5_2_0.Constants.IMPDEP2, (short) 1);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitIMPDEP2(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IMPDEP2 - Implementation dependent
+ *
+ * @version $Id: IMPDEP2.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IMPDEP2 extends Instruction {
+
+ public IMPDEP2() {
+ super(org.apache.bcel5_2_0.Constants.IMPDEP2, (short) 1);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitIMPDEP2(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMUL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMUL.java
index f9ae5876..fc76e444 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMUL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IMUL.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IMUL - Multiply ints
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: IMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IMUL extends ArithmeticInstruction {
-
- /** Multiply ints
- */
- public IMUL() {
- super(org.apache.bcel5_2_0.Constants.IMUL);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIMUL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IMUL - Multiply ints
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: IMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IMUL extends ArithmeticInstruction {
+
+ /** Multiply ints
+ */
+ public IMUL() {
+ super(org.apache.bcel5_2_0.Constants.IMUL);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIMUL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INEG.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INEG.java
index 5d839665..409f36e9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INEG.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INEG.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * INEG - Negate int
- * Stack: ..., value -> ..., result
- *
- * @version $Id: INEG.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class INEG extends ArithmeticInstruction {
-
- public INEG() {
- super(org.apache.bcel5_2_0.Constants.INEG);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitINEG(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * INEG - Negate int
+ * Stack: ..., value -> ..., result
+ *
+ * @version $Id: INEG.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class INEG extends ArithmeticInstruction {
+
+ public INEG() {
+ super(org.apache.bcel5_2_0.Constants.INEG);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitINEG(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INSTANCEOF.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INSTANCEOF.java
index c1ef93dc..99a676aa 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INSTANCEOF.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INSTANCEOF.java
@@ -1,73 +1,73 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * INSTANCEOF - Determine if object is of given type
- * Stack: ..., objectref -> ..., result
- *
- * @version $Id: INSTANCEOF.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class INSTANCEOF extends CPInstruction implements LoadClass, ExceptionThrower,
- StackProducer, StackConsumer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- INSTANCEOF() {
- }
-
-
- public INSTANCEOF(int index) {
- super(org.apache.bcel5_2_0.Constants.INSTANCEOF, index);
- }
-
-
- public Class[] getExceptions() {
- return org.apache.bcel5_2_0.ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION;
- }
-
-
- public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
- Type t = getType(cpg);
- if (t instanceof ArrayType) {
- t = ((ArrayType) t).getBasicType();
- }
- return (t instanceof ObjectType) ? (ObjectType) t : null;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLoadClass(this);
- v.visitExceptionThrower(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitTypedInstruction(this);
- v.visitCPInstruction(this);
- v.visitINSTANCEOF(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * INSTANCEOF - Determine if object is of given type
+ * Stack: ..., objectref -> ..., result
+ *
+ * @version $Id: INSTANCEOF.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class INSTANCEOF extends CPInstruction implements LoadClass, ExceptionThrower,
+ StackProducer, StackConsumer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ INSTANCEOF() {
+ }
+
+
+ public INSTANCEOF(int index) {
+ super(org.apache.bcel5_2_0.Constants.INSTANCEOF, index);
+ }
+
+
+ public Class[] getExceptions() {
+ return org.apache.bcel5_2_0.ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION;
+ }
+
+
+ public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
+ Type t = getType(cpg);
+ if (t instanceof ArrayType) {
+ t = ((ArrayType) t).getBasicType();
+ }
+ return (t instanceof ObjectType) ? (ObjectType) t : null;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLoadClass(this);
+ v.visitExceptionThrower(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitTypedInstruction(this);
+ v.visitCPInstruction(this);
+ v.visitINSTANCEOF(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEINTERFACE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEINTERFACE.java
index 72d9959c..af69c14a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEINTERFACE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEINTERFACE.java
@@ -1,133 +1,133 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * INVOKEINTERFACE - Invoke interface method
- * Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
- *
- * @version $Id: INVOKEINTERFACE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class INVOKEINTERFACE extends InvokeInstruction {
-
- private int nargs; // Number of arguments on stack (number of stack slots), called "count" in vmspec2
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- INVOKEINTERFACE() {
- }
-
-
- public INVOKEINTERFACE(int index, int nargs) {
- super(Constants.INVOKEINTERFACE, index);
- length = 5;
- if (nargs < 1) {
- throw new ClassGenException("Number of arguments must be > 0 " + nargs);
- }
- this.nargs = nargs;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode);
- out.writeShort(index);
- out.writeByte(nargs);
- out.writeByte(0);
- }
-
-
- /**
- * The count argument according to the Java Language Specification,
- * Second Edition.
- */
- public int getCount() {
- return nargs;
- }
-
-
- /**
- * Read needed data (i.e., index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- super.initFromFile(bytes, wide);
- length = 5;
- nargs = bytes.readUnsignedByte();
- bytes.readByte(); // Skip 0 byte
- }
-
-
- /**
- * @return mnemonic for instruction with symbolic references resolved
- */
- public String toString( ConstantPool cp ) {
- return super.toString(cp) + " " + nargs;
- }
-
-
- public int consumeStack( ConstantPoolGen cpg ) { // nargs is given in byte-code
- return nargs; // nargs includes this reference
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[4 + ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length + 3] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length + 2] = ExceptionConstants.ILLEGAL_ACCESS_ERROR;
- cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length + 1] = ExceptionConstants.ABSTRACT_METHOD_ERROR;
- cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitStackProducer(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitInvokeInstruction(this);
- v.visitINVOKEINTERFACE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * INVOKEINTERFACE - Invoke interface method
+ * Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
+ *
+ * @version $Id: INVOKEINTERFACE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class INVOKEINTERFACE extends InvokeInstruction {
+
+ private int nargs; // Number of arguments on stack (number of stack slots), called "count" in vmspec2
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ INVOKEINTERFACE() {
+ }
+
+
+ public INVOKEINTERFACE(int index, int nargs) {
+ super(Constants.INVOKEINTERFACE, index);
+ length = 5;
+ if (nargs < 1) {
+ throw new ClassGenException("Number of arguments must be > 0 " + nargs);
+ }
+ this.nargs = nargs;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode);
+ out.writeShort(index);
+ out.writeByte(nargs);
+ out.writeByte(0);
+ }
+
+
+ /**
+ * The count argument according to the Java Language Specification,
+ * Second Edition.
+ */
+ public int getCount() {
+ return nargs;
+ }
+
+
+ /**
+ * Read needed data (i.e., index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ super.initFromFile(bytes, wide);
+ length = 5;
+ nargs = bytes.readUnsignedByte();
+ bytes.readByte(); // Skip 0 byte
+ }
+
+
+ /**
+ * @return mnemonic for instruction with symbolic references resolved
+ */
+ public String toString( ConstantPool cp ) {
+ return super.toString(cp) + " " + nargs;
+ }
+
+
+ public int consumeStack( ConstantPoolGen cpg ) { // nargs is given in byte-code
+ return nargs; // nargs includes this reference
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[4 + ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length + 3] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length + 2] = ExceptionConstants.ILLEGAL_ACCESS_ERROR;
+ cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length + 1] = ExceptionConstants.ABSTRACT_METHOD_ERROR;
+ cs[ExceptionConstants.EXCS_INTERFACE_METHOD_RESOLUTION.length] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitStackProducer(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitInvokeInstruction(this);
+ v.visitINVOKEINTERFACE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESPECIAL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESPECIAL.java
index 1fc3c233..0affd8bb 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESPECIAL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESPECIAL.java
@@ -1,77 +1,77 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * INVOKESPECIAL - Invoke instance method; special handling for superclass, private
- * and instance initialization method invocations
- *
- * Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
- *
- * @version $Id: INVOKESPECIAL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class INVOKESPECIAL extends InvokeInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- INVOKESPECIAL() {
- }
-
-
- public INVOKESPECIAL(int index) {
- super(Constants.INVOKESPECIAL, index);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[4 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 3] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 2] = ExceptionConstants.ABSTRACT_METHOD_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitStackProducer(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitInvokeInstruction(this);
- v.visitINVOKESPECIAL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * INVOKESPECIAL - Invoke instance method; special handling for superclass, private
+ * and instance initialization method invocations
+ *
+ * Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
+ *
+ * @version $Id: INVOKESPECIAL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class INVOKESPECIAL extends InvokeInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ INVOKESPECIAL() {
+ }
+
+
+ public INVOKESPECIAL(int index) {
+ super(Constants.INVOKESPECIAL, index);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[4 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 3] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 2] = ExceptionConstants.ABSTRACT_METHOD_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitStackProducer(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitInvokeInstruction(this);
+ v.visitINVOKESPECIAL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESTATIC.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESTATIC.java
index fc2b8f8f..8081e9dc 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESTATIC.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKESTATIC.java
@@ -1,74 +1,74 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * INVOKESTATIC - Invoke a class (static) method
- *
- * Stack: ..., [arg1, [arg2 ...]] -> ...
- *
- * @version $Id: INVOKESTATIC.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class INVOKESTATIC extends InvokeInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- INVOKESTATIC() {
- }
-
-
- public INVOKESTATIC(int index) {
- super(Constants.INVOKESTATIC, index);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[2 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitStackProducer(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitInvokeInstruction(this);
- v.visitINVOKESTATIC(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * INVOKESTATIC - Invoke a class (static) method
+ *
+ * Stack: ..., [arg1, [arg2 ...]] -> ...
+ *
+ * @version $Id: INVOKESTATIC.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class INVOKESTATIC extends InvokeInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ INVOKESTATIC() {
+ }
+
+
+ public INVOKESTATIC(int index) {
+ super(Constants.INVOKESTATIC, index);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[2 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitStackProducer(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitInvokeInstruction(this);
+ v.visitINVOKESTATIC(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEVIRTUAL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEVIRTUAL.java
index 9c7c1df5..d994b72a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEVIRTUAL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/INVOKEVIRTUAL.java
@@ -1,76 +1,76 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * INVOKEVIRTUAL - Invoke instance method; dispatch based on class
- *
- * Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
- *
- * @version $Id: INVOKEVIRTUAL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class INVOKEVIRTUAL extends InvokeInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- INVOKEVIRTUAL() {
- }
-
-
- public INVOKEVIRTUAL(int index) {
- super(Constants.INVOKEVIRTUAL, index);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[4 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 3] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 2] = ExceptionConstants.ABSTRACT_METHOD_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitStackProducer(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitInvokeInstruction(this);
- v.visitINVOKEVIRTUAL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * INVOKEVIRTUAL - Invoke instance method; dispatch based on class
+ *
+ * Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
+ *
+ * @version $Id: INVOKEVIRTUAL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class INVOKEVIRTUAL extends InvokeInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ INVOKEVIRTUAL() {
+ }
+
+
+ public INVOKEVIRTUAL(int index) {
+ super(Constants.INVOKEVIRTUAL, index);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[4 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 3] = ExceptionConstants.UNSATISFIED_LINK_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 2] = ExceptionConstants.ABSTRACT_METHOD_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitStackProducer(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitInvokeInstruction(this);
+ v.visitINVOKEVIRTUAL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IOR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IOR.java
index 8ba8dd68..993fd1f3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IOR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IOR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IOR - Bitwise OR int
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: IOR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IOR extends ArithmeticInstruction {
-
- public IOR() {
- super(org.apache.bcel5_2_0.Constants.IOR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIOR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IOR - Bitwise OR int
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: IOR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IOR extends ArithmeticInstruction {
+
+ public IOR() {
+ super(org.apache.bcel5_2_0.Constants.IOR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIOR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IREM.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IREM.java
index b89cf797..1065b1f7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IREM.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IREM.java
@@ -1,60 +1,60 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IREM - Remainder of int
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: IREM.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IREM extends ArithmeticInstruction implements ExceptionThrower {
-
- /** Remainder of ints
- */
- public IREM() {
- super(org.apache.bcel5_2_0.Constants.IREM);
- }
-
-
- /** @return exceptions this instruction may cause
- */
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIREM(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IREM - Remainder of int
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: IREM.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IREM extends ArithmeticInstruction implements ExceptionThrower {
+
+ /** Remainder of ints
+ */
+ public IREM() {
+ super(org.apache.bcel5_2_0.Constants.IREM);
+ }
+
+
+ /** @return exceptions this instruction may cause
+ */
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIREM(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IRETURN.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IRETURN.java
index edba9ad9..50b3c0f6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IRETURN.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IRETURN.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IRETURN - Return int from method
- * Stack: ..., value -> <empty>
- *
- * @version $Id: IRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IRETURN extends ReturnInstruction {
-
- /** Return int from method
- */
- public IRETURN() {
- super(org.apache.bcel5_2_0.Constants.IRETURN);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitReturnInstruction(this);
- v.visitIRETURN(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IRETURN - Return int from method
+ * Stack: ..., value -> <empty>
+ *
+ * @version $Id: IRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IRETURN extends ReturnInstruction {
+
+ /** Return int from method
+ */
+ public IRETURN() {
+ super(org.apache.bcel5_2_0.Constants.IRETURN);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitReturnInstruction(this);
+ v.visitIRETURN(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHL.java
index 6a4f3804..4b9ab4ca 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHL.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ISHL - Arithmetic shift left int
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: ISHL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ISHL extends ArithmeticInstruction {
-
- public ISHL() {
- super(org.apache.bcel5_2_0.Constants.ISHL);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitISHL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ISHL - Arithmetic shift left int
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: ISHL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ISHL extends ArithmeticInstruction {
+
+ public ISHL() {
+ super(org.apache.bcel5_2_0.Constants.ISHL);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitISHL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHR.java
index 2e479317..bca7960d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISHR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ISHR - Arithmetic shift right int
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: ISHR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ISHR extends ArithmeticInstruction {
-
- public ISHR() {
- super(org.apache.bcel5_2_0.Constants.ISHR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitISHR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ISHR - Arithmetic shift right int
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: ISHR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ISHR extends ArithmeticInstruction {
+
+ public ISHR() {
+ super(org.apache.bcel5_2_0.Constants.ISHR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitISHR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISTORE.java
index f1e345e7..f4ba4469 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISTORE.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ISTORE - Store int from stack into local variable
- * Stack: ..., value -> ...
- *
- * @version $Id: ISTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ISTORE extends StoreInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ISTORE() {
- super(org.apache.bcel5_2_0.Constants.ISTORE, org.apache.bcel5_2_0.Constants.ISTORE_0);
- }
-
-
- /** Store int into local variable
- * @param n index of local variable
- */
- public ISTORE(int n) {
- super(org.apache.bcel5_2_0.Constants.ISTORE, org.apache.bcel5_2_0.Constants.ISTORE_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitISTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ISTORE - Store int from stack into local variable
+ * Stack: ..., value -> ...
+ *
+ * @version $Id: ISTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ISTORE extends StoreInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ISTORE() {
+ super(org.apache.bcel5_2_0.Constants.ISTORE, org.apache.bcel5_2_0.Constants.ISTORE_0);
+ }
+
+
+ /** Store int into local variable
+ * @param n index of local variable
+ */
+ public ISTORE(int n) {
+ super(org.apache.bcel5_2_0.Constants.ISTORE, org.apache.bcel5_2_0.Constants.ISTORE_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitISTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISUB.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISUB.java
index 88adf19b..e16a5a4d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISUB.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ISUB.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * ISUB - Substract ints
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: ISUB.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ISUB extends ArithmeticInstruction {
-
- /** Substract ints
- */
- public ISUB() {
- super(org.apache.bcel5_2_0.Constants.ISUB);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitISUB(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * ISUB - Substract ints
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: ISUB.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ISUB extends ArithmeticInstruction {
+
+ /** Substract ints
+ */
+ public ISUB() {
+ super(org.apache.bcel5_2_0.Constants.ISUB);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitISUB(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IUSHR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IUSHR.java
index 54409be9..e5398fe5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IUSHR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IUSHR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IUSHR - Logical shift right int
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: IUSHR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IUSHR extends ArithmeticInstruction {
-
- public IUSHR() {
- super(org.apache.bcel5_2_0.Constants.IUSHR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIUSHR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IUSHR - Logical shift right int
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: IUSHR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IUSHR extends ArithmeticInstruction {
+
+ public IUSHR() {
+ super(org.apache.bcel5_2_0.Constants.IUSHR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIUSHR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IXOR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IXOR.java
index 9e5491ce..7e230f36 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IXOR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IXOR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * IXOR - Bitwise XOR int
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: IXOR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class IXOR extends ArithmeticInstruction {
-
- public IXOR() {
- super(org.apache.bcel5_2_0.Constants.IXOR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitIXOR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * IXOR - Bitwise XOR int
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: IXOR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class IXOR extends ArithmeticInstruction {
+
+ public IXOR() {
+ super(org.apache.bcel5_2_0.Constants.IXOR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitIXOR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IfInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IfInstruction.java
index acd5317b..46707cb7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IfInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IfInstruction.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Super class for the IFxxx family of instructions.
- *
- * @version $Id: IfInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class IfInstruction extends BranchInstruction implements StackConsumer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- IfInstruction() {
- }
-
-
- /**
- * @param opcode opcode of instruction
- * @param target Target instruction to branch to
- */
- protected IfInstruction(short opcode, InstructionHandle target) {
- super(opcode, target);
- }
-
-
- /**
- * @return negation of instruction, e.g. IFEQ.negate() == IFNE
- */
- public abstract IfInstruction negate();
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Super class for the IFxxx family of instructions.
+ *
+ * @version $Id: IfInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class IfInstruction extends BranchInstruction implements StackConsumer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ IfInstruction() {
+ }
+
+
+ /**
+ * @param opcode opcode of instruction
+ * @param target Target instruction to branch to
+ */
+ protected IfInstruction(short opcode, InstructionHandle target) {
+ super(opcode, target);
+ }
+
+
+ /**
+ * @return negation of instruction, e.g. IFEQ.negate() == IFNE
+ */
+ public abstract IfInstruction negate();
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IndexedInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IndexedInstruction.java
index 023de3fa..0a4fdc4e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IndexedInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/IndexedInstruction.java
@@ -1,32 +1,32 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denote entity that refers to an index, e.g. local variable instructions,
- * RET, CPInstruction, etc.
- *
- * @version $Id: IndexedInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface IndexedInstruction {
-
- public int getIndex();
-
-
- public void setIndex( int index );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denote entity that refers to an index, e.g. local variable instructions,
+ * RET, CPInstruction, etc.
+ *
+ * @version $Id: IndexedInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface IndexedInstruction {
+
+ public int getIndex();
+
+
+ public void setIndex( int index );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Instruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Instruction.java
index d3be0bd8..920bed5f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Instruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Instruction.java
@@ -1,293 +1,293 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Locale;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * Abstract super class for all Java byte codes.
- *
- * @version $Id: Instruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class Instruction implements Cloneable, Serializable {
-
- protected short length = 1; // Length of instruction in bytes
- protected short opcode = -1; // Opcode number
- private static InstructionComparator cmp = InstructionComparator.DEFAULT;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- Instruction() {
- }
-
-
- public Instruction(short opcode, short length) {
- this.length = length;
- this.opcode = opcode;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode); // Common for all instructions
- }
-
-
- /** @return name of instruction, i.e., opcode name
- */
- public String getName() {
- return Constants.OPCODE_NAMES[opcode];
- }
-
-
- /**
- * Long output format:
- *
- * <name of opcode> "["<opcode number>"]"
- * "("<length of instruction>")"
- *
- * @param verbose long/short format switch
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- if (verbose) {
- return getName() + "[" + opcode + "](" + length + ")";
- } else {
- return getName();
- }
- }
-
-
- /**
- * @return mnemonic for instruction in verbose format
- */
- public String toString() {
- return toString(true);
- }
-
-
- /**
- * @return mnemonic for instruction with sumbolic references resolved
- */
- public String toString( ConstantPool cp ) {
- return toString(false);
- }
-
-
- /**
- * Use with caution, since `BranchInstruction's have a `target' reference which
- * is not copied correctly (only basic types are). This also applies for
- * `Select' instructions with their multiple branch targets.
- *
- * @see BranchInstruction
- * @return (shallow) copy of an instruction
- */
- public Instruction copy() {
- Instruction i = null;
- // "Constant" instruction, no need to duplicate
- if (InstructionConstants.INSTRUCTIONS[this.getOpcode()] != null) {
- i = this;
- } else {
- try {
- i = (Instruction) clone();
- } catch (CloneNotSupportedException e) {
- System.err.println(e);
- }
- }
- return i;
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- *
- * @param bytes byte sequence to read from
- * @param wide "wide" instruction flag
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- }
-
-
- /**
- * Read an instruction from (byte code) input stream and return the
- * appropiate object.
- *
- * @param bytes input stream bytes
- * @return instruction object being read
- */
- public static final Instruction readInstruction( ByteSequence bytes ) throws IOException {
- boolean wide = false;
- short opcode = (short) bytes.readUnsignedByte();
- Instruction obj = null;
- if (opcode == Constants.WIDE) { // Read next opcode after wide byte
- wide = true;
- opcode = (short) bytes.readUnsignedByte();
- }
- if (InstructionConstants.INSTRUCTIONS[opcode] != null) {
- return InstructionConstants.INSTRUCTIONS[opcode]; // Used predefined immutable object, if available
- }
- /* Find appropiate class, instantiate an (empty) instruction object
- * and initialize it by hand.
- */
- Class clazz;
- try {
- clazz = Class.forName(className(opcode));
- } catch (ClassNotFoundException cnfe) {
- // If a class by that name does not exist, the opcode is illegal.
- // Note that IMPDEP1, IMPDEP2, BREAKPOINT are also illegal in a sense.
- throw new ClassGenException("Illegal opcode detected.");
- }
- try {
- obj = (Instruction) clazz.newInstance();
- if (wide
- && !((obj instanceof LocalVariableInstruction) || (obj instanceof IINC) || (obj instanceof RET))) {
- throw new Exception("Illegal opcode after wide: " + opcode);
- }
- obj.setOpcode(opcode);
- obj.initFromFile(bytes, wide); // Do further initializations, if any
- // Byte code offset set in InstructionList
- } catch (Exception e) {
- throw new ClassGenException(e.toString());
- }
- return obj;
- }
-
-
- private static final String className( short opcode ) {
- String name = Constants.OPCODE_NAMES[opcode].toUpperCase(Locale.ENGLISH);
- /* ICONST_0, etc. will be shortened to ICONST, etc., since ICONST_0 and the like
- * are not implemented (directly).
- */
- try {
- int len = name.length();
- char ch1 = name.charAt(len - 2), ch2 = name.charAt(len - 1);
- if ((ch1 == '_') && (ch2 >= '0') && (ch2 <= '5')) {
- name = name.substring(0, len - 2);
- }
- if (name.equals("ICONST_M1")) {
- name = "ICONST";
- }
- } catch (StringIndexOutOfBoundsException e) {
- System.err.println(e);
- }
- return "org.apache.bcel.generic." + name;
- }
-
-
- /**
- * This method also gives right results for instructions whose
- * effect on the stack depends on the constant pool entry they
- * reference.
- * @return Number of words consumed from stack by this instruction,
- * or Constants.UNPREDICTABLE, if this can not be computed statically
- */
- public int consumeStack( ConstantPoolGen cpg ) {
- return Constants.CONSUME_STACK[opcode];
- }
-
-
- /**
- * This method also gives right results for instructions whose
- * effect on the stack depends on the constant pool entry they
- * reference.
- * @return Number of words produced onto stack by this instruction,
- * or Constants.UNPREDICTABLE, if this can not be computed statically
- */
- public int produceStack( ConstantPoolGen cpg ) {
- return Constants.PRODUCE_STACK[opcode];
- }
-
-
- /**
- * @return this instructions opcode
- */
- public short getOpcode() {
- return opcode;
- }
-
-
- /**
- * @return length (in bytes) of instruction
- */
- public int getLength() {
- return length;
- }
-
-
- /**
- * Needed in readInstruction.
- */
- private void setOpcode( short opcode ) {
- this.opcode = opcode;
- }
-
-
- /** Some instructions may be reused, so don't do anything by default.
- */
- void dispose() {
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public abstract void accept( Visitor v );
-
-
- /** Get Comparator object used in the equals() method to determine
- * equality of instructions.
- *
- * @return currently used comparator for equals()
- */
- public static InstructionComparator getComparator() {
- return cmp;
- }
-
-
- /** Set comparator to be used for equals().
- */
- public static void setComparator( InstructionComparator c ) {
- cmp = c;
- }
-
-
- /** Check for equality, delegated to comparator
- * @return true if that is an Instruction and has the same opcode
- */
- public boolean equals( Object that ) {
- return (that instanceof Instruction) ? cmp.equals(this, (Instruction) that) : false;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Locale;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * Abstract super class for all Java byte codes.
+ *
+ * @version $Id: Instruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class Instruction implements Cloneable, Serializable {
+
+ protected short length = 1; // Length of instruction in bytes
+ protected short opcode = -1; // Opcode number
+ private static InstructionComparator cmp = InstructionComparator.DEFAULT;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ Instruction() {
+ }
+
+
+ public Instruction(short opcode, short length) {
+ this.length = length;
+ this.opcode = opcode;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode); // Common for all instructions
+ }
+
+
+ /** @return name of instruction, i.e., opcode name
+ */
+ public String getName() {
+ return Constants.OPCODE_NAMES[opcode];
+ }
+
+
+ /**
+ * Long output format:
+ *
+ * <name of opcode> "["<opcode number>"]"
+ * "("<length of instruction>")"
+ *
+ * @param verbose long/short format switch
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ if (verbose) {
+ return getName() + "[" + opcode + "](" + length + ")";
+ } else {
+ return getName();
+ }
+ }
+
+
+ /**
+ * @return mnemonic for instruction in verbose format
+ */
+ public String toString() {
+ return toString(true);
+ }
+
+
+ /**
+ * @return mnemonic for instruction with sumbolic references resolved
+ */
+ public String toString( ConstantPool cp ) {
+ return toString(false);
+ }
+
+
+ /**
+ * Use with caution, since `BranchInstruction's have a `target' reference which
+ * is not copied correctly (only basic types are). This also applies for
+ * `Select' instructions with their multiple branch targets.
+ *
+ * @see BranchInstruction
+ * @return (shallow) copy of an instruction
+ */
+ public Instruction copy() {
+ Instruction i = null;
+ // "Constant" instruction, no need to duplicate
+ if (InstructionConstants.INSTRUCTIONS[this.getOpcode()] != null) {
+ i = this;
+ } else {
+ try {
+ i = (Instruction) clone();
+ } catch (CloneNotSupportedException e) {
+ System.err.println(e);
+ }
+ }
+ return i;
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ *
+ * @param bytes byte sequence to read from
+ * @param wide "wide" instruction flag
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ }
+
+
+ /**
+ * Read an instruction from (byte code) input stream and return the
+ * appropiate object.
+ *
+ * @param bytes input stream bytes
+ * @return instruction object being read
+ */
+ public static final Instruction readInstruction( ByteSequence bytes ) throws IOException {
+ boolean wide = false;
+ short opcode = (short) bytes.readUnsignedByte();
+ Instruction obj = null;
+ if (opcode == Constants.WIDE) { // Read next opcode after wide byte
+ wide = true;
+ opcode = (short) bytes.readUnsignedByte();
+ }
+ if (InstructionConstants.INSTRUCTIONS[opcode] != null) {
+ return InstructionConstants.INSTRUCTIONS[opcode]; // Used predefined immutable object, if available
+ }
+ /* Find appropiate class, instantiate an (empty) instruction object
+ * and initialize it by hand.
+ */
+ Class clazz;
+ try {
+ clazz = Class.forName(className(opcode));
+ } catch (ClassNotFoundException cnfe) {
+ // If a class by that name does not exist, the opcode is illegal.
+ // Note that IMPDEP1, IMPDEP2, BREAKPOINT are also illegal in a sense.
+ throw new ClassGenException("Illegal opcode detected.");
+ }
+ try {
+ obj = (Instruction) clazz.newInstance();
+ if (wide
+ && !((obj instanceof LocalVariableInstruction) || (obj instanceof IINC) || (obj instanceof RET))) {
+ throw new Exception("Illegal opcode after wide: " + opcode);
+ }
+ obj.setOpcode(opcode);
+ obj.initFromFile(bytes, wide); // Do further initializations, if any
+ // Byte code offset set in InstructionList
+ } catch (Exception e) {
+ throw new ClassGenException(e.toString());
+ }
+ return obj;
+ }
+
+
+ private static final String className( short opcode ) {
+ String name = Constants.OPCODE_NAMES[opcode].toUpperCase(Locale.ENGLISH);
+ /* ICONST_0, etc. will be shortened to ICONST, etc., since ICONST_0 and the like
+ * are not implemented (directly).
+ */
+ try {
+ int len = name.length();
+ char ch1 = name.charAt(len - 2), ch2 = name.charAt(len - 1);
+ if ((ch1 == '_') && (ch2 >= '0') && (ch2 <= '5')) {
+ name = name.substring(0, len - 2);
+ }
+ if (name.equals("ICONST_M1")) {
+ name = "ICONST";
+ }
+ } catch (StringIndexOutOfBoundsException e) {
+ System.err.println(e);
+ }
+ return "org.apache.bcel.generic." + name;
+ }
+
+
+ /**
+ * This method also gives right results for instructions whose
+ * effect on the stack depends on the constant pool entry they
+ * reference.
+ * @return Number of words consumed from stack by this instruction,
+ * or Constants.UNPREDICTABLE, if this can not be computed statically
+ */
+ public int consumeStack( ConstantPoolGen cpg ) {
+ return Constants.CONSUME_STACK[opcode];
+ }
+
+
+ /**
+ * This method also gives right results for instructions whose
+ * effect on the stack depends on the constant pool entry they
+ * reference.
+ * @return Number of words produced onto stack by this instruction,
+ * or Constants.UNPREDICTABLE, if this can not be computed statically
+ */
+ public int produceStack( ConstantPoolGen cpg ) {
+ return Constants.PRODUCE_STACK[opcode];
+ }
+
+
+ /**
+ * @return this instructions opcode
+ */
+ public short getOpcode() {
+ return opcode;
+ }
+
+
+ /**
+ * @return length (in bytes) of instruction
+ */
+ public int getLength() {
+ return length;
+ }
+
+
+ /**
+ * Needed in readInstruction.
+ */
+ private void setOpcode( short opcode ) {
+ this.opcode = opcode;
+ }
+
+
+ /** Some instructions may be reused, so don't do anything by default.
+ */
+ void dispose() {
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public abstract void accept( Visitor v );
+
+
+ /** Get Comparator object used in the equals() method to determine
+ * equality of instructions.
+ *
+ * @return currently used comparator for equals()
+ */
+ public static InstructionComparator getComparator() {
+ return cmp;
+ }
+
+
+ /** Set comparator to be used for equals().
+ */
+ public static void setComparator( InstructionComparator c ) {
+ cmp = c;
+ }
+
+
+ /** Check for equality, delegated to comparator
+ * @return true if that is an Instruction and has the same opcode
+ */
+ public boolean equals( Object that ) {
+ return (that instanceof Instruction) ? cmp.equals(this, (Instruction) that) : false;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionComparator.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionComparator.java
index 886eb3e1..3ef068e3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionComparator.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionComparator.java
@@ -1,69 +1,69 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Equality of instructions isn't clearly to be defined. You might
- * wish, for example, to compare whether instructions have the same
- * meaning. E.g., whether two INVOKEVIRTUALs describe the same
- * call.
The DEFAULT comparator however, considers two instructions
- * to be equal if they have same opcode and point to the same indexes
- * (if any) in the constant pool or the same local variable index. Branch
- * instructions must have the same target.
- *
- * @see Instruction
- * @version $Id: InstructionComparator.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface InstructionComparator {
-
- public static final InstructionComparator DEFAULT = new InstructionComparator() {
-
- public boolean equals( Instruction i1, Instruction i2 ) {
- if (i1.opcode == i2.opcode) {
- if (i1 instanceof Select) {
- InstructionHandle[] t1 = ((Select) i1).getTargets();
- InstructionHandle[] t2 = ((Select) i2).getTargets();
- if (t1.length == t2.length) {
- for (int i = 0; i < t1.length; i++) {
- if (t1[i] != t2[i]) {
- return false;
- }
- }
- return true;
- }
- } else if (i1 instanceof BranchInstruction) {
- return ((BranchInstruction) i1).target == ((BranchInstruction) i2).target;
- } else if (i1 instanceof ConstantPushInstruction) {
- return ((ConstantPushInstruction) i1).getValue().equals(
- ((ConstantPushInstruction) i2).getValue());
- } else if (i1 instanceof IndexedInstruction) {
- return ((IndexedInstruction) i1).getIndex() == ((IndexedInstruction) i2)
- .getIndex();
- } else if (i1 instanceof NEWARRAY) {
- return ((NEWARRAY) i1).getTypecode() == ((NEWARRAY) i2).getTypecode();
- } else {
- return true;
- }
- }
- return false;
- }
- };
-
-
- public boolean equals( Instruction i1, Instruction i2 );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Equality of instructions isn't clearly to be defined. You might
+ * wish, for example, to compare whether instructions have the same
+ * meaning. E.g., whether two INVOKEVIRTUALs describe the same
+ * call.
The DEFAULT comparator however, considers two instructions
+ * to be equal if they have same opcode and point to the same indexes
+ * (if any) in the constant pool or the same local variable index. Branch
+ * instructions must have the same target.
+ *
+ * @see Instruction
+ * @version $Id: InstructionComparator.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface InstructionComparator {
+
+ public static final InstructionComparator DEFAULT = new InstructionComparator() {
+
+ public boolean equals( Instruction i1, Instruction i2 ) {
+ if (i1.opcode == i2.opcode) {
+ if (i1 instanceof Select) {
+ InstructionHandle[] t1 = ((Select) i1).getTargets();
+ InstructionHandle[] t2 = ((Select) i2).getTargets();
+ if (t1.length == t2.length) {
+ for (int i = 0; i < t1.length; i++) {
+ if (t1[i] != t2[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ } else if (i1 instanceof BranchInstruction) {
+ return ((BranchInstruction) i1).target == ((BranchInstruction) i2).target;
+ } else if (i1 instanceof ConstantPushInstruction) {
+ return ((ConstantPushInstruction) i1).getValue().equals(
+ ((ConstantPushInstruction) i2).getValue());
+ } else if (i1 instanceof IndexedInstruction) {
+ return ((IndexedInstruction) i1).getIndex() == ((IndexedInstruction) i2)
+ .getIndex();
+ } else if (i1 instanceof NEWARRAY) {
+ return ((NEWARRAY) i1).getTypecode() == ((NEWARRAY) i2).getTypecode();
+ } else {
+ return true;
+ }
+ }
+ return false;
+ }
+ };
+
+
+ public boolean equals( Instruction i1, Instruction i2 );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionConstants.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionConstants.java
index a33534f8..3b0f1dd5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionConstants.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionConstants.java
@@ -1,286 +1,286 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * This interface contains shareable instruction objects.
- *
- * In order to save memory you can use some instructions multiply,
- * since they have an immutable state and are directly derived from
- * Instruction. I.e. they have no instance fields that could be
- * changed. Since some of these instructions like ICONST_0 occur
- * very frequently this can save a lot of time and space. This
- * feature is an adaptation of the FlyWeight design pattern, we
- * just use an array instead of a factory.
- *
- * The Instructions can also accessed directly under their names, so
- * it's possible to write il.append(Instruction.ICONST_0);
- *
- * @version $Id: InstructionConstants.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface InstructionConstants {
-
- /** Predefined instruction objects
- */
- public static final Instruction NOP = new NOP();
- public static final Instruction ACONST_NULL = new ACONST_NULL();
- public static final Instruction ICONST_M1 = new ICONST(-1);
- public static final Instruction ICONST_0 = new ICONST(0);
- public static final Instruction ICONST_1 = new ICONST(1);
- public static final Instruction ICONST_2 = new ICONST(2);
- public static final Instruction ICONST_3 = new ICONST(3);
- public static final Instruction ICONST_4 = new ICONST(4);
- public static final Instruction ICONST_5 = new ICONST(5);
- public static final Instruction LCONST_0 = new LCONST(0);
- public static final Instruction LCONST_1 = new LCONST(1);
- public static final Instruction FCONST_0 = new FCONST(0);
- public static final Instruction FCONST_1 = new FCONST(1);
- public static final Instruction FCONST_2 = new FCONST(2);
- public static final Instruction DCONST_0 = new DCONST(0);
- public static final Instruction DCONST_1 = new DCONST(1);
- public static final ArrayInstruction IALOAD = new IALOAD();
- public static final ArrayInstruction LALOAD = new LALOAD();
- public static final ArrayInstruction FALOAD = new FALOAD();
- public static final ArrayInstruction DALOAD = new DALOAD();
- public static final ArrayInstruction AALOAD = new AALOAD();
- public static final ArrayInstruction BALOAD = new BALOAD();
- public static final ArrayInstruction CALOAD = new CALOAD();
- public static final ArrayInstruction SALOAD = new SALOAD();
- public static final ArrayInstruction IASTORE = new IASTORE();
- public static final ArrayInstruction LASTORE = new LASTORE();
- public static final ArrayInstruction FASTORE = new FASTORE();
- public static final ArrayInstruction DASTORE = new DASTORE();
- public static final ArrayInstruction AASTORE = new AASTORE();
- public static final ArrayInstruction BASTORE = new BASTORE();
- public static final ArrayInstruction CASTORE = new CASTORE();
- public static final ArrayInstruction SASTORE = new SASTORE();
- public static final StackInstruction POP = new POP();
- public static final StackInstruction POP2 = new POP2();
- public static final StackInstruction DUP = new DUP();
- public static final StackInstruction DUP_X1 = new DUP_X1();
- public static final StackInstruction DUP_X2 = new DUP_X2();
- public static final StackInstruction DUP2 = new DUP2();
- public static final StackInstruction DUP2_X1 = new DUP2_X1();
- public static final StackInstruction DUP2_X2 = new DUP2_X2();
- public static final StackInstruction SWAP = new SWAP();
- public static final ArithmeticInstruction IADD = new IADD();
- public static final ArithmeticInstruction LADD = new LADD();
- public static final ArithmeticInstruction FADD = new FADD();
- public static final ArithmeticInstruction DADD = new DADD();
- public static final ArithmeticInstruction ISUB = new ISUB();
- public static final ArithmeticInstruction LSUB = new LSUB();
- public static final ArithmeticInstruction FSUB = new FSUB();
- public static final ArithmeticInstruction DSUB = new DSUB();
- public static final ArithmeticInstruction IMUL = new IMUL();
- public static final ArithmeticInstruction LMUL = new LMUL();
- public static final ArithmeticInstruction FMUL = new FMUL();
- public static final ArithmeticInstruction DMUL = new DMUL();
- public static final ArithmeticInstruction IDIV = new IDIV();
- public static final ArithmeticInstruction LDIV = new LDIV();
- public static final ArithmeticInstruction FDIV = new FDIV();
- public static final ArithmeticInstruction DDIV = new DDIV();
- public static final ArithmeticInstruction IREM = new IREM();
- public static final ArithmeticInstruction LREM = new LREM();
- public static final ArithmeticInstruction FREM = new FREM();
- public static final ArithmeticInstruction DREM = new DREM();
- public static final ArithmeticInstruction INEG = new INEG();
- public static final ArithmeticInstruction LNEG = new LNEG();
- public static final ArithmeticInstruction FNEG = new FNEG();
- public static final ArithmeticInstruction DNEG = new DNEG();
- public static final ArithmeticInstruction ISHL = new ISHL();
- public static final ArithmeticInstruction LSHL = new LSHL();
- public static final ArithmeticInstruction ISHR = new ISHR();
- public static final ArithmeticInstruction LSHR = new LSHR();
- public static final ArithmeticInstruction IUSHR = new IUSHR();
- public static final ArithmeticInstruction LUSHR = new LUSHR();
- public static final ArithmeticInstruction IAND = new IAND();
- public static final ArithmeticInstruction LAND = new LAND();
- public static final ArithmeticInstruction IOR = new IOR();
- public static final ArithmeticInstruction LOR = new LOR();
- public static final ArithmeticInstruction IXOR = new IXOR();
- public static final ArithmeticInstruction LXOR = new LXOR();
- public static final ConversionInstruction I2L = new I2L();
- public static final ConversionInstruction I2F = new I2F();
- public static final ConversionInstruction I2D = new I2D();
- public static final ConversionInstruction L2I = new L2I();
- public static final ConversionInstruction L2F = new L2F();
- public static final ConversionInstruction L2D = new L2D();
- public static final ConversionInstruction F2I = new F2I();
- public static final ConversionInstruction F2L = new F2L();
- public static final ConversionInstruction F2D = new F2D();
- public static final ConversionInstruction D2I = new D2I();
- public static final ConversionInstruction D2L = new D2L();
- public static final ConversionInstruction D2F = new D2F();
- public static final ConversionInstruction I2B = new I2B();
- public static final ConversionInstruction I2C = new I2C();
- public static final ConversionInstruction I2S = new I2S();
- public static final Instruction LCMP = new LCMP();
- public static final Instruction FCMPL = new FCMPL();
- public static final Instruction FCMPG = new FCMPG();
- public static final Instruction DCMPL = new DCMPL();
- public static final Instruction DCMPG = new DCMPG();
- public static final ReturnInstruction IRETURN = new IRETURN();
- public static final ReturnInstruction LRETURN = new LRETURN();
- public static final ReturnInstruction FRETURN = new FRETURN();
- public static final ReturnInstruction DRETURN = new DRETURN();
- public static final ReturnInstruction ARETURN = new ARETURN();
- public static final ReturnInstruction RETURN = new RETURN();
- public static final Instruction ARRAYLENGTH = new ARRAYLENGTH();
- public static final Instruction ATHROW = new ATHROW();
- public static final Instruction MONITORENTER = new MONITORENTER();
- public static final Instruction MONITOREXIT = new MONITOREXIT();
- /** You can use these constants in multiple places safely, if you can guarantee
- * that you will never alter their internal values, e.g. call setIndex().
- */
- public static final LocalVariableInstruction THIS = new ALOAD(0);
- public static final LocalVariableInstruction ALOAD_0 = THIS;
- public static final LocalVariableInstruction ALOAD_1 = new ALOAD(1);
- public static final LocalVariableInstruction ALOAD_2 = new ALOAD(2);
- public static final LocalVariableInstruction ILOAD_0 = new ILOAD(0);
- public static final LocalVariableInstruction ILOAD_1 = new ILOAD(1);
- public static final LocalVariableInstruction ILOAD_2 = new ILOAD(2);
- public static final LocalVariableInstruction ASTORE_0 = new ASTORE(0);
- public static final LocalVariableInstruction ASTORE_1 = new ASTORE(1);
- public static final LocalVariableInstruction ASTORE_2 = new ASTORE(2);
- public static final LocalVariableInstruction ISTORE_0 = new ISTORE(0);
- public static final LocalVariableInstruction ISTORE_1 = new ISTORE(1);
- public static final LocalVariableInstruction ISTORE_2 = new ISTORE(2);
- /** Get object via its opcode, for immutable instructions like
- * branch instructions entries are set to null.
- */
- public static final Instruction[] INSTRUCTIONS = new Instruction[256];
- /** Interfaces may have no static initializers, so we simulate this
- * with an inner class.
- */
- static final Clinit bla = new Clinit();
-
- static class Clinit {
-
- Clinit() {
- INSTRUCTIONS[Constants.NOP] = NOP;
- INSTRUCTIONS[Constants.ACONST_NULL] = ACONST_NULL;
- INSTRUCTIONS[Constants.ICONST_M1] = ICONST_M1;
- INSTRUCTIONS[Constants.ICONST_0] = ICONST_0;
- INSTRUCTIONS[Constants.ICONST_1] = ICONST_1;
- INSTRUCTIONS[Constants.ICONST_2] = ICONST_2;
- INSTRUCTIONS[Constants.ICONST_3] = ICONST_3;
- INSTRUCTIONS[Constants.ICONST_4] = ICONST_4;
- INSTRUCTIONS[Constants.ICONST_5] = ICONST_5;
- INSTRUCTIONS[Constants.LCONST_0] = LCONST_0;
- INSTRUCTIONS[Constants.LCONST_1] = LCONST_1;
- INSTRUCTIONS[Constants.FCONST_0] = FCONST_0;
- INSTRUCTIONS[Constants.FCONST_1] = FCONST_1;
- INSTRUCTIONS[Constants.FCONST_2] = FCONST_2;
- INSTRUCTIONS[Constants.DCONST_0] = DCONST_0;
- INSTRUCTIONS[Constants.DCONST_1] = DCONST_1;
- INSTRUCTIONS[Constants.IALOAD] = IALOAD;
- INSTRUCTIONS[Constants.LALOAD] = LALOAD;
- INSTRUCTIONS[Constants.FALOAD] = FALOAD;
- INSTRUCTIONS[Constants.DALOAD] = DALOAD;
- INSTRUCTIONS[Constants.AALOAD] = AALOAD;
- INSTRUCTIONS[Constants.BALOAD] = BALOAD;
- INSTRUCTIONS[Constants.CALOAD] = CALOAD;
- INSTRUCTIONS[Constants.SALOAD] = SALOAD;
- INSTRUCTIONS[Constants.IASTORE] = IASTORE;
- INSTRUCTIONS[Constants.LASTORE] = LASTORE;
- INSTRUCTIONS[Constants.FASTORE] = FASTORE;
- INSTRUCTIONS[Constants.DASTORE] = DASTORE;
- INSTRUCTIONS[Constants.AASTORE] = AASTORE;
- INSTRUCTIONS[Constants.BASTORE] = BASTORE;
- INSTRUCTIONS[Constants.CASTORE] = CASTORE;
- INSTRUCTIONS[Constants.SASTORE] = SASTORE;
- INSTRUCTIONS[Constants.POP] = POP;
- INSTRUCTIONS[Constants.POP2] = POP2;
- INSTRUCTIONS[Constants.DUP] = DUP;
- INSTRUCTIONS[Constants.DUP_X1] = DUP_X1;
- INSTRUCTIONS[Constants.DUP_X2] = DUP_X2;
- INSTRUCTIONS[Constants.DUP2] = DUP2;
- INSTRUCTIONS[Constants.DUP2_X1] = DUP2_X1;
- INSTRUCTIONS[Constants.DUP2_X2] = DUP2_X2;
- INSTRUCTIONS[Constants.SWAP] = SWAP;
- INSTRUCTIONS[Constants.IADD] = IADD;
- INSTRUCTIONS[Constants.LADD] = LADD;
- INSTRUCTIONS[Constants.FADD] = FADD;
- INSTRUCTIONS[Constants.DADD] = DADD;
- INSTRUCTIONS[Constants.ISUB] = ISUB;
- INSTRUCTIONS[Constants.LSUB] = LSUB;
- INSTRUCTIONS[Constants.FSUB] = FSUB;
- INSTRUCTIONS[Constants.DSUB] = DSUB;
- INSTRUCTIONS[Constants.IMUL] = IMUL;
- INSTRUCTIONS[Constants.LMUL] = LMUL;
- INSTRUCTIONS[Constants.FMUL] = FMUL;
- INSTRUCTIONS[Constants.DMUL] = DMUL;
- INSTRUCTIONS[Constants.IDIV] = IDIV;
- INSTRUCTIONS[Constants.LDIV] = LDIV;
- INSTRUCTIONS[Constants.FDIV] = FDIV;
- INSTRUCTIONS[Constants.DDIV] = DDIV;
- INSTRUCTIONS[Constants.IREM] = IREM;
- INSTRUCTIONS[Constants.LREM] = LREM;
- INSTRUCTIONS[Constants.FREM] = FREM;
- INSTRUCTIONS[Constants.DREM] = DREM;
- INSTRUCTIONS[Constants.INEG] = INEG;
- INSTRUCTIONS[Constants.LNEG] = LNEG;
- INSTRUCTIONS[Constants.FNEG] = FNEG;
- INSTRUCTIONS[Constants.DNEG] = DNEG;
- INSTRUCTIONS[Constants.ISHL] = ISHL;
- INSTRUCTIONS[Constants.LSHL] = LSHL;
- INSTRUCTIONS[Constants.ISHR] = ISHR;
- INSTRUCTIONS[Constants.LSHR] = LSHR;
- INSTRUCTIONS[Constants.IUSHR] = IUSHR;
- INSTRUCTIONS[Constants.LUSHR] = LUSHR;
- INSTRUCTIONS[Constants.IAND] = IAND;
- INSTRUCTIONS[Constants.LAND] = LAND;
- INSTRUCTIONS[Constants.IOR] = IOR;
- INSTRUCTIONS[Constants.LOR] = LOR;
- INSTRUCTIONS[Constants.IXOR] = IXOR;
- INSTRUCTIONS[Constants.LXOR] = LXOR;
- INSTRUCTIONS[Constants.I2L] = I2L;
- INSTRUCTIONS[Constants.I2F] = I2F;
- INSTRUCTIONS[Constants.I2D] = I2D;
- INSTRUCTIONS[Constants.L2I] = L2I;
- INSTRUCTIONS[Constants.L2F] = L2F;
- INSTRUCTIONS[Constants.L2D] = L2D;
- INSTRUCTIONS[Constants.F2I] = F2I;
- INSTRUCTIONS[Constants.F2L] = F2L;
- INSTRUCTIONS[Constants.F2D] = F2D;
- INSTRUCTIONS[Constants.D2I] = D2I;
- INSTRUCTIONS[Constants.D2L] = D2L;
- INSTRUCTIONS[Constants.D2F] = D2F;
- INSTRUCTIONS[Constants.I2B] = I2B;
- INSTRUCTIONS[Constants.I2C] = I2C;
- INSTRUCTIONS[Constants.I2S] = I2S;
- INSTRUCTIONS[Constants.LCMP] = LCMP;
- INSTRUCTIONS[Constants.FCMPL] = FCMPL;
- INSTRUCTIONS[Constants.FCMPG] = FCMPG;
- INSTRUCTIONS[Constants.DCMPL] = DCMPL;
- INSTRUCTIONS[Constants.DCMPG] = DCMPG;
- INSTRUCTIONS[Constants.IRETURN] = IRETURN;
- INSTRUCTIONS[Constants.LRETURN] = LRETURN;
- INSTRUCTIONS[Constants.FRETURN] = FRETURN;
- INSTRUCTIONS[Constants.DRETURN] = DRETURN;
- INSTRUCTIONS[Constants.ARETURN] = ARETURN;
- INSTRUCTIONS[Constants.RETURN] = RETURN;
- INSTRUCTIONS[Constants.ARRAYLENGTH] = ARRAYLENGTH;
- INSTRUCTIONS[Constants.ATHROW] = ATHROW;
- INSTRUCTIONS[Constants.MONITORENTER] = MONITORENTER;
- INSTRUCTIONS[Constants.MONITOREXIT] = MONITOREXIT;
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * This interface contains shareable instruction objects.
+ *
+ * In order to save memory you can use some instructions multiply,
+ * since they have an immutable state and are directly derived from
+ * Instruction. I.e. they have no instance fields that could be
+ * changed. Since some of these instructions like ICONST_0 occur
+ * very frequently this can save a lot of time and space. This
+ * feature is an adaptation of the FlyWeight design pattern, we
+ * just use an array instead of a factory.
+ *
+ * The Instructions can also accessed directly under their names, so
+ * it's possible to write il.append(Instruction.ICONST_0);
+ *
+ * @version $Id: InstructionConstants.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface InstructionConstants {
+
+ /** Predefined instruction objects
+ */
+ public static final Instruction NOP = new NOP();
+ public static final Instruction ACONST_NULL = new ACONST_NULL();
+ public static final Instruction ICONST_M1 = new ICONST(-1);
+ public static final Instruction ICONST_0 = new ICONST(0);
+ public static final Instruction ICONST_1 = new ICONST(1);
+ public static final Instruction ICONST_2 = new ICONST(2);
+ public static final Instruction ICONST_3 = new ICONST(3);
+ public static final Instruction ICONST_4 = new ICONST(4);
+ public static final Instruction ICONST_5 = new ICONST(5);
+ public static final Instruction LCONST_0 = new LCONST(0);
+ public static final Instruction LCONST_1 = new LCONST(1);
+ public static final Instruction FCONST_0 = new FCONST(0);
+ public static final Instruction FCONST_1 = new FCONST(1);
+ public static final Instruction FCONST_2 = new FCONST(2);
+ public static final Instruction DCONST_0 = new DCONST(0);
+ public static final Instruction DCONST_1 = new DCONST(1);
+ public static final ArrayInstruction IALOAD = new IALOAD();
+ public static final ArrayInstruction LALOAD = new LALOAD();
+ public static final ArrayInstruction FALOAD = new FALOAD();
+ public static final ArrayInstruction DALOAD = new DALOAD();
+ public static final ArrayInstruction AALOAD = new AALOAD();
+ public static final ArrayInstruction BALOAD = new BALOAD();
+ public static final ArrayInstruction CALOAD = new CALOAD();
+ public static final ArrayInstruction SALOAD = new SALOAD();
+ public static final ArrayInstruction IASTORE = new IASTORE();
+ public static final ArrayInstruction LASTORE = new LASTORE();
+ public static final ArrayInstruction FASTORE = new FASTORE();
+ public static final ArrayInstruction DASTORE = new DASTORE();
+ public static final ArrayInstruction AASTORE = new AASTORE();
+ public static final ArrayInstruction BASTORE = new BASTORE();
+ public static final ArrayInstruction CASTORE = new CASTORE();
+ public static final ArrayInstruction SASTORE = new SASTORE();
+ public static final StackInstruction POP = new POP();
+ public static final StackInstruction POP2 = new POP2();
+ public static final StackInstruction DUP = new DUP();
+ public static final StackInstruction DUP_X1 = new DUP_X1();
+ public static final StackInstruction DUP_X2 = new DUP_X2();
+ public static final StackInstruction DUP2 = new DUP2();
+ public static final StackInstruction DUP2_X1 = new DUP2_X1();
+ public static final StackInstruction DUP2_X2 = new DUP2_X2();
+ public static final StackInstruction SWAP = new SWAP();
+ public static final ArithmeticInstruction IADD = new IADD();
+ public static final ArithmeticInstruction LADD = new LADD();
+ public static final ArithmeticInstruction FADD = new FADD();
+ public static final ArithmeticInstruction DADD = new DADD();
+ public static final ArithmeticInstruction ISUB = new ISUB();
+ public static final ArithmeticInstruction LSUB = new LSUB();
+ public static final ArithmeticInstruction FSUB = new FSUB();
+ public static final ArithmeticInstruction DSUB = new DSUB();
+ public static final ArithmeticInstruction IMUL = new IMUL();
+ public static final ArithmeticInstruction LMUL = new LMUL();
+ public static final ArithmeticInstruction FMUL = new FMUL();
+ public static final ArithmeticInstruction DMUL = new DMUL();
+ public static final ArithmeticInstruction IDIV = new IDIV();
+ public static final ArithmeticInstruction LDIV = new LDIV();
+ public static final ArithmeticInstruction FDIV = new FDIV();
+ public static final ArithmeticInstruction DDIV = new DDIV();
+ public static final ArithmeticInstruction IREM = new IREM();
+ public static final ArithmeticInstruction LREM = new LREM();
+ public static final ArithmeticInstruction FREM = new FREM();
+ public static final ArithmeticInstruction DREM = new DREM();
+ public static final ArithmeticInstruction INEG = new INEG();
+ public static final ArithmeticInstruction LNEG = new LNEG();
+ public static final ArithmeticInstruction FNEG = new FNEG();
+ public static final ArithmeticInstruction DNEG = new DNEG();
+ public static final ArithmeticInstruction ISHL = new ISHL();
+ public static final ArithmeticInstruction LSHL = new LSHL();
+ public static final ArithmeticInstruction ISHR = new ISHR();
+ public static final ArithmeticInstruction LSHR = new LSHR();
+ public static final ArithmeticInstruction IUSHR = new IUSHR();
+ public static final ArithmeticInstruction LUSHR = new LUSHR();
+ public static final ArithmeticInstruction IAND = new IAND();
+ public static final ArithmeticInstruction LAND = new LAND();
+ public static final ArithmeticInstruction IOR = new IOR();
+ public static final ArithmeticInstruction LOR = new LOR();
+ public static final ArithmeticInstruction IXOR = new IXOR();
+ public static final ArithmeticInstruction LXOR = new LXOR();
+ public static final ConversionInstruction I2L = new I2L();
+ public static final ConversionInstruction I2F = new I2F();
+ public static final ConversionInstruction I2D = new I2D();
+ public static final ConversionInstruction L2I = new L2I();
+ public static final ConversionInstruction L2F = new L2F();
+ public static final ConversionInstruction L2D = new L2D();
+ public static final ConversionInstruction F2I = new F2I();
+ public static final ConversionInstruction F2L = new F2L();
+ public static final ConversionInstruction F2D = new F2D();
+ public static final ConversionInstruction D2I = new D2I();
+ public static final ConversionInstruction D2L = new D2L();
+ public static final ConversionInstruction D2F = new D2F();
+ public static final ConversionInstruction I2B = new I2B();
+ public static final ConversionInstruction I2C = new I2C();
+ public static final ConversionInstruction I2S = new I2S();
+ public static final Instruction LCMP = new LCMP();
+ public static final Instruction FCMPL = new FCMPL();
+ public static final Instruction FCMPG = new FCMPG();
+ public static final Instruction DCMPL = new DCMPL();
+ public static final Instruction DCMPG = new DCMPG();
+ public static final ReturnInstruction IRETURN = new IRETURN();
+ public static final ReturnInstruction LRETURN = new LRETURN();
+ public static final ReturnInstruction FRETURN = new FRETURN();
+ public static final ReturnInstruction DRETURN = new DRETURN();
+ public static final ReturnInstruction ARETURN = new ARETURN();
+ public static final ReturnInstruction RETURN = new RETURN();
+ public static final Instruction ARRAYLENGTH = new ARRAYLENGTH();
+ public static final Instruction ATHROW = new ATHROW();
+ public static final Instruction MONITORENTER = new MONITORENTER();
+ public static final Instruction MONITOREXIT = new MONITOREXIT();
+ /** You can use these constants in multiple places safely, if you can guarantee
+ * that you will never alter their internal values, e.g. call setIndex().
+ */
+ public static final LocalVariableInstruction THIS = new ALOAD(0);
+ public static final LocalVariableInstruction ALOAD_0 = THIS;
+ public static final LocalVariableInstruction ALOAD_1 = new ALOAD(1);
+ public static final LocalVariableInstruction ALOAD_2 = new ALOAD(2);
+ public static final LocalVariableInstruction ILOAD_0 = new ILOAD(0);
+ public static final LocalVariableInstruction ILOAD_1 = new ILOAD(1);
+ public static final LocalVariableInstruction ILOAD_2 = new ILOAD(2);
+ public static final LocalVariableInstruction ASTORE_0 = new ASTORE(0);
+ public static final LocalVariableInstruction ASTORE_1 = new ASTORE(1);
+ public static final LocalVariableInstruction ASTORE_2 = new ASTORE(2);
+ public static final LocalVariableInstruction ISTORE_0 = new ISTORE(0);
+ public static final LocalVariableInstruction ISTORE_1 = new ISTORE(1);
+ public static final LocalVariableInstruction ISTORE_2 = new ISTORE(2);
+ /** Get object via its opcode, for immutable instructions like
+ * branch instructions entries are set to null.
+ */
+ public static final Instruction[] INSTRUCTIONS = new Instruction[256];
+ /** Interfaces may have no static initializers, so we simulate this
+ * with an inner class.
+ */
+ static final Clinit bla = new Clinit();
+
+ static class Clinit {
+
+ Clinit() {
+ INSTRUCTIONS[Constants.NOP] = NOP;
+ INSTRUCTIONS[Constants.ACONST_NULL] = ACONST_NULL;
+ INSTRUCTIONS[Constants.ICONST_M1] = ICONST_M1;
+ INSTRUCTIONS[Constants.ICONST_0] = ICONST_0;
+ INSTRUCTIONS[Constants.ICONST_1] = ICONST_1;
+ INSTRUCTIONS[Constants.ICONST_2] = ICONST_2;
+ INSTRUCTIONS[Constants.ICONST_3] = ICONST_3;
+ INSTRUCTIONS[Constants.ICONST_4] = ICONST_4;
+ INSTRUCTIONS[Constants.ICONST_5] = ICONST_5;
+ INSTRUCTIONS[Constants.LCONST_0] = LCONST_0;
+ INSTRUCTIONS[Constants.LCONST_1] = LCONST_1;
+ INSTRUCTIONS[Constants.FCONST_0] = FCONST_0;
+ INSTRUCTIONS[Constants.FCONST_1] = FCONST_1;
+ INSTRUCTIONS[Constants.FCONST_2] = FCONST_2;
+ INSTRUCTIONS[Constants.DCONST_0] = DCONST_0;
+ INSTRUCTIONS[Constants.DCONST_1] = DCONST_1;
+ INSTRUCTIONS[Constants.IALOAD] = IALOAD;
+ INSTRUCTIONS[Constants.LALOAD] = LALOAD;
+ INSTRUCTIONS[Constants.FALOAD] = FALOAD;
+ INSTRUCTIONS[Constants.DALOAD] = DALOAD;
+ INSTRUCTIONS[Constants.AALOAD] = AALOAD;
+ INSTRUCTIONS[Constants.BALOAD] = BALOAD;
+ INSTRUCTIONS[Constants.CALOAD] = CALOAD;
+ INSTRUCTIONS[Constants.SALOAD] = SALOAD;
+ INSTRUCTIONS[Constants.IASTORE] = IASTORE;
+ INSTRUCTIONS[Constants.LASTORE] = LASTORE;
+ INSTRUCTIONS[Constants.FASTORE] = FASTORE;
+ INSTRUCTIONS[Constants.DASTORE] = DASTORE;
+ INSTRUCTIONS[Constants.AASTORE] = AASTORE;
+ INSTRUCTIONS[Constants.BASTORE] = BASTORE;
+ INSTRUCTIONS[Constants.CASTORE] = CASTORE;
+ INSTRUCTIONS[Constants.SASTORE] = SASTORE;
+ INSTRUCTIONS[Constants.POP] = POP;
+ INSTRUCTIONS[Constants.POP2] = POP2;
+ INSTRUCTIONS[Constants.DUP] = DUP;
+ INSTRUCTIONS[Constants.DUP_X1] = DUP_X1;
+ INSTRUCTIONS[Constants.DUP_X2] = DUP_X2;
+ INSTRUCTIONS[Constants.DUP2] = DUP2;
+ INSTRUCTIONS[Constants.DUP2_X1] = DUP2_X1;
+ INSTRUCTIONS[Constants.DUP2_X2] = DUP2_X2;
+ INSTRUCTIONS[Constants.SWAP] = SWAP;
+ INSTRUCTIONS[Constants.IADD] = IADD;
+ INSTRUCTIONS[Constants.LADD] = LADD;
+ INSTRUCTIONS[Constants.FADD] = FADD;
+ INSTRUCTIONS[Constants.DADD] = DADD;
+ INSTRUCTIONS[Constants.ISUB] = ISUB;
+ INSTRUCTIONS[Constants.LSUB] = LSUB;
+ INSTRUCTIONS[Constants.FSUB] = FSUB;
+ INSTRUCTIONS[Constants.DSUB] = DSUB;
+ INSTRUCTIONS[Constants.IMUL] = IMUL;
+ INSTRUCTIONS[Constants.LMUL] = LMUL;
+ INSTRUCTIONS[Constants.FMUL] = FMUL;
+ INSTRUCTIONS[Constants.DMUL] = DMUL;
+ INSTRUCTIONS[Constants.IDIV] = IDIV;
+ INSTRUCTIONS[Constants.LDIV] = LDIV;
+ INSTRUCTIONS[Constants.FDIV] = FDIV;
+ INSTRUCTIONS[Constants.DDIV] = DDIV;
+ INSTRUCTIONS[Constants.IREM] = IREM;
+ INSTRUCTIONS[Constants.LREM] = LREM;
+ INSTRUCTIONS[Constants.FREM] = FREM;
+ INSTRUCTIONS[Constants.DREM] = DREM;
+ INSTRUCTIONS[Constants.INEG] = INEG;
+ INSTRUCTIONS[Constants.LNEG] = LNEG;
+ INSTRUCTIONS[Constants.FNEG] = FNEG;
+ INSTRUCTIONS[Constants.DNEG] = DNEG;
+ INSTRUCTIONS[Constants.ISHL] = ISHL;
+ INSTRUCTIONS[Constants.LSHL] = LSHL;
+ INSTRUCTIONS[Constants.ISHR] = ISHR;
+ INSTRUCTIONS[Constants.LSHR] = LSHR;
+ INSTRUCTIONS[Constants.IUSHR] = IUSHR;
+ INSTRUCTIONS[Constants.LUSHR] = LUSHR;
+ INSTRUCTIONS[Constants.IAND] = IAND;
+ INSTRUCTIONS[Constants.LAND] = LAND;
+ INSTRUCTIONS[Constants.IOR] = IOR;
+ INSTRUCTIONS[Constants.LOR] = LOR;
+ INSTRUCTIONS[Constants.IXOR] = IXOR;
+ INSTRUCTIONS[Constants.LXOR] = LXOR;
+ INSTRUCTIONS[Constants.I2L] = I2L;
+ INSTRUCTIONS[Constants.I2F] = I2F;
+ INSTRUCTIONS[Constants.I2D] = I2D;
+ INSTRUCTIONS[Constants.L2I] = L2I;
+ INSTRUCTIONS[Constants.L2F] = L2F;
+ INSTRUCTIONS[Constants.L2D] = L2D;
+ INSTRUCTIONS[Constants.F2I] = F2I;
+ INSTRUCTIONS[Constants.F2L] = F2L;
+ INSTRUCTIONS[Constants.F2D] = F2D;
+ INSTRUCTIONS[Constants.D2I] = D2I;
+ INSTRUCTIONS[Constants.D2L] = D2L;
+ INSTRUCTIONS[Constants.D2F] = D2F;
+ INSTRUCTIONS[Constants.I2B] = I2B;
+ INSTRUCTIONS[Constants.I2C] = I2C;
+ INSTRUCTIONS[Constants.I2S] = I2S;
+ INSTRUCTIONS[Constants.LCMP] = LCMP;
+ INSTRUCTIONS[Constants.FCMPL] = FCMPL;
+ INSTRUCTIONS[Constants.FCMPG] = FCMPG;
+ INSTRUCTIONS[Constants.DCMPL] = DCMPL;
+ INSTRUCTIONS[Constants.DCMPG] = DCMPG;
+ INSTRUCTIONS[Constants.IRETURN] = IRETURN;
+ INSTRUCTIONS[Constants.LRETURN] = LRETURN;
+ INSTRUCTIONS[Constants.FRETURN] = FRETURN;
+ INSTRUCTIONS[Constants.DRETURN] = DRETURN;
+ INSTRUCTIONS[Constants.ARETURN] = ARETURN;
+ INSTRUCTIONS[Constants.RETURN] = RETURN;
+ INSTRUCTIONS[Constants.ARRAYLENGTH] = ARRAYLENGTH;
+ INSTRUCTIONS[Constants.ATHROW] = ATHROW;
+ INSTRUCTIONS[Constants.MONITORENTER] = MONITORENTER;
+ INSTRUCTIONS[Constants.MONITOREXIT] = MONITOREXIT;
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionFactory.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionFactory.java
index d436e609..82df07b4 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionFactory.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionFactory.java
@@ -1,743 +1,743 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Instances of this class may be used, e.g., to generate typed
- * versions of instructions. Its main purpose is to be used as the
- * byte code generating backend of a compiler. You can subclass it to
- * add your own create methods.
- *
- * @version $Id: InstructionFactory.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Constants
- */
-public class InstructionFactory implements InstructionConstants, java.io.Serializable {
-
- protected ClassGen cg;
- protected ConstantPoolGen cp;
-
-
- public InstructionFactory(ClassGen cg, ConstantPoolGen cp) {
- this.cg = cg;
- this.cp = cp;
- }
-
-
- /** Initialize with ClassGen object
- */
- public InstructionFactory(ClassGen cg) {
- this(cg, cg.getConstantPool());
- }
-
-
- /** Initialize just with ConstantPoolGen object
- */
- public InstructionFactory(ConstantPoolGen cp) {
- this(null, cp);
- }
-
-
- /** Create an invoke instruction.
- *
- * @param class_name name of the called class
- * @param name name of the called method
- * @param ret_type return type of method
- * @param arg_types argument types of method
- * @param kind how to invoke, i.e., INVOKEINTERFACE, INVOKESTATIC, INVOKEVIRTUAL,
- * or INVOKESPECIAL
- * @see Constants
- */
- public InvokeInstruction createInvoke( String class_name, String name, Type ret_type,
- Type[] arg_types, short kind ) {
- int index;
- int nargs = 0;
- String signature = Type.getMethodSignature(ret_type, arg_types);
- for (int i = 0; i < arg_types.length; i++) {
- nargs += arg_types[i].getSize();
- }
- if (kind == Constants.INVOKEINTERFACE) {
- index = cp.addInterfaceMethodref(class_name, name, signature);
- } else {
- index = cp.addMethodref(class_name, name, signature);
- }
- switch (kind) {
- case Constants.INVOKESPECIAL:
- return new INVOKESPECIAL(index);
- case Constants.INVOKEVIRTUAL:
- return new INVOKEVIRTUAL(index);
- case Constants.INVOKESTATIC:
- return new INVOKESTATIC(index);
- case Constants.INVOKEINTERFACE:
- return new INVOKEINTERFACE(index, nargs + 1);
- default:
- throw new RuntimeException("Oops: Unknown invoke kind:" + kind);
- }
- }
-
-
- /** Create a call to the most popular System.out.println() method.
- *
- * @param s the string to print
- */
- public InstructionList createPrintln( String s ) {
- InstructionList il = new InstructionList();
- int out = cp.addFieldref("java.lang.System", "out", "Ljava/io/PrintStream;");
- int println = cp.addMethodref("java.io.PrintStream", "println", "(Ljava/lang/String;)V");
- il.append(new GETSTATIC(out));
- il.append(new PUSH(cp, s));
- il.append(new INVOKEVIRTUAL(println));
- return il;
- }
-
-
- /** Uses PUSH to push a constant value onto the stack.
- * @param value must be of type Number, Boolean, Character or String
- */
- public Instruction createConstant( Object value ) {
- PUSH push;
- if (value instanceof Number) {
- push = new PUSH(cp, (Number) value);
- } else if (value instanceof String) {
- push = new PUSH(cp, (String) value);
- } else if (value instanceof Boolean) {
- push = new PUSH(cp, (Boolean) value);
- } else if (value instanceof Character) {
- push = new PUSH(cp, (Character) value);
- } else {
- throw new ClassGenException("Illegal type: " + value.getClass());
- }
- return push.getInstruction();
- }
-
- private static class MethodObject {
-
- Type[] arg_types;
- Type result_type;
- String class_name;
- String name;
- int access;
-
-
- MethodObject(String c, String n, Type r, Type[] a, int acc) {
- class_name = c;
- name = n;
- result_type = r;
- arg_types = a;
- access = acc;
- }
- }
-
-
- private InvokeInstruction createInvoke( MethodObject m, short kind ) {
- return createInvoke(m.class_name, m.name, m.result_type, m.arg_types, kind);
- }
-
- private static MethodObject[] append_mos = {
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.STRING
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.OBJECT
- }, Constants.ACC_PUBLIC),
- null,
- null, // indices 2, 3
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.BOOLEAN
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.CHAR
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.FLOAT
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.DOUBLE
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.INT
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, // No append(byte)
- new Type[] {
- Type.INT
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, // No append(short)
- new Type[] {
- Type.INT
- }, Constants.ACC_PUBLIC),
- new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
- Type.LONG
- }, Constants.ACC_PUBLIC)
- };
-
-
- private static final boolean isString( Type type ) {
- return ((type instanceof ObjectType) && ((ObjectType) type).getClassName().equals(
- "java.lang.String"));
- }
-
-
- public Instruction createAppend( Type type ) {
- byte t = type.getType();
- if (isString(type)) {
- return createInvoke(append_mos[0], Constants.INVOKEVIRTUAL);
- }
- switch (t) {
- case Constants.T_BOOLEAN:
- case Constants.T_CHAR:
- case Constants.T_FLOAT:
- case Constants.T_DOUBLE:
- case Constants.T_BYTE:
- case Constants.T_SHORT:
- case Constants.T_INT:
- case Constants.T_LONG:
- return createInvoke(append_mos[t], Constants.INVOKEVIRTUAL);
- case Constants.T_ARRAY:
- case Constants.T_OBJECT:
- return createInvoke(append_mos[1], Constants.INVOKEVIRTUAL);
- default:
- throw new RuntimeException("Oops: No append for this type? " + type);
- }
- }
-
-
- /** Create a field instruction.
- *
- * @param class_name name of the accessed class
- * @param name name of the referenced field
- * @param type type of field
- * @param kind how to access, i.e., GETFIELD, PUTFIELD, GETSTATIC, PUTSTATIC
- * @see Constants
- */
- public FieldInstruction createFieldAccess( String class_name, String name, Type type, short kind ) {
- int index;
- String signature = type.getSignature();
- index = cp.addFieldref(class_name, name, signature);
- switch (kind) {
- case Constants.GETFIELD:
- return new GETFIELD(index);
- case Constants.PUTFIELD:
- return new PUTFIELD(index);
- case Constants.GETSTATIC:
- return new GETSTATIC(index);
- case Constants.PUTSTATIC:
- return new PUTSTATIC(index);
- default:
- throw new RuntimeException("Oops: Unknown getfield kind:" + kind);
- }
- }
-
-
- /** Create reference to `this'
- */
- public static Instruction createThis() {
- return new ALOAD(0);
- }
-
-
- /** Create typed return
- */
- public static ReturnInstruction createReturn( Type type ) {
- switch (type.getType()) {
- case Constants.T_ARRAY:
- case Constants.T_OBJECT:
- return ARETURN;
- case Constants.T_INT:
- case Constants.T_SHORT:
- case Constants.T_BOOLEAN:
- case Constants.T_CHAR:
- case Constants.T_BYTE:
- return IRETURN;
- case Constants.T_FLOAT:
- return FRETURN;
- case Constants.T_DOUBLE:
- return DRETURN;
- case Constants.T_LONG:
- return LRETURN;
- case Constants.T_VOID:
- return RETURN;
- default:
- throw new RuntimeException("Invalid type: " + type);
- }
- }
-
-
- private static final ArithmeticInstruction createBinaryIntOp( char first, String op ) {
- switch (first) {
- case '-':
- return ISUB;
- case '+':
- return IADD;
- case '%':
- return IREM;
- case '*':
- return IMUL;
- case '/':
- return IDIV;
- case '&':
- return IAND;
- case '|':
- return IOR;
- case '^':
- return IXOR;
- case '<':
- return ISHL;
- case '>':
- return op.equals(">>>")
- ? (ArithmeticInstruction) IUSHR
- : (ArithmeticInstruction) ISHR;
- default:
- throw new RuntimeException("Invalid operand " + op);
- }
- }
-
-
- private static final ArithmeticInstruction createBinaryLongOp( char first, String op ) {
- switch (first) {
- case '-':
- return LSUB;
- case '+':
- return LADD;
- case '%':
- return LREM;
- case '*':
- return LMUL;
- case '/':
- return LDIV;
- case '&':
- return LAND;
- case '|':
- return LOR;
- case '^':
- return LXOR;
- case '<':
- return LSHL;
- case '>':
- return op.equals(">>>")
- ? (ArithmeticInstruction) LUSHR
- : (ArithmeticInstruction) LSHR;
- default:
- throw new RuntimeException("Invalid operand " + op);
- }
- }
-
-
- private static final ArithmeticInstruction createBinaryFloatOp( char op ) {
- switch (op) {
- case '-':
- return FSUB;
- case '+':
- return FADD;
- case '*':
- return FMUL;
- case '/':
- return FDIV;
- default:
- throw new RuntimeException("Invalid operand " + op);
- }
- }
-
-
- private static final ArithmeticInstruction createBinaryDoubleOp( char op ) {
- switch (op) {
- case '-':
- return DSUB;
- case '+':
- return DADD;
- case '*':
- return DMUL;
- case '/':
- return DDIV;
- default:
- throw new RuntimeException("Invalid operand " + op);
- }
- }
-
-
- /**
- * Create binary operation for simple basic types, such as int and float.
- *
- * @param op operation, such as "+", "*", "<<", etc.
- */
- public static ArithmeticInstruction createBinaryOperation( String op, Type type ) {
- char first = op.toCharArray()[0];
- switch (type.getType()) {
- case Constants.T_BYTE:
- case Constants.T_SHORT:
- case Constants.T_INT:
- case Constants.T_CHAR:
- return createBinaryIntOp(first, op);
- case Constants.T_LONG:
- return createBinaryLongOp(first, op);
- case Constants.T_FLOAT:
- return createBinaryFloatOp(first);
- case Constants.T_DOUBLE:
- return createBinaryDoubleOp(first);
- default:
- throw new RuntimeException("Invalid type " + type);
- }
- }
-
-
- /**
- * @param size size of operand, either 1 (int, e.g.) or 2 (double)
- */
- public static StackInstruction createPop( int size ) {
- return (size == 2) ? (StackInstruction) POP2 : (StackInstruction) POP;
- }
-
-
- /**
- * @param size size of operand, either 1 (int, e.g.) or 2 (double)
- */
- public static StackInstruction createDup( int size ) {
- return (size == 2) ? (StackInstruction) DUP2 : (StackInstruction) DUP;
- }
-
-
- /**
- * @param size size of operand, either 1 (int, e.g.) or 2 (double)
- */
- public static StackInstruction createDup_2( int size ) {
- return (size == 2) ? (StackInstruction) DUP2_X2 : (StackInstruction) DUP_X2;
- }
-
-
- /**
- * @param size size of operand, either 1 (int, e.g.) or 2 (double)
- */
- public static StackInstruction createDup_1( int size ) {
- return (size == 2) ? (StackInstruction) DUP2_X1 : (StackInstruction) DUP_X1;
- }
-
-
- /**
- * @param index index of local variable
- */
- public static LocalVariableInstruction createStore( Type type, int index ) {
- switch (type.getType()) {
- case Constants.T_BOOLEAN:
- case Constants.T_CHAR:
- case Constants.T_BYTE:
- case Constants.T_SHORT:
- case Constants.T_INT:
- return new ISTORE(index);
- case Constants.T_FLOAT:
- return new FSTORE(index);
- case Constants.T_DOUBLE:
- return new DSTORE(index);
- case Constants.T_LONG:
- return new LSTORE(index);
- case Constants.T_ARRAY:
- case Constants.T_OBJECT:
- return new ASTORE(index);
- default:
- throw new RuntimeException("Invalid type " + type);
- }
- }
-
-
- /**
- * @param index index of local variable
- */
- public static LocalVariableInstruction createLoad( Type type, int index ) {
- switch (type.getType()) {
- case Constants.T_BOOLEAN:
- case Constants.T_CHAR:
- case Constants.T_BYTE:
- case Constants.T_SHORT:
- case Constants.T_INT:
- return new ILOAD(index);
- case Constants.T_FLOAT:
- return new FLOAD(index);
- case Constants.T_DOUBLE:
- return new DLOAD(index);
- case Constants.T_LONG:
- return new LLOAD(index);
- case Constants.T_ARRAY:
- case Constants.T_OBJECT:
- return new ALOAD(index);
- default:
- throw new RuntimeException("Invalid type " + type);
- }
- }
-
-
- /**
- * @param type type of elements of array, i.e., array.getElementType()
- */
- public static ArrayInstruction createArrayLoad( Type type ) {
- switch (type.getType()) {
- case Constants.T_BOOLEAN:
- case Constants.T_BYTE:
- return BALOAD;
- case Constants.T_CHAR:
- return CALOAD;
- case Constants.T_SHORT:
- return SALOAD;
- case Constants.T_INT:
- return IALOAD;
- case Constants.T_FLOAT:
- return FALOAD;
- case Constants.T_DOUBLE:
- return DALOAD;
- case Constants.T_LONG:
- return LALOAD;
- case Constants.T_ARRAY:
- case Constants.T_OBJECT:
- return AALOAD;
- default:
- throw new RuntimeException("Invalid type " + type);
- }
- }
-
-
- /**
- * @param type type of elements of array, i.e., array.getElementType()
- */
- public static ArrayInstruction createArrayStore( Type type ) {
- switch (type.getType()) {
- case Constants.T_BOOLEAN:
- case Constants.T_BYTE:
- return BASTORE;
- case Constants.T_CHAR:
- return CASTORE;
- case Constants.T_SHORT:
- return SASTORE;
- case Constants.T_INT:
- return IASTORE;
- case Constants.T_FLOAT:
- return FASTORE;
- case Constants.T_DOUBLE:
- return DASTORE;
- case Constants.T_LONG:
- return LASTORE;
- case Constants.T_ARRAY:
- case Constants.T_OBJECT:
- return AASTORE;
- default:
- throw new RuntimeException("Invalid type " + type);
- }
- }
-
-
- /** Create conversion operation for two stack operands, this may be an I2C, instruction, e.g.,
- * if the operands are basic types and CHECKCAST if they are reference types.
- */
- public Instruction createCast( Type src_type, Type dest_type ) {
- if ((src_type instanceof BasicType) && (dest_type instanceof BasicType)) {
- byte dest = dest_type.getType();
- byte src = src_type.getType();
- if (dest == Constants.T_LONG
- && (src == Constants.T_CHAR || src == Constants.T_BYTE || src == Constants.T_SHORT)) {
- src = Constants.T_INT;
- }
- String[] short_names = {
- "C", "F", "D", "B", "S", "I", "L"
- };
- String name = "org.apache.bcel.generic." + short_names[src - Constants.T_CHAR] + "2"
- + short_names[dest - Constants.T_CHAR];
- Instruction i = null;
- try {
- i = (Instruction) java.lang.Class.forName(name).newInstance();
- } catch (Exception e) {
- throw new RuntimeException("Could not find instruction: " + name);
- }
- return i;
- } else if ((src_type instanceof ReferenceType) && (dest_type instanceof ReferenceType)) {
- if (dest_type instanceof ArrayType) {
- return new CHECKCAST(cp.addArrayClass((ArrayType) dest_type));
- } else {
- return new CHECKCAST(cp.addClass(((ObjectType) dest_type).getClassName()));
- }
- } else {
- throw new RuntimeException("Can not cast " + src_type + " to " + dest_type);
- }
- }
-
-
- public GETFIELD createGetField( String class_name, String name, Type t ) {
- return new GETFIELD(cp.addFieldref(class_name, name, t.getSignature()));
- }
-
-
- public GETSTATIC createGetStatic( String class_name, String name, Type t ) {
- return new GETSTATIC(cp.addFieldref(class_name, name, t.getSignature()));
- }
-
-
- public PUTFIELD createPutField( String class_name, String name, Type t ) {
- return new PUTFIELD(cp.addFieldref(class_name, name, t.getSignature()));
- }
-
-
- public PUTSTATIC createPutStatic( String class_name, String name, Type t ) {
- return new PUTSTATIC(cp.addFieldref(class_name, name, t.getSignature()));
- }
-
-
- public CHECKCAST createCheckCast( ReferenceType t ) {
- if (t instanceof ArrayType) {
- return new CHECKCAST(cp.addArrayClass((ArrayType) t));
- } else {
- return new CHECKCAST(cp.addClass((ObjectType) t));
- }
- }
-
-
- public INSTANCEOF createInstanceOf( ReferenceType t ) {
- if (t instanceof ArrayType) {
- return new INSTANCEOF(cp.addArrayClass((ArrayType) t));
- } else {
- return new INSTANCEOF(cp.addClass((ObjectType) t));
- }
- }
-
-
- public NEW createNew( ObjectType t ) {
- return new NEW(cp.addClass(t));
- }
-
-
- public NEW createNew( String s ) {
- return createNew(new ObjectType(s));
- }
-
-
- /** Create new array of given size and type.
- * @return an instruction that creates the corresponding array at runtime, i.e. is an AllocationInstruction
- */
- public Instruction createNewArray( Type t, short dim ) {
- if (dim == 1) {
- if (t instanceof ObjectType) {
- return new ANEWARRAY(cp.addClass((ObjectType) t));
- } else if (t instanceof ArrayType) {
- return new ANEWARRAY(cp.addArrayClass((ArrayType) t));
- } else {
- return new NEWARRAY(((BasicType) t).getType());
- }
- } else {
- ArrayType at;
- if (t instanceof ArrayType) {
- at = (ArrayType) t;
- } else {
- at = new ArrayType(t, dim);
- }
- return new MULTIANEWARRAY(cp.addArrayClass(at), dim);
- }
- }
-
-
- /** Create "null" value for reference types, 0 for basic types like int
- */
- public static Instruction createNull( Type type ) {
- switch (type.getType()) {
- case Constants.T_ARRAY:
- case Constants.T_OBJECT:
- return ACONST_NULL;
- case Constants.T_INT:
- case Constants.T_SHORT:
- case Constants.T_BOOLEAN:
- case Constants.T_CHAR:
- case Constants.T_BYTE:
- return ICONST_0;
- case Constants.T_FLOAT:
- return FCONST_0;
- case Constants.T_DOUBLE:
- return DCONST_0;
- case Constants.T_LONG:
- return LCONST_0;
- case Constants.T_VOID:
- return NOP;
- default:
- throw new RuntimeException("Invalid type: " + type);
- }
- }
-
-
- /** Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH.
- * For those you should use the SWITCH compound instruction.
- */
- public static BranchInstruction createBranchInstruction( short opcode, InstructionHandle target ) {
- switch (opcode) {
- case Constants.IFEQ:
- return new IFEQ(target);
- case Constants.IFNE:
- return new IFNE(target);
- case Constants.IFLT:
- return new IFLT(target);
- case Constants.IFGE:
- return new IFGE(target);
- case Constants.IFGT:
- return new IFGT(target);
- case Constants.IFLE:
- return new IFLE(target);
- case Constants.IF_ICMPEQ:
- return new IF_ICMPEQ(target);
- case Constants.IF_ICMPNE:
- return new IF_ICMPNE(target);
- case Constants.IF_ICMPLT:
- return new IF_ICMPLT(target);
- case Constants.IF_ICMPGE:
- return new IF_ICMPGE(target);
- case Constants.IF_ICMPGT:
- return new IF_ICMPGT(target);
- case Constants.IF_ICMPLE:
- return new IF_ICMPLE(target);
- case Constants.IF_ACMPEQ:
- return new IF_ACMPEQ(target);
- case Constants.IF_ACMPNE:
- return new IF_ACMPNE(target);
- case Constants.GOTO:
- return new GOTO(target);
- case Constants.JSR:
- return new JSR(target);
- case Constants.IFNULL:
- return new IFNULL(target);
- case Constants.IFNONNULL:
- return new IFNONNULL(target);
- case Constants.GOTO_W:
- return new GOTO_W(target);
- case Constants.JSR_W:
- return new JSR_W(target);
- default:
- throw new RuntimeException("Invalid opcode: " + opcode);
- }
- }
-
-
- public void setClassGen( ClassGen c ) {
- cg = c;
- }
-
-
- public ClassGen getClassGen() {
- return cg;
- }
-
-
- public void setConstantPool( ConstantPoolGen c ) {
- cp = c;
- }
-
-
- public ConstantPoolGen getConstantPool() {
- return cp;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Instances of this class may be used, e.g., to generate typed
+ * versions of instructions. Its main purpose is to be used as the
+ * byte code generating backend of a compiler. You can subclass it to
+ * add your own create methods.
+ *
+ * @version $Id: InstructionFactory.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Constants
+ */
+public class InstructionFactory implements InstructionConstants, java.io.Serializable {
+
+ protected ClassGen cg;
+ protected ConstantPoolGen cp;
+
+
+ public InstructionFactory(ClassGen cg, ConstantPoolGen cp) {
+ this.cg = cg;
+ this.cp = cp;
+ }
+
+
+ /** Initialize with ClassGen object
+ */
+ public InstructionFactory(ClassGen cg) {
+ this(cg, cg.getConstantPool());
+ }
+
+
+ /** Initialize just with ConstantPoolGen object
+ */
+ public InstructionFactory(ConstantPoolGen cp) {
+ this(null, cp);
+ }
+
+
+ /** Create an invoke instruction.
+ *
+ * @param class_name name of the called class
+ * @param name name of the called method
+ * @param ret_type return type of method
+ * @param arg_types argument types of method
+ * @param kind how to invoke, i.e., INVOKEINTERFACE, INVOKESTATIC, INVOKEVIRTUAL,
+ * or INVOKESPECIAL
+ * @see Constants
+ */
+ public InvokeInstruction createInvoke( String class_name, String name, Type ret_type,
+ Type[] arg_types, short kind ) {
+ int index;
+ int nargs = 0;
+ String signature = Type.getMethodSignature(ret_type, arg_types);
+ for (int i = 0; i < arg_types.length; i++) {
+ nargs += arg_types[i].getSize();
+ }
+ if (kind == Constants.INVOKEINTERFACE) {
+ index = cp.addInterfaceMethodref(class_name, name, signature);
+ } else {
+ index = cp.addMethodref(class_name, name, signature);
+ }
+ switch (kind) {
+ case Constants.INVOKESPECIAL:
+ return new INVOKESPECIAL(index);
+ case Constants.INVOKEVIRTUAL:
+ return new INVOKEVIRTUAL(index);
+ case Constants.INVOKESTATIC:
+ return new INVOKESTATIC(index);
+ case Constants.INVOKEINTERFACE:
+ return new INVOKEINTERFACE(index, nargs + 1);
+ default:
+ throw new RuntimeException("Oops: Unknown invoke kind:" + kind);
+ }
+ }
+
+
+ /** Create a call to the most popular System.out.println() method.
+ *
+ * @param s the string to print
+ */
+ public InstructionList createPrintln( String s ) {
+ InstructionList il = new InstructionList();
+ int out = cp.addFieldref("java.lang.System", "out", "Ljava/io/PrintStream;");
+ int println = cp.addMethodref("java.io.PrintStream", "println", "(Ljava/lang/String;)V");
+ il.append(new GETSTATIC(out));
+ il.append(new PUSH(cp, s));
+ il.append(new INVOKEVIRTUAL(println));
+ return il;
+ }
+
+
+ /** Uses PUSH to push a constant value onto the stack.
+ * @param value must be of type Number, Boolean, Character or String
+ */
+ public Instruction createConstant( Object value ) {
+ PUSH push;
+ if (value instanceof Number) {
+ push = new PUSH(cp, (Number) value);
+ } else if (value instanceof String) {
+ push = new PUSH(cp, (String) value);
+ } else if (value instanceof Boolean) {
+ push = new PUSH(cp, (Boolean) value);
+ } else if (value instanceof Character) {
+ push = new PUSH(cp, (Character) value);
+ } else {
+ throw new ClassGenException("Illegal type: " + value.getClass());
+ }
+ return push.getInstruction();
+ }
+
+ private static class MethodObject {
+
+ Type[] arg_types;
+ Type result_type;
+ String class_name;
+ String name;
+ int access;
+
+
+ MethodObject(String c, String n, Type r, Type[] a, int acc) {
+ class_name = c;
+ name = n;
+ result_type = r;
+ arg_types = a;
+ access = acc;
+ }
+ }
+
+
+ private InvokeInstruction createInvoke( MethodObject m, short kind ) {
+ return createInvoke(m.class_name, m.name, m.result_type, m.arg_types, kind);
+ }
+
+ private static MethodObject[] append_mos = {
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.STRING
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.OBJECT
+ }, Constants.ACC_PUBLIC),
+ null,
+ null, // indices 2, 3
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.BOOLEAN
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.CHAR
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.FLOAT
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.DOUBLE
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.INT
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, // No append(byte)
+ new Type[] {
+ Type.INT
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, // No append(short)
+ new Type[] {
+ Type.INT
+ }, Constants.ACC_PUBLIC),
+ new MethodObject("java.lang.StringBuffer", "append", Type.STRINGBUFFER, new Type[] {
+ Type.LONG
+ }, Constants.ACC_PUBLIC)
+ };
+
+
+ private static final boolean isString( Type type ) {
+ return ((type instanceof ObjectType) && ((ObjectType) type).getClassName().equals(
+ "java.lang.String"));
+ }
+
+
+ public Instruction createAppend( Type type ) {
+ byte t = type.getType();
+ if (isString(type)) {
+ return createInvoke(append_mos[0], Constants.INVOKEVIRTUAL);
+ }
+ switch (t) {
+ case Constants.T_BOOLEAN:
+ case Constants.T_CHAR:
+ case Constants.T_FLOAT:
+ case Constants.T_DOUBLE:
+ case Constants.T_BYTE:
+ case Constants.T_SHORT:
+ case Constants.T_INT:
+ case Constants.T_LONG:
+ return createInvoke(append_mos[t], Constants.INVOKEVIRTUAL);
+ case Constants.T_ARRAY:
+ case Constants.T_OBJECT:
+ return createInvoke(append_mos[1], Constants.INVOKEVIRTUAL);
+ default:
+ throw new RuntimeException("Oops: No append for this type? " + type);
+ }
+ }
+
+
+ /** Create a field instruction.
+ *
+ * @param class_name name of the accessed class
+ * @param name name of the referenced field
+ * @param type type of field
+ * @param kind how to access, i.e., GETFIELD, PUTFIELD, GETSTATIC, PUTSTATIC
+ * @see Constants
+ */
+ public FieldInstruction createFieldAccess( String class_name, String name, Type type, short kind ) {
+ int index;
+ String signature = type.getSignature();
+ index = cp.addFieldref(class_name, name, signature);
+ switch (kind) {
+ case Constants.GETFIELD:
+ return new GETFIELD(index);
+ case Constants.PUTFIELD:
+ return new PUTFIELD(index);
+ case Constants.GETSTATIC:
+ return new GETSTATIC(index);
+ case Constants.PUTSTATIC:
+ return new PUTSTATIC(index);
+ default:
+ throw new RuntimeException("Oops: Unknown getfield kind:" + kind);
+ }
+ }
+
+
+ /** Create reference to `this'
+ */
+ public static Instruction createThis() {
+ return new ALOAD(0);
+ }
+
+
+ /** Create typed return
+ */
+ public static ReturnInstruction createReturn( Type type ) {
+ switch (type.getType()) {
+ case Constants.T_ARRAY:
+ case Constants.T_OBJECT:
+ return ARETURN;
+ case Constants.T_INT:
+ case Constants.T_SHORT:
+ case Constants.T_BOOLEAN:
+ case Constants.T_CHAR:
+ case Constants.T_BYTE:
+ return IRETURN;
+ case Constants.T_FLOAT:
+ return FRETURN;
+ case Constants.T_DOUBLE:
+ return DRETURN;
+ case Constants.T_LONG:
+ return LRETURN;
+ case Constants.T_VOID:
+ return RETURN;
+ default:
+ throw new RuntimeException("Invalid type: " + type);
+ }
+ }
+
+
+ private static final ArithmeticInstruction createBinaryIntOp( char first, String op ) {
+ switch (first) {
+ case '-':
+ return ISUB;
+ case '+':
+ return IADD;
+ case '%':
+ return IREM;
+ case '*':
+ return IMUL;
+ case '/':
+ return IDIV;
+ case '&':
+ return IAND;
+ case '|':
+ return IOR;
+ case '^':
+ return IXOR;
+ case '<':
+ return ISHL;
+ case '>':
+ return op.equals(">>>")
+ ? (ArithmeticInstruction) IUSHR
+ : (ArithmeticInstruction) ISHR;
+ default:
+ throw new RuntimeException("Invalid operand " + op);
+ }
+ }
+
+
+ private static final ArithmeticInstruction createBinaryLongOp( char first, String op ) {
+ switch (first) {
+ case '-':
+ return LSUB;
+ case '+':
+ return LADD;
+ case '%':
+ return LREM;
+ case '*':
+ return LMUL;
+ case '/':
+ return LDIV;
+ case '&':
+ return LAND;
+ case '|':
+ return LOR;
+ case '^':
+ return LXOR;
+ case '<':
+ return LSHL;
+ case '>':
+ return op.equals(">>>")
+ ? (ArithmeticInstruction) LUSHR
+ : (ArithmeticInstruction) LSHR;
+ default:
+ throw new RuntimeException("Invalid operand " + op);
+ }
+ }
+
+
+ private static final ArithmeticInstruction createBinaryFloatOp( char op ) {
+ switch (op) {
+ case '-':
+ return FSUB;
+ case '+':
+ return FADD;
+ case '*':
+ return FMUL;
+ case '/':
+ return FDIV;
+ default:
+ throw new RuntimeException("Invalid operand " + op);
+ }
+ }
+
+
+ private static final ArithmeticInstruction createBinaryDoubleOp( char op ) {
+ switch (op) {
+ case '-':
+ return DSUB;
+ case '+':
+ return DADD;
+ case '*':
+ return DMUL;
+ case '/':
+ return DDIV;
+ default:
+ throw new RuntimeException("Invalid operand " + op);
+ }
+ }
+
+
+ /**
+ * Create binary operation for simple basic types, such as int and float.
+ *
+ * @param op operation, such as "+", "*", "<<", etc.
+ */
+ public static ArithmeticInstruction createBinaryOperation( String op, Type type ) {
+ char first = op.toCharArray()[0];
+ switch (type.getType()) {
+ case Constants.T_BYTE:
+ case Constants.T_SHORT:
+ case Constants.T_INT:
+ case Constants.T_CHAR:
+ return createBinaryIntOp(first, op);
+ case Constants.T_LONG:
+ return createBinaryLongOp(first, op);
+ case Constants.T_FLOAT:
+ return createBinaryFloatOp(first);
+ case Constants.T_DOUBLE:
+ return createBinaryDoubleOp(first);
+ default:
+ throw new RuntimeException("Invalid type " + type);
+ }
+ }
+
+
+ /**
+ * @param size size of operand, either 1 (int, e.g.) or 2 (double)
+ */
+ public static StackInstruction createPop( int size ) {
+ return (size == 2) ? (StackInstruction) POP2 : (StackInstruction) POP;
+ }
+
+
+ /**
+ * @param size size of operand, either 1 (int, e.g.) or 2 (double)
+ */
+ public static StackInstruction createDup( int size ) {
+ return (size == 2) ? (StackInstruction) DUP2 : (StackInstruction) DUP;
+ }
+
+
+ /**
+ * @param size size of operand, either 1 (int, e.g.) or 2 (double)
+ */
+ public static StackInstruction createDup_2( int size ) {
+ return (size == 2) ? (StackInstruction) DUP2_X2 : (StackInstruction) DUP_X2;
+ }
+
+
+ /**
+ * @param size size of operand, either 1 (int, e.g.) or 2 (double)
+ */
+ public static StackInstruction createDup_1( int size ) {
+ return (size == 2) ? (StackInstruction) DUP2_X1 : (StackInstruction) DUP_X1;
+ }
+
+
+ /**
+ * @param index index of local variable
+ */
+ public static LocalVariableInstruction createStore( Type type, int index ) {
+ switch (type.getType()) {
+ case Constants.T_BOOLEAN:
+ case Constants.T_CHAR:
+ case Constants.T_BYTE:
+ case Constants.T_SHORT:
+ case Constants.T_INT:
+ return new ISTORE(index);
+ case Constants.T_FLOAT:
+ return new FSTORE(index);
+ case Constants.T_DOUBLE:
+ return new DSTORE(index);
+ case Constants.T_LONG:
+ return new LSTORE(index);
+ case Constants.T_ARRAY:
+ case Constants.T_OBJECT:
+ return new ASTORE(index);
+ default:
+ throw new RuntimeException("Invalid type " + type);
+ }
+ }
+
+
+ /**
+ * @param index index of local variable
+ */
+ public static LocalVariableInstruction createLoad( Type type, int index ) {
+ switch (type.getType()) {
+ case Constants.T_BOOLEAN:
+ case Constants.T_CHAR:
+ case Constants.T_BYTE:
+ case Constants.T_SHORT:
+ case Constants.T_INT:
+ return new ILOAD(index);
+ case Constants.T_FLOAT:
+ return new FLOAD(index);
+ case Constants.T_DOUBLE:
+ return new DLOAD(index);
+ case Constants.T_LONG:
+ return new LLOAD(index);
+ case Constants.T_ARRAY:
+ case Constants.T_OBJECT:
+ return new ALOAD(index);
+ default:
+ throw new RuntimeException("Invalid type " + type);
+ }
+ }
+
+
+ /**
+ * @param type type of elements of array, i.e., array.getElementType()
+ */
+ public static ArrayInstruction createArrayLoad( Type type ) {
+ switch (type.getType()) {
+ case Constants.T_BOOLEAN:
+ case Constants.T_BYTE:
+ return BALOAD;
+ case Constants.T_CHAR:
+ return CALOAD;
+ case Constants.T_SHORT:
+ return SALOAD;
+ case Constants.T_INT:
+ return IALOAD;
+ case Constants.T_FLOAT:
+ return FALOAD;
+ case Constants.T_DOUBLE:
+ return DALOAD;
+ case Constants.T_LONG:
+ return LALOAD;
+ case Constants.T_ARRAY:
+ case Constants.T_OBJECT:
+ return AALOAD;
+ default:
+ throw new RuntimeException("Invalid type " + type);
+ }
+ }
+
+
+ /**
+ * @param type type of elements of array, i.e., array.getElementType()
+ */
+ public static ArrayInstruction createArrayStore( Type type ) {
+ switch (type.getType()) {
+ case Constants.T_BOOLEAN:
+ case Constants.T_BYTE:
+ return BASTORE;
+ case Constants.T_CHAR:
+ return CASTORE;
+ case Constants.T_SHORT:
+ return SASTORE;
+ case Constants.T_INT:
+ return IASTORE;
+ case Constants.T_FLOAT:
+ return FASTORE;
+ case Constants.T_DOUBLE:
+ return DASTORE;
+ case Constants.T_LONG:
+ return LASTORE;
+ case Constants.T_ARRAY:
+ case Constants.T_OBJECT:
+ return AASTORE;
+ default:
+ throw new RuntimeException("Invalid type " + type);
+ }
+ }
+
+
+ /** Create conversion operation for two stack operands, this may be an I2C, instruction, e.g.,
+ * if the operands are basic types and CHECKCAST if they are reference types.
+ */
+ public Instruction createCast( Type src_type, Type dest_type ) {
+ if ((src_type instanceof BasicType) && (dest_type instanceof BasicType)) {
+ byte dest = dest_type.getType();
+ byte src = src_type.getType();
+ if (dest == Constants.T_LONG
+ && (src == Constants.T_CHAR || src == Constants.T_BYTE || src == Constants.T_SHORT)) {
+ src = Constants.T_INT;
+ }
+ String[] short_names = {
+ "C", "F", "D", "B", "S", "I", "L"
+ };
+ String name = "org.apache.bcel.generic." + short_names[src - Constants.T_CHAR] + "2"
+ + short_names[dest - Constants.T_CHAR];
+ Instruction i = null;
+ try {
+ i = (Instruction) java.lang.Class.forName(name).newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not find instruction: " + name);
+ }
+ return i;
+ } else if ((src_type instanceof ReferenceType) && (dest_type instanceof ReferenceType)) {
+ if (dest_type instanceof ArrayType) {
+ return new CHECKCAST(cp.addArrayClass((ArrayType) dest_type));
+ } else {
+ return new CHECKCAST(cp.addClass(((ObjectType) dest_type).getClassName()));
+ }
+ } else {
+ throw new RuntimeException("Can not cast " + src_type + " to " + dest_type);
+ }
+ }
+
+
+ public GETFIELD createGetField( String class_name, String name, Type t ) {
+ return new GETFIELD(cp.addFieldref(class_name, name, t.getSignature()));
+ }
+
+
+ public GETSTATIC createGetStatic( String class_name, String name, Type t ) {
+ return new GETSTATIC(cp.addFieldref(class_name, name, t.getSignature()));
+ }
+
+
+ public PUTFIELD createPutField( String class_name, String name, Type t ) {
+ return new PUTFIELD(cp.addFieldref(class_name, name, t.getSignature()));
+ }
+
+
+ public PUTSTATIC createPutStatic( String class_name, String name, Type t ) {
+ return new PUTSTATIC(cp.addFieldref(class_name, name, t.getSignature()));
+ }
+
+
+ public CHECKCAST createCheckCast( ReferenceType t ) {
+ if (t instanceof ArrayType) {
+ return new CHECKCAST(cp.addArrayClass((ArrayType) t));
+ } else {
+ return new CHECKCAST(cp.addClass((ObjectType) t));
+ }
+ }
+
+
+ public INSTANCEOF createInstanceOf( ReferenceType t ) {
+ if (t instanceof ArrayType) {
+ return new INSTANCEOF(cp.addArrayClass((ArrayType) t));
+ } else {
+ return new INSTANCEOF(cp.addClass((ObjectType) t));
+ }
+ }
+
+
+ public NEW createNew( ObjectType t ) {
+ return new NEW(cp.addClass(t));
+ }
+
+
+ public NEW createNew( String s ) {
+ return createNew(new ObjectType(s));
+ }
+
+
+ /** Create new array of given size and type.
+ * @return an instruction that creates the corresponding array at runtime, i.e. is an AllocationInstruction
+ */
+ public Instruction createNewArray( Type t, short dim ) {
+ if (dim == 1) {
+ if (t instanceof ObjectType) {
+ return new ANEWARRAY(cp.addClass((ObjectType) t));
+ } else if (t instanceof ArrayType) {
+ return new ANEWARRAY(cp.addArrayClass((ArrayType) t));
+ } else {
+ return new NEWARRAY(((BasicType) t).getType());
+ }
+ } else {
+ ArrayType at;
+ if (t instanceof ArrayType) {
+ at = (ArrayType) t;
+ } else {
+ at = new ArrayType(t, dim);
+ }
+ return new MULTIANEWARRAY(cp.addArrayClass(at), dim);
+ }
+ }
+
+
+ /** Create "null" value for reference types, 0 for basic types like int
+ */
+ public static Instruction createNull( Type type ) {
+ switch (type.getType()) {
+ case Constants.T_ARRAY:
+ case Constants.T_OBJECT:
+ return ACONST_NULL;
+ case Constants.T_INT:
+ case Constants.T_SHORT:
+ case Constants.T_BOOLEAN:
+ case Constants.T_CHAR:
+ case Constants.T_BYTE:
+ return ICONST_0;
+ case Constants.T_FLOAT:
+ return FCONST_0;
+ case Constants.T_DOUBLE:
+ return DCONST_0;
+ case Constants.T_LONG:
+ return LCONST_0;
+ case Constants.T_VOID:
+ return NOP;
+ default:
+ throw new RuntimeException("Invalid type: " + type);
+ }
+ }
+
+
+ /** Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH.
+ * For those you should use the SWITCH compound instruction.
+ */
+ public static BranchInstruction createBranchInstruction( short opcode, InstructionHandle target ) {
+ switch (opcode) {
+ case Constants.IFEQ:
+ return new IFEQ(target);
+ case Constants.IFNE:
+ return new IFNE(target);
+ case Constants.IFLT:
+ return new IFLT(target);
+ case Constants.IFGE:
+ return new IFGE(target);
+ case Constants.IFGT:
+ return new IFGT(target);
+ case Constants.IFLE:
+ return new IFLE(target);
+ case Constants.IF_ICMPEQ:
+ return new IF_ICMPEQ(target);
+ case Constants.IF_ICMPNE:
+ return new IF_ICMPNE(target);
+ case Constants.IF_ICMPLT:
+ return new IF_ICMPLT(target);
+ case Constants.IF_ICMPGE:
+ return new IF_ICMPGE(target);
+ case Constants.IF_ICMPGT:
+ return new IF_ICMPGT(target);
+ case Constants.IF_ICMPLE:
+ return new IF_ICMPLE(target);
+ case Constants.IF_ACMPEQ:
+ return new IF_ACMPEQ(target);
+ case Constants.IF_ACMPNE:
+ return new IF_ACMPNE(target);
+ case Constants.GOTO:
+ return new GOTO(target);
+ case Constants.JSR:
+ return new JSR(target);
+ case Constants.IFNULL:
+ return new IFNULL(target);
+ case Constants.IFNONNULL:
+ return new IFNONNULL(target);
+ case Constants.GOTO_W:
+ return new GOTO_W(target);
+ case Constants.JSR_W:
+ return new JSR_W(target);
+ default:
+ throw new RuntimeException("Invalid opcode: " + opcode);
+ }
+ }
+
+
+ public void setClassGen( ClassGen c ) {
+ cg = c;
+ }
+
+
+ public ClassGen getClassGen() {
+ return cg;
+ }
+
+
+ public void setConstantPool( ConstantPoolGen c ) {
+ cp = c;
+ }
+
+
+ public ConstantPoolGen getConstantPool() {
+ return cp;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionHandle.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionHandle.java
index 8e5db5c1..0e9c5ecf 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionHandle.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionHandle.java
@@ -1,291 +1,291 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Instances of this class give users a handle to the instructions contained in
- * an InstructionList. Instruction objects may be used more than once within a
- * list, this is useful because it saves memory and may be much faster.
- *
- * Within an InstructionList an InstructionHandle object is wrapped
- * around all instructions, i.e., it implements a cell in a
- * doubly-linked list. From the outside only the next and the
- * previous instruction (handle) are accessible. One
- * can traverse the list via an Enumeration returned by
- * InstructionList.elements().
- *
- * @version $Id: InstructionHandle.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Instruction
- * @see BranchHandle
- * @see InstructionList
- */
-public class InstructionHandle implements java.io.Serializable {
-
- InstructionHandle next, prev; // Will be set from the outside
- Instruction instruction;
- protected int i_position = -1; // byte code offset of instruction
- private Set targeters;
- private Map attributes;
-
-
- public final InstructionHandle getNext() {
- return next;
- }
-
-
- public final InstructionHandle getPrev() {
- return prev;
- }
-
-
- public final Instruction getInstruction() {
- return instruction;
- }
-
-
- /**
- * Replace current instruction contained in this handle.
- * Old instruction is disposed using Instruction.dispose().
- */
- public void setInstruction( Instruction i ) { // Overridden in BranchHandle
- if (i == null) {
- throw new ClassGenException("Assigning null to handle");
- }
- if ((this.getClass() != BranchHandle.class) && (i instanceof BranchInstruction)) {
- throw new ClassGenException("Assigning branch instruction " + i + " to plain handle");
- }
- if (instruction != null) {
- instruction.dispose();
- }
- instruction = i;
- }
-
-
- /**
- * Temporarily swap the current instruction, without disturbing
- * anything. Meant to be used by a debugger, implementing
- * breakpoints. Current instruction is returned.
- */
- public Instruction swapInstruction( Instruction i ) {
- Instruction oldInstruction = instruction;
- instruction = i;
- return oldInstruction;
- }
-
-
- /*private*/protected InstructionHandle(Instruction i) {
- setInstruction(i);
- }
-
- private static InstructionHandle ih_list = null; // List of reusable handles
-
-
- /** Factory method.
- */
- static final InstructionHandle getInstructionHandle( Instruction i ) {
- if (ih_list == null) {
- return new InstructionHandle(i);
- } else {
- InstructionHandle ih = ih_list;
- ih_list = ih.next;
- ih.setInstruction(i);
- return ih;
- }
- }
-
-
- /**
- * Called by InstructionList.setPositions when setting the position for every
- * instruction. In the presence of variable length instructions `setPositions()'
- * performs multiple passes over the instruction list to calculate the
- * correct (byte) positions and offsets by calling this function.
- *
- * @param offset additional offset caused by preceding (variable length) instructions
- * @param max_offset the maximum offset that may be caused by these instructions
- * @return additional offset caused by possible change of this instruction's length
- */
- protected int updatePosition( int offset, int max_offset ) {
- i_position += offset;
- return 0;
- }
-
-
- /** @return the position, i.e., the byte code offset of the contained
- * instruction. This is accurate only after
- * InstructionList.setPositions() has been called.
- */
- public int getPosition() {
- return i_position;
- }
-
-
- /** Set the position, i.e., the byte code offset of the contained
- * instruction.
- */
- void setPosition( int pos ) {
- i_position = pos;
- }
-
-
- /** Overridden in BranchHandle
- */
- protected void addHandle() {
- next = ih_list;
- ih_list = this;
- }
-
-
- /**
- * Delete contents, i.e., remove user access and make handle reusable.
- */
- void dispose() {
- next = prev = null;
- instruction.dispose();
- instruction = null;
- i_position = -1;
- attributes = null;
- removeAllTargeters();
- addHandle();
- }
-
-
- /** Remove all targeters, if any.
- */
- public void removeAllTargeters() {
- if (targeters != null) {
- targeters.clear();
- }
- }
-
-
- /**
- * Denote this handle isn't referenced anymore by t.
- */
- public void removeTargeter( InstructionTargeter t ) {
- if (targeters != null) {
- targeters.remove(t);
- }
- }
-
-
- /**
- * Denote this handle is being referenced by t.
- */
- public void addTargeter( InstructionTargeter t ) {
- if (targeters == null) {
- targeters = new HashSet();
- }
- //if(!targeters.contains(t))
- targeters.add(t);
- }
-
-
- public boolean hasTargeters() {
- return (targeters != null) && (targeters.size() > 0);
- }
-
-
- /**
- * @return null, if there are no targeters
- */
- public InstructionTargeter[] getTargeters() {
- if (!hasTargeters()) {
- return null;
- }
- InstructionTargeter[] t = new InstructionTargeter[targeters.size()];
- targeters.toArray(t);
- return t;
- }
-
-
- /** @return a (verbose) string representation of the contained instruction.
- */
- public String toString( boolean verbose ) {
- return Utility.format(i_position, 4, false, ' ') + ": " + instruction.toString(verbose);
- }
-
-
- /** @return a string representation of the contained instruction.
- */
- public String toString() {
- return toString(true);
- }
-
-
- /** Add an attribute to an instruction handle.
- *
- * @param key the key object to store/retrieve the attribute
- * @param attr the attribute to associate with this handle
- */
- public void addAttribute( Object key, Object attr ) {
- if (attributes == null) {
- attributes = new HashMap(3);
- }
- attributes.put(key, attr);
- }
-
-
- /** Delete an attribute of an instruction handle.
- *
- * @param key the key object to retrieve the attribute
- */
- public void removeAttribute( Object key ) {
- if (attributes != null) {
- attributes.remove(key);
- }
- }
-
-
- /** Get attribute of an instruction handle.
- *
- * @param key the key object to store/retrieve the attribute
- */
- public Object getAttribute( Object key ) {
- if (attributes != null) {
- return attributes.get(key);
- }
- return null;
- }
-
-
- /** @return all attributes associated with this handle
- */
- public Collection getAttributes() {
- if (attributes == null) {
- attributes = new HashMap(3);
- }
- return attributes.values();
- }
-
-
- /** Convenience method, simply calls accept() on the contained instruction.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- instruction.accept(v);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Instances of this class give users a handle to the instructions contained in
+ * an InstructionList. Instruction objects may be used more than once within a
+ * list, this is useful because it saves memory and may be much faster.
+ *
+ * Within an InstructionList an InstructionHandle object is wrapped
+ * around all instructions, i.e., it implements a cell in a
+ * doubly-linked list. From the outside only the next and the
+ * previous instruction (handle) are accessible. One
+ * can traverse the list via an Enumeration returned by
+ * InstructionList.elements().
+ *
+ * @version $Id: InstructionHandle.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Instruction
+ * @see BranchHandle
+ * @see InstructionList
+ */
+public class InstructionHandle implements java.io.Serializable {
+
+ InstructionHandle next, prev; // Will be set from the outside
+ Instruction instruction;
+ protected int i_position = -1; // byte code offset of instruction
+ private Set targeters;
+ private Map attributes;
+
+
+ public final InstructionHandle getNext() {
+ return next;
+ }
+
+
+ public final InstructionHandle getPrev() {
+ return prev;
+ }
+
+
+ public final Instruction getInstruction() {
+ return instruction;
+ }
+
+
+ /**
+ * Replace current instruction contained in this handle.
+ * Old instruction is disposed using Instruction.dispose().
+ */
+ public void setInstruction( Instruction i ) { // Overridden in BranchHandle
+ if (i == null) {
+ throw new ClassGenException("Assigning null to handle");
+ }
+ if ((this.getClass() != BranchHandle.class) && (i instanceof BranchInstruction)) {
+ throw new ClassGenException("Assigning branch instruction " + i + " to plain handle");
+ }
+ if (instruction != null) {
+ instruction.dispose();
+ }
+ instruction = i;
+ }
+
+
+ /**
+ * Temporarily swap the current instruction, without disturbing
+ * anything. Meant to be used by a debugger, implementing
+ * breakpoints. Current instruction is returned.
+ */
+ public Instruction swapInstruction( Instruction i ) {
+ Instruction oldInstruction = instruction;
+ instruction = i;
+ return oldInstruction;
+ }
+
+
+ /*private*/protected InstructionHandle(Instruction i) {
+ setInstruction(i);
+ }
+
+ private static InstructionHandle ih_list = null; // List of reusable handles
+
+
+ /** Factory method.
+ */
+ static final InstructionHandle getInstructionHandle( Instruction i ) {
+ if (ih_list == null) {
+ return new InstructionHandle(i);
+ } else {
+ InstructionHandle ih = ih_list;
+ ih_list = ih.next;
+ ih.setInstruction(i);
+ return ih;
+ }
+ }
+
+
+ /**
+ * Called by InstructionList.setPositions when setting the position for every
+ * instruction. In the presence of variable length instructions `setPositions()'
+ * performs multiple passes over the instruction list to calculate the
+ * correct (byte) positions and offsets by calling this function.
+ *
+ * @param offset additional offset caused by preceding (variable length) instructions
+ * @param max_offset the maximum offset that may be caused by these instructions
+ * @return additional offset caused by possible change of this instruction's length
+ */
+ protected int updatePosition( int offset, int max_offset ) {
+ i_position += offset;
+ return 0;
+ }
+
+
+ /** @return the position, i.e., the byte code offset of the contained
+ * instruction. This is accurate only after
+ * InstructionList.setPositions() has been called.
+ */
+ public int getPosition() {
+ return i_position;
+ }
+
+
+ /** Set the position, i.e., the byte code offset of the contained
+ * instruction.
+ */
+ void setPosition( int pos ) {
+ i_position = pos;
+ }
+
+
+ /** Overridden in BranchHandle
+ */
+ protected void addHandle() {
+ next = ih_list;
+ ih_list = this;
+ }
+
+
+ /**
+ * Delete contents, i.e., remove user access and make handle reusable.
+ */
+ void dispose() {
+ next = prev = null;
+ instruction.dispose();
+ instruction = null;
+ i_position = -1;
+ attributes = null;
+ removeAllTargeters();
+ addHandle();
+ }
+
+
+ /** Remove all targeters, if any.
+ */
+ public void removeAllTargeters() {
+ if (targeters != null) {
+ targeters.clear();
+ }
+ }
+
+
+ /**
+ * Denote this handle isn't referenced anymore by t.
+ */
+ public void removeTargeter( InstructionTargeter t ) {
+ if (targeters != null) {
+ targeters.remove(t);
+ }
+ }
+
+
+ /**
+ * Denote this handle is being referenced by t.
+ */
+ public void addTargeter( InstructionTargeter t ) {
+ if (targeters == null) {
+ targeters = new HashSet();
+ }
+ //if(!targeters.contains(t))
+ targeters.add(t);
+ }
+
+
+ public boolean hasTargeters() {
+ return (targeters != null) && (targeters.size() > 0);
+ }
+
+
+ /**
+ * @return null, if there are no targeters
+ */
+ public InstructionTargeter[] getTargeters() {
+ if (!hasTargeters()) {
+ return null;
+ }
+ InstructionTargeter[] t = new InstructionTargeter[targeters.size()];
+ targeters.toArray(t);
+ return t;
+ }
+
+
+ /** @return a (verbose) string representation of the contained instruction.
+ */
+ public String toString( boolean verbose ) {
+ return Utility.format(i_position, 4, false, ' ') + ": " + instruction.toString(verbose);
+ }
+
+
+ /** @return a string representation of the contained instruction.
+ */
+ public String toString() {
+ return toString(true);
+ }
+
+
+ /** Add an attribute to an instruction handle.
+ *
+ * @param key the key object to store/retrieve the attribute
+ * @param attr the attribute to associate with this handle
+ */
+ public void addAttribute( Object key, Object attr ) {
+ if (attributes == null) {
+ attributes = new HashMap(3);
+ }
+ attributes.put(key, attr);
+ }
+
+
+ /** Delete an attribute of an instruction handle.
+ *
+ * @param key the key object to retrieve the attribute
+ */
+ public void removeAttribute( Object key ) {
+ if (attributes != null) {
+ attributes.remove(key);
+ }
+ }
+
+
+ /** Get attribute of an instruction handle.
+ *
+ * @param key the key object to store/retrieve the attribute
+ */
+ public Object getAttribute( Object key ) {
+ if (attributes != null) {
+ return attributes.get(key);
+ }
+ return null;
+ }
+
+
+ /** @return all attributes associated with this handle
+ */
+ public Collection getAttributes() {
+ if (attributes == null) {
+ attributes = new HashMap(3);
+ }
+ return attributes.values();
+ }
+
+
+ /** Convenience method, simply calls accept() on the contained instruction.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ instruction.accept(v);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionList.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionList.java
index ca2ebdc9..8ec87a9d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionList.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionList.java
@@ -1,1266 +1,1266 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.Constant;
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * This class is a container for a list of Instruction objects. Instructions can
- * be appended, inserted, moved, deleted, etc.. Instructions are being
- * wrapped into InstructionHandles objects that
- * are returned upon append/insert operations. They give the user
- * (read only) access to the list structure, such that it can be traversed and
- * manipulated in a controlled way.
- *
- * A list is finally dumped to a byte code array with getByteCode.
- *
- * @version $Id: InstructionList.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Instruction
- * @see InstructionHandle
- * @see BranchHandle
- */
-public class InstructionList implements Serializable {
-
- private InstructionHandle start = null, end = null;
- private int length = 0; // number of elements in list
- private int[] byte_positions; // byte code offsets corresponding to instructions
-
-
- /**
- * Create (empty) instruction list.
- */
- public InstructionList() {
- }
-
-
- /**
- * Create instruction list containing one instruction.
- * @param i initial instruction
- */
- public InstructionList(Instruction i) {
- append(i);
- }
-
-
- /**
- * Create instruction list containing one instruction.
- * @param i initial instruction
- */
- public InstructionList(BranchInstruction i) {
- append(i);
- }
-
-
- /**
- * Initialize list with (nonnull) compound instruction. Consumes argument
- * list, i.e., it becomes empty.
- *
- * @param c compound instruction (list)
- */
- public InstructionList(CompoundInstruction c) {
- append(c.getInstructionList());
- }
-
-
- /**
- * Test for empty list.
- */
- public boolean isEmpty() {
- return start == null;
- } // && end == null
-
-
- /**
- * Find the target instruction (handle) that corresponds to the given target
- * position (byte code offset).
- *
- * @param ihs array of instruction handles, i.e. il.getInstructionHandles()
- * @param pos array of positions corresponding to ihs, i.e. il.getInstructionPositions()
- * @param count length of arrays
- * @param target target position to search for
- * @return target position's instruction handle if available
- */
- public static InstructionHandle findHandle( InstructionHandle[] ihs, int[] pos, int count,
- int target ) {
- int l = 0, r = count - 1;
- /* Do a binary search since the pos array is orderd.
- */
- do {
- int i = (l + r) / 2;
- int j = pos[i];
- if (j == target) {
- return ihs[i];
- } else if (target < j) {
- r = i - 1;
- } else {
- l = i + 1;
- }
- } while (l <= r);
- return null;
- }
-
-
- /**
- * Get instruction handle for instruction at byte code position pos.
- * This only works properly, if the list is freshly initialized from a byte array or
- * setPositions() has been called before this method.
- *
- * @param pos byte code position to search for
- * @return target position's instruction handle if available
- */
- public InstructionHandle findHandle( int pos ) {
- InstructionHandle[] ihs = getInstructionHandles();
- return findHandle(ihs, byte_positions, length, pos);
- }
-
-
- /**
- * Initialize instruction list from byte array.
- *
- * @param code byte array containing the instructions
- */
- public InstructionList(byte[] code) {
- ByteSequence bytes = new ByteSequence(code);
- InstructionHandle[] ihs = new InstructionHandle[code.length];
- int[] pos = new int[code.length]; // Can't be more than that
- int count = 0; // Contains actual length
- /* Pass 1: Create an object for each byte code and append them
- * to the list.
- */
- try {
- while (bytes.available() > 0) {
- // Remember byte offset and associate it with the instruction
- int off = bytes.getIndex();
- pos[count] = off;
- /* Read one instruction from the byte stream, the byte position is set
- * accordingly.
- */
- Instruction i = Instruction.readInstruction(bytes);
- InstructionHandle ih;
- if (i instanceof BranchInstruction) {
- ih = append((BranchInstruction) i);
- } else {
- ih = append(i);
- }
- ih.setPosition(off);
- ihs[count] = ih;
- count++;
- }
- } catch (IOException e) {
- throw new ClassGenException(e.toString());
- }
- byte_positions = new int[count]; // Trim to proper size
- System.arraycopy(pos, 0, byte_positions, 0, count);
- /* Pass 2: Look for BranchInstruction and update their targets, i.e.,
- * convert offsets to instruction handles.
- */
- for (int i = 0; i < count; i++) {
- if (ihs[i] instanceof BranchHandle) {
- BranchInstruction bi = (BranchInstruction) ihs[i].instruction;
- int target = bi.position + bi.getIndex(); /* Byte code position:
- * relative -> absolute. */
- // Search for target position
- InstructionHandle ih = findHandle(ihs, pos, count, target);
- if (ih == null) {
- throw new ClassGenException("Couldn't find target for branch: " + bi);
- }
- bi.setTarget(ih); // Update target
- // If it is a Select instruction, update all branch targets
- if (bi instanceof Select) { // Either LOOKUPSWITCH or TABLESWITCH
- Select s = (Select) bi;
- int[] indices = s.getIndices();
- for (int j = 0; j < indices.length; j++) {
- target = bi.position + indices[j];
- ih = findHandle(ihs, pos, count, target);
- if (ih == null) {
- throw new ClassGenException("Couldn't find target for switch: " + bi);
- }
- s.setTarget(j, ih); // Update target
- }
- }
- }
- }
- }
-
-
- /**
- * Append another list after instruction (handle) ih contained in this list.
- * Consumes argument list, i.e., it becomes empty.
- *
- * @param ih where to append the instruction list
- * @param il Instruction list to append to this one
- * @return instruction handle pointing to the first appended instruction
- */
- public InstructionHandle append( InstructionHandle ih, InstructionList il ) {
- if (il == null) {
- throw new ClassGenException("Appending null InstructionList");
- }
- if (il.isEmpty()) {
- return ih;
- }
- InstructionHandle next = ih.next, ret = il.start;
- ih.next = il.start;
- il.start.prev = ih;
- il.end.next = next;
- if (next != null) {
- next.prev = il.end;
- } else {
- end = il.end; // Update end ...
- }
- length += il.length; // Update length
- il.clear();
- return ret;
- }
-
-
- /**
- * Append another list after instruction i contained in this list.
- * Consumes argument list, i.e., it becomes empty.
- *
- * @param i where to append the instruction list
- * @param il Instruction list to append to this one
- * @return instruction handle pointing to the first appended instruction
- */
- public InstructionHandle append( Instruction i, InstructionList il ) {
- InstructionHandle ih;
- if ((ih = findInstruction2(i)) == null) {
- throw new ClassGenException("Instruction " + i + " is not contained in this list.");
- }
- return append(ih, il);
- }
-
-
- /**
- * Append another list to this one.
- * Consumes argument list, i.e., it becomes empty.
- *
- * @param il list to append to end of this list
- * @return instruction handle of the first appended instruction
- */
- public InstructionHandle append( InstructionList il ) {
- if (il == null) {
- throw new ClassGenException("Appending null InstructionList");
- }
- if (il.isEmpty()) {
- return null;
- }
- if (isEmpty()) {
- start = il.start;
- end = il.end;
- length = il.length;
- il.clear();
- return start;
- } else {
- return append(end, il); // was end.instruction
- }
- }
-
-
- /**
- * Append an instruction to the end of this list.
- *
- * @param ih instruction to append
- */
- private void append( InstructionHandle ih ) {
- if (isEmpty()) {
- start = end = ih;
- ih.next = ih.prev = null;
- } else {
- end.next = ih;
- ih.prev = end;
- ih.next = null;
- end = ih;
- }
- length++; // Update length
- }
-
-
- /**
- * Append an instruction to the end of this list.
- *
- * @param i instruction to append
- * @return instruction handle of the appended instruction
- */
- public InstructionHandle append( Instruction i ) {
- InstructionHandle ih = InstructionHandle.getInstructionHandle(i);
- append(ih);
- return ih;
- }
-
-
- /**
- * Append a branch instruction to the end of this list.
- *
- * @param i branch instruction to append
- * @return branch instruction handle of the appended instruction
- */
- public BranchHandle append( BranchInstruction i ) {
- BranchHandle ih = BranchHandle.getBranchHandle(i);
- append(ih);
- return ih;
- }
-
-
- /**
- * Append a single instruction j after another instruction i, which
- * must be in this list of course!
- *
- * @param i Instruction in list
- * @param j Instruction to append after i in list
- * @return instruction handle of the first appended instruction
- */
- public InstructionHandle append( Instruction i, Instruction j ) {
- return append(i, new InstructionList(j));
- }
-
-
- /**
- * Append a compound instruction, after instruction i.
- *
- * @param i Instruction in list
- * @param c The composite instruction (containing an InstructionList)
- * @return instruction handle of the first appended instruction
- */
- public InstructionHandle append( Instruction i, CompoundInstruction c ) {
- return append(i, c.getInstructionList());
- }
-
-
- /**
- * Append a compound instruction.
- *
- * @param c The composite instruction (containing an InstructionList)
- * @return instruction handle of the first appended instruction
- */
- public InstructionHandle append( CompoundInstruction c ) {
- return append(c.getInstructionList());
- }
-
-
- /**
- * Append a compound instruction.
- *
- * @param ih where to append the instruction list
- * @param c The composite instruction (containing an InstructionList)
- * @return instruction handle of the first appended instruction
- */
- public InstructionHandle append( InstructionHandle ih, CompoundInstruction c ) {
- return append(ih, c.getInstructionList());
- }
-
-
- /**
- * Append an instruction after instruction (handle) ih contained in this list.
- *
- * @param ih where to append the instruction list
- * @param i Instruction to append
- * @return instruction handle pointing to the first appended instruction
- */
- public InstructionHandle append( InstructionHandle ih, Instruction i ) {
- return append(ih, new InstructionList(i));
- }
-
-
- /**
- * Append an instruction after instruction (handle) ih contained in this list.
- *
- * @param ih where to append the instruction list
- * @param i Instruction to append
- * @return instruction handle pointing to the first appended instruction
- */
- public BranchHandle append( InstructionHandle ih, BranchInstruction i ) {
- BranchHandle bh = BranchHandle.getBranchHandle(i);
- InstructionList il = new InstructionList();
- il.append(bh);
- append(ih, il);
- return bh;
- }
-
-
- /**
- * Insert another list before Instruction handle ih contained in this list.
- * Consumes argument list, i.e., it becomes empty.
- *
- * @param ih where to append the instruction list
- * @param il Instruction list to insert
- * @return instruction handle of the first inserted instruction
- */
- public InstructionHandle insert( InstructionHandle ih, InstructionList il ) {
- if (il == null) {
- throw new ClassGenException("Inserting null InstructionList");
- }
- if (il.isEmpty()) {
- return ih;
- }
- InstructionHandle prev = ih.prev, ret = il.start;
- ih.prev = il.end;
- il.end.next = ih;
- il.start.prev = prev;
- if (prev != null) {
- prev.next = il.start;
- } else {
- start = il.start; // Update start ...
- }
- length += il.length; // Update length
- il.clear();
- return ret;
- }
-
-
- /**
- * Insert another list.
- *
- * @param il list to insert before start of this list
- * @return instruction handle of the first inserted instruction
- */
- public InstructionHandle insert( InstructionList il ) {
- if (isEmpty()) {
- append(il); // Code is identical for this case
- return start;
- } else {
- return insert(start, il);
- }
- }
-
-
- /**
- * Insert an instruction at start of this list.
- *
- * @param ih instruction to insert
- */
- private void insert( InstructionHandle ih ) {
- if (isEmpty()) {
- start = end = ih;
- ih.next = ih.prev = null;
- } else {
- start.prev = ih;
- ih.next = start;
- ih.prev = null;
- start = ih;
- }
- length++;
- }
-
-
- /**
- * Insert another list before Instruction i contained in this list.
- * Consumes argument list, i.e., it becomes empty.
- *
- * @param i where to append the instruction list
- * @param il Instruction list to insert
- * @return instruction handle pointing to the first inserted instruction,
- * i.e., il.getStart()
- */
- public InstructionHandle insert( Instruction i, InstructionList il ) {
- InstructionHandle ih;
- if ((ih = findInstruction1(i)) == null) {
- throw new ClassGenException("Instruction " + i + " is not contained in this list.");
- }
- return insert(ih, il);
- }
-
-
- /**
- * Insert an instruction at start of this list.
- *
- * @param i instruction to insert
- * @return instruction handle of the inserted instruction
- */
- public InstructionHandle insert( Instruction i ) {
- InstructionHandle ih = InstructionHandle.getInstructionHandle(i);
- insert(ih);
- return ih;
- }
-
-
- /**
- * Insert a branch instruction at start of this list.
- *
- * @param i branch instruction to insert
- * @return branch instruction handle of the appended instruction
- */
- public BranchHandle insert( BranchInstruction i ) {
- BranchHandle ih = BranchHandle.getBranchHandle(i);
- insert(ih);
- return ih;
- }
-
-
- /**
- * Insert a single instruction j before another instruction i, which
- * must be in this list of course!
- *
- * @param i Instruction in list
- * @param j Instruction to insert before i in list
- * @return instruction handle of the first inserted instruction
- */
- public InstructionHandle insert( Instruction i, Instruction j ) {
- return insert(i, new InstructionList(j));
- }
-
-
- /**
- * Insert a compound instruction before instruction i.
- *
- * @param i Instruction in list
- * @param c The composite instruction (containing an InstructionList)
- * @return instruction handle of the first inserted instruction
- */
- public InstructionHandle insert( Instruction i, CompoundInstruction c ) {
- return insert(i, c.getInstructionList());
- }
-
-
- /**
- * Insert a compound instruction.
- *
- * @param c The composite instruction (containing an InstructionList)
- * @return instruction handle of the first inserted instruction
- */
- public InstructionHandle insert( CompoundInstruction c ) {
- return insert(c.getInstructionList());
- }
-
-
- /**
- * Insert an instruction before instruction (handle) ih contained in this list.
- *
- * @param ih where to insert to the instruction list
- * @param i Instruction to insert
- * @return instruction handle of the first inserted instruction
- */
- public InstructionHandle insert( InstructionHandle ih, Instruction i ) {
- return insert(ih, new InstructionList(i));
- }
-
-
- /**
- * Insert a compound instruction.
- *
- * @param ih where to insert the instruction list
- * @param c The composite instruction (containing an InstructionList)
- * @return instruction handle of the first inserted instruction
- */
- public InstructionHandle insert( InstructionHandle ih, CompoundInstruction c ) {
- return insert(ih, c.getInstructionList());
- }
-
-
- /**
- * Insert an instruction before instruction (handle) ih contained in this list.
- *
- * @param ih where to insert to the instruction list
- * @param i Instruction to insert
- * @return instruction handle of the first inserted instruction
- */
- public BranchHandle insert( InstructionHandle ih, BranchInstruction i ) {
- BranchHandle bh = BranchHandle.getBranchHandle(i);
- InstructionList il = new InstructionList();
- il.append(bh);
- insert(ih, il);
- return bh;
- }
-
-
- /**
- * Take all instructions (handles) from "start" to "end" and append them after the
- * new location "target". Of course, "end" must be after "start" and target must
- * not be located withing this range. If you want to move something to the start of
- * the list use null as value for target.
- * Any instruction targeters pointing to handles within the block, keep their targets.
- *
- * @param start of moved block
- * @param end of moved block
- * @param target of moved block
- */
- public void move( InstructionHandle start, InstructionHandle end, InstructionHandle target ) {
- // Step 1: Check constraints
- if ((start == null) || (end == null)) {
- throw new ClassGenException("Invalid null handle: From " + start + " to " + end);
- }
- if ((target == start) || (target == end)) {
- throw new ClassGenException("Invalid range: From " + start + " to " + end
- + " contains target " + target);
- }
- for (InstructionHandle ih = start; ih != end.next; ih = ih.next) {
- if (ih == null) {
- throw new ClassGenException("Invalid range: From " + start + " to " + end);
- } else if (ih == target) {
- throw new ClassGenException("Invalid range: From " + start + " to " + end
- + " contains target " + target);
- }
- }
- // Step 2: Temporarily remove the given instructions from the list
- InstructionHandle prev = start.prev, next = end.next;
- if (prev != null) {
- prev.next = next;
- } else {
- this.start = next;
- }
- if (next != null) {
- next.prev = prev;
- } else {
- this.end = prev;
- }
- start.prev = end.next = null;
- // Step 3: append after target
- if (target == null) { // append to start of list
- if (this.start != null) {
- this.start.prev = end;
- }
- end.next = this.start;
- this.start = start;
- } else {
- next = target.next;
- target.next = start;
- start.prev = target;
- end.next = next;
- if (next != null) {
- next.prev = end;
- } else {
- this.end = end;
- }
- }
- }
-
-
- /**
- * Move a single instruction (handle) to a new location.
- *
- * @param ih moved instruction
- * @param target new location of moved instruction
- */
- public void move( InstructionHandle ih, InstructionHandle target ) {
- move(ih, ih, target);
- }
-
-
- /**
- * Remove from instruction `prev' to instruction `next' both contained
- * in this list. Throws TargetLostException when one of the removed instruction handles
- * is still being targeted.
- *
- * @param prev where to start deleting (predecessor, exclusive)
- * @param next where to end deleting (successor, exclusive)
- */
- private void remove( InstructionHandle prev, InstructionHandle next )
- throws TargetLostException {
- InstructionHandle first, last; // First and last deleted instruction
- if ((prev == null) && (next == null)) { // singleton list
- first = last = start;
- start = end = null;
- } else {
- if (prev == null) { // At start of list
- first = start;
- start = next;
- } else {
- first = prev.next;
- prev.next = next;
- }
- if (next == null) { // At end of list
- last = end;
- end = prev;
- } else {
- last = next.prev;
- next.prev = prev;
- }
- }
- first.prev = null; // Completely separated from rest of list
- last.next = null;
- List target_vec = new ArrayList();
- for (InstructionHandle ih = first; ih != null; ih = ih.next) {
- ih.getInstruction().dispose(); // e.g. BranchInstructions release their targets
- }
- StringBuilder buf = new StringBuilder("{ ");
- for (InstructionHandle ih = first; ih != null; ih = next) {
- next = ih.next;
- length--;
- if (ih.hasTargeters()) { // Still got targeters?
- target_vec.add(ih);
- buf.append(ih.toString(true) + " ");
- ih.next = ih.prev = null;
- } else {
- ih.dispose();
- }
- }
- buf.append("}");
- if (!target_vec.isEmpty()) {
- InstructionHandle[] targeted = new InstructionHandle[target_vec.size()];
- target_vec.toArray(targeted);
- throw new TargetLostException(targeted, buf.toString());
- }
- }
-
-
- /**
- * Remove instruction from this list. The corresponding Instruction
- * handles must not be reused!
- *
- * @param ih instruction (handle) to remove
- */
- public void delete( InstructionHandle ih ) throws TargetLostException {
- remove(ih.prev, ih.next);
- }
-
-
- /**
- * Remove instruction from this list. The corresponding Instruction
- * handles must not be reused!
- *
- * @param i instruction to remove
- */
- public void delete( Instruction i ) throws TargetLostException {
- InstructionHandle ih;
- if ((ih = findInstruction1(i)) == null) {
- throw new ClassGenException("Instruction " + i + " is not contained in this list.");
- }
- delete(ih);
- }
-
-
- /**
- * Remove instructions from instruction `from' to instruction `to' contained
- * in this list. The user must ensure that `from' is an instruction before
- * `to', or risk havoc. The corresponding Instruction handles must not be reused!
- *
- * @param from where to start deleting (inclusive)
- * @param to where to end deleting (inclusive)
- */
- public void delete( InstructionHandle from, InstructionHandle to ) throws TargetLostException {
- remove(from.prev, to.next);
- }
-
-
- /**
- * Remove instructions from instruction `from' to instruction `to' contained
- * in this list. The user must ensure that `from' is an instruction before
- * `to', or risk havoc. The corresponding Instruction handles must not be reused!
- *
- * @param from where to start deleting (inclusive)
- * @param to where to end deleting (inclusive)
- */
- public void delete( Instruction from, Instruction to ) throws TargetLostException {
- InstructionHandle from_ih, to_ih;
- if ((from_ih = findInstruction1(from)) == null) {
- throw new ClassGenException("Instruction " + from + " is not contained in this list.");
- }
- if ((to_ih = findInstruction2(to)) == null) {
- throw new ClassGenException("Instruction " + to + " is not contained in this list.");
- }
- delete(from_ih, to_ih);
- }
-
-
- /**
- * Search for given Instruction reference, start at beginning of list.
- *
- * @param i instruction to search for
- * @return instruction found on success, null otherwise
- */
- private InstructionHandle findInstruction1( Instruction i ) {
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- if (ih.instruction == i) {
- return ih;
- }
- }
- return null;
- }
-
-
- /**
- * Search for given Instruction reference, start at end of list
- *
- * @param i instruction to search for
- * @return instruction found on success, null otherwise
- */
- private InstructionHandle findInstruction2( Instruction i ) {
- for (InstructionHandle ih = end; ih != null; ih = ih.prev) {
- if (ih.instruction == i) {
- return ih;
- }
- }
- return null;
- }
-
-
- public boolean contains( InstructionHandle i ) {
- if (i == null) {
- return false;
- }
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- if (ih == i) {
- return true;
- }
- }
- return false;
- }
-
-
- public boolean contains( Instruction i ) {
- return findInstruction1(i) != null;
- }
-
-
- public void setPositions() {
- setPositions(false);
- }
-
-
- /**
- * Give all instructions their position number (offset in byte stream), i.e.,
- * make the list ready to be dumped.
- *
- * @param check Perform sanity checks, e.g. if all targeted instructions really belong
- * to this list
- */
- public void setPositions( boolean check ) {
- int max_additional_bytes = 0, additional_bytes = 0;
- int index = 0, count = 0;
- int[] pos = new int[length];
- /* Pass 0: Sanity checks
- */
- if (check) {
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- Instruction i = ih.instruction;
- if (i instanceof BranchInstruction) { // target instruction within list?
- Instruction inst = ((BranchInstruction) i).getTarget().instruction;
- if (!contains(inst)) {
- throw new ClassGenException("Branch target of "
- + Constants.OPCODE_NAMES[i.opcode] + ":" + inst
- + " not in instruction list");
- }
- if (i instanceof Select) {
- InstructionHandle[] targets = ((Select) i).getTargets();
- for (int j = 0; j < targets.length; j++) {
- inst = targets[j].instruction;
- if (!contains(inst)) {
- throw new ClassGenException("Branch target of "
- + Constants.OPCODE_NAMES[i.opcode] + ":" + inst
- + " not in instruction list");
- }
- }
- }
- if (!(ih instanceof BranchHandle)) {
- throw new ClassGenException("Branch instruction "
- + Constants.OPCODE_NAMES[i.opcode] + ":" + inst
- + " not contained in BranchHandle.");
- }
- }
- }
- }
- /* Pass 1: Set position numbers and sum up the maximum number of bytes an
- * instruction may be shifted.
- */
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- Instruction i = ih.instruction;
- ih.setPosition(index);
- pos[count++] = index;
- /* Get an estimate about how many additional bytes may be added, because
- * BranchInstructions may have variable length depending on the target
- * offset (short vs. int) or alignment issues (TABLESWITCH and
- * LOOKUPSWITCH).
- */
- switch (i.getOpcode()) {
- case Constants.JSR:
- case Constants.GOTO:
- max_additional_bytes += 2;
- break;
- case Constants.TABLESWITCH:
- case Constants.LOOKUPSWITCH:
- max_additional_bytes += 3;
- break;
- }
- index += i.getLength();
- }
- /* Pass 2: Expand the variable-length (Branch)Instructions depending on
- * the target offset (short or int) and ensure that branch targets are
- * within this list.
- */
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- additional_bytes += ih.updatePosition(additional_bytes, max_additional_bytes);
- }
- /* Pass 3: Update position numbers (which may have changed due to the
- * preceding expansions), like pass 1.
- */
- index = count = 0;
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- Instruction i = ih.instruction;
- ih.setPosition(index);
- pos[count++] = index;
- index += i.getLength();
- }
- byte_positions = new int[count]; // Trim to proper size
- System.arraycopy(pos, 0, byte_positions, 0, count);
- }
-
-
- /**
- * When everything is finished, use this method to convert the instruction
- * list into an array of bytes.
- *
- * @return the byte code ready to be dumped
- */
- public byte[] getByteCode() {
- // Update position indices of instructions
- setPositions();
- ByteArrayOutputStream b = new ByteArrayOutputStream();
- DataOutputStream out = new DataOutputStream(b);
- try {
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- Instruction i = ih.instruction;
- i.dump(out); // Traverse list
- }
- } catch (IOException e) {
- System.err.println(e);
- return null;
- }
- return b.toByteArray();
- }
-
-
- /**
- * @return an array of instructions without target information for branch instructions.
- */
- public Instruction[] getInstructions() {
- ByteSequence bytes = new ByteSequence(getByteCode());
- List instructions = new ArrayList();
- try {
- while (bytes.available() > 0) {
- instructions.add(Instruction.readInstruction(bytes));
- }
- } catch (IOException e) {
- throw new ClassGenException(e.toString());
- }
- return (Instruction[]) instructions.toArray(new Instruction[instructions.size()]);
- }
-
-
- public String toString() {
- return toString(true);
- }
-
-
- /**
- * @param verbose toggle output format
- * @return String containing all instructions in this list.
- */
- public String toString( boolean verbose ) {
- StringBuilder buf = new StringBuilder();
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- buf.append(ih.toString(verbose)).append("\n");
- }
- return buf.toString();
- }
-
-
- /**
- * @return Enumeration that lists all instructions (handles)
- */
- public Iterator iterator() {
- return new Iterator() {
-
- private InstructionHandle ih = start;
-
-
- public Object next() {
- InstructionHandle i = ih;
- ih = ih.next;
- return i;
- }
-
-
- public void remove() {
- throw new UnsupportedOperationException();
- }
-
-
- public boolean hasNext() {
- return ih != null;
- }
- };
- }
-
-
- /**
- * @return array containing all instructions (handles)
- */
- public InstructionHandle[] getInstructionHandles() {
- InstructionHandle[] ihs = new InstructionHandle[length];
- InstructionHandle ih = start;
- for (int i = 0; i < length; i++) {
- ihs[i] = ih;
- ih = ih.next;
- }
- return ihs;
- }
-
-
- /**
- * Get positions (offsets) of all instructions in the list. This relies on that
- * the list has been freshly created from an byte code array, or that setPositions()
- * has been called. Otherwise this may be inaccurate.
- *
- * @return array containing all instruction's offset in byte code
- */
- public int[] getInstructionPositions() {
- return byte_positions;
- }
-
-
- /**
- * @return complete, i.e., deep copy of this list
- */
- public InstructionList copy() {
- Map map = new HashMap();
- InstructionList il = new InstructionList();
- /* Pass 1: Make copies of all instructions, append them to the new list
- * and associate old instruction references with the new ones, i.e.,
- * a 1:1 mapping.
- */
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- Instruction i = ih.instruction;
- Instruction c = i.copy(); // Use clone for shallow copy
- if (c instanceof BranchInstruction) {
- map.put(ih, il.append((BranchInstruction) c));
- } else {
- map.put(ih, il.append(c));
- }
- }
- /* Pass 2: Update branch targets.
- */
- InstructionHandle ih = start;
- InstructionHandle ch = il.start;
- while (ih != null) {
- Instruction i = ih.instruction;
- Instruction c = ch.instruction;
- if (i instanceof BranchInstruction) {
- BranchInstruction bi = (BranchInstruction) i;
- BranchInstruction bc = (BranchInstruction) c;
- InstructionHandle itarget = bi.getTarget(); // old target
- // New target is in hash map
- bc.setTarget((InstructionHandle) map.get(itarget));
- if (bi instanceof Select) { // Either LOOKUPSWITCH or TABLESWITCH
- InstructionHandle[] itargets = ((Select) bi).getTargets();
- InstructionHandle[] ctargets = ((Select) bc).getTargets();
- for (int j = 0; j < itargets.length; j++) { // Update all targets
- ctargets[j] = (InstructionHandle) map.get(itargets[j]);
- }
- }
- }
- ih = ih.next;
- ch = ch.next;
- }
- return il;
- }
-
-
- /** Replace all references to the old constant pool with references to the new
- * constant pool
- */
- public void replaceConstantPool( ConstantPoolGen old_cp, ConstantPoolGen new_cp ) {
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- Instruction i = ih.instruction;
- if (i instanceof CPInstruction) {
- CPInstruction ci = (CPInstruction) i;
- Constant c = old_cp.getConstant(ci.getIndex());
- ci.setIndex(new_cp.addConstant(c, old_cp));
- }
- }
- }
-
-
- private void clear() {
- start = end = null;
- length = 0;
- }
-
-
- /**
- * Delete contents of list. Provides besser memory utilization,
- * because the system then may reuse the instruction handles. This
- * method is typically called right after
- * MethodGen.getMethod().
- */
- public void dispose() {
- // Traverse in reverse order, because ih.next is overwritten
- for (InstructionHandle ih = end; ih != null; ih = ih.prev) {
- /* Causes BranchInstructions to release target and targeters, because it
- * calls dispose() on the contained instruction.
- */
- ih.dispose();
- }
- clear();
- }
-
-
- /**
- * @return start of list
- */
- public InstructionHandle getStart() {
- return start;
- }
-
-
- /**
- * @return end of list
- */
- public InstructionHandle getEnd() {
- return end;
- }
-
-
- /**
- * @return length of list (Number of instructions, not bytes)
- */
- public int getLength() {
- return length;
- }
-
-
- /**
- * @return length of list (Number of instructions, not bytes)
- */
- public int size() {
- return length;
- }
-
-
- /**
- * Redirect all references from old_target to new_target, i.e., update targets
- * of branch instructions.
- *
- * @param old_target the old target instruction handle
- * @param new_target the new target instruction handle
- */
- public void redirectBranches( InstructionHandle old_target, InstructionHandle new_target ) {
- for (InstructionHandle ih = start; ih != null; ih = ih.next) {
- Instruction i = ih.getInstruction();
- if (i instanceof BranchInstruction) {
- BranchInstruction b = (BranchInstruction) i;
- InstructionHandle target = b.getTarget();
- if (target == old_target) {
- b.setTarget(new_target);
- }
- if (b instanceof Select) { // Either LOOKUPSWITCH or TABLESWITCH
- InstructionHandle[] targets = ((Select) b).getTargets();
- for (int j = 0; j < targets.length; j++) {
- if (targets[j] == old_target) {
- ((Select) b).setTarget(j, new_target);
- }
- }
- }
- }
- }
- }
-
-
- /**
- * Redirect all references of local variables from old_target to new_target.
- *
- * @param lg array of local variables
- * @param old_target the old target instruction handle
- * @param new_target the new target instruction handle
- * @see MethodGen
- */
- public void redirectLocalVariables( LocalVariableGen[] lg, InstructionHandle old_target,
- InstructionHandle new_target ) {
- for (int i = 0; i < lg.length; i++) {
- InstructionHandle start = lg[i].getStart();
- InstructionHandle end = lg[i].getEnd();
- if (start == old_target) {
- lg[i].setStart(new_target);
- }
- if (end == old_target) {
- lg[i].setEnd(new_target);
- }
- }
- }
-
-
- /**
- * Redirect all references of exception handlers from old_target to new_target.
- *
- * @param exceptions array of exception handlers
- * @param old_target the old target instruction handle
- * @param new_target the new target instruction handle
- * @see MethodGen
- */
- public void redirectExceptionHandlers( CodeExceptionGen[] exceptions,
- InstructionHandle old_target, InstructionHandle new_target ) {
- for (int i = 0; i < exceptions.length; i++) {
- if (exceptions[i].getStartPC() == old_target) {
- exceptions[i].setStartPC(new_target);
- }
- if (exceptions[i].getEndPC() == old_target) {
- exceptions[i].setEndPC(new_target);
- }
- if (exceptions[i].getHandlerPC() == old_target) {
- exceptions[i].setHandlerPC(new_target);
- }
- }
- }
-
- private List observers;
-
-
- /** Add observer for this object.
- */
- public void addObserver( InstructionListObserver o ) {
- if (observers == null) {
- observers = new ArrayList();
- }
- observers.add(o);
- }
-
-
- /** Remove observer for this object.
- */
- public void removeObserver( InstructionListObserver o ) {
- if (observers != null) {
- observers.remove(o);
- }
- }
-
-
- /** Call notify() method on all observers. This method is not called
- * automatically whenever the state has changed, but has to be
- * called by the user after he has finished editing the object.
- */
- public void update() {
- if (observers != null) {
- for (Iterator e = observers.iterator(); e.hasNext();) {
- ((InstructionListObserver) e.next()).notify(this);
- }
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.Constant;
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * This class is a container for a list of Instruction objects. Instructions can
+ * be appended, inserted, moved, deleted, etc.. Instructions are being
+ * wrapped into InstructionHandles objects that
+ * are returned upon append/insert operations. They give the user
+ * (read only) access to the list structure, such that it can be traversed and
+ * manipulated in a controlled way.
+ *
+ * A list is finally dumped to a byte code array with getByteCode.
+ *
+ * @version $Id: InstructionList.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Instruction
+ * @see InstructionHandle
+ * @see BranchHandle
+ */
+public class InstructionList implements Serializable {
+
+ private InstructionHandle start = null, end = null;
+ private int length = 0; // number of elements in list
+ private int[] byte_positions; // byte code offsets corresponding to instructions
+
+
+ /**
+ * Create (empty) instruction list.
+ */
+ public InstructionList() {
+ }
+
+
+ /**
+ * Create instruction list containing one instruction.
+ * @param i initial instruction
+ */
+ public InstructionList(Instruction i) {
+ append(i);
+ }
+
+
+ /**
+ * Create instruction list containing one instruction.
+ * @param i initial instruction
+ */
+ public InstructionList(BranchInstruction i) {
+ append(i);
+ }
+
+
+ /**
+ * Initialize list with (nonnull) compound instruction. Consumes argument
+ * list, i.e., it becomes empty.
+ *
+ * @param c compound instruction (list)
+ */
+ public InstructionList(CompoundInstruction c) {
+ append(c.getInstructionList());
+ }
+
+
+ /**
+ * Test for empty list.
+ */
+ public boolean isEmpty() {
+ return start == null;
+ } // && end == null
+
+
+ /**
+ * Find the target instruction (handle) that corresponds to the given target
+ * position (byte code offset).
+ *
+ * @param ihs array of instruction handles, i.e. il.getInstructionHandles()
+ * @param pos array of positions corresponding to ihs, i.e. il.getInstructionPositions()
+ * @param count length of arrays
+ * @param target target position to search for
+ * @return target position's instruction handle if available
+ */
+ public static InstructionHandle findHandle( InstructionHandle[] ihs, int[] pos, int count,
+ int target ) {
+ int l = 0, r = count - 1;
+ /* Do a binary search since the pos array is orderd.
+ */
+ do {
+ int i = (l + r) / 2;
+ int j = pos[i];
+ if (j == target) {
+ return ihs[i];
+ } else if (target < j) {
+ r = i - 1;
+ } else {
+ l = i + 1;
+ }
+ } while (l <= r);
+ return null;
+ }
+
+
+ /**
+ * Get instruction handle for instruction at byte code position pos.
+ * This only works properly, if the list is freshly initialized from a byte array or
+ * setPositions() has been called before this method.
+ *
+ * @param pos byte code position to search for
+ * @return target position's instruction handle if available
+ */
+ public InstructionHandle findHandle( int pos ) {
+ InstructionHandle[] ihs = getInstructionHandles();
+ return findHandle(ihs, byte_positions, length, pos);
+ }
+
+
+ /**
+ * Initialize instruction list from byte array.
+ *
+ * @param code byte array containing the instructions
+ */
+ public InstructionList(byte[] code) {
+ ByteSequence bytes = new ByteSequence(code);
+ InstructionHandle[] ihs = new InstructionHandle[code.length];
+ int[] pos = new int[code.length]; // Can't be more than that
+ int count = 0; // Contains actual length
+ /* Pass 1: Create an object for each byte code and append them
+ * to the list.
+ */
+ try {
+ while (bytes.available() > 0) {
+ // Remember byte offset and associate it with the instruction
+ int off = bytes.getIndex();
+ pos[count] = off;
+ /* Read one instruction from the byte stream, the byte position is set
+ * accordingly.
+ */
+ Instruction i = Instruction.readInstruction(bytes);
+ InstructionHandle ih;
+ if (i instanceof BranchInstruction) {
+ ih = append((BranchInstruction) i);
+ } else {
+ ih = append(i);
+ }
+ ih.setPosition(off);
+ ihs[count] = ih;
+ count++;
+ }
+ } catch (IOException e) {
+ throw new ClassGenException(e.toString());
+ }
+ byte_positions = new int[count]; // Trim to proper size
+ System.arraycopy(pos, 0, byte_positions, 0, count);
+ /* Pass 2: Look for BranchInstruction and update their targets, i.e.,
+ * convert offsets to instruction handles.
+ */
+ for (int i = 0; i < count; i++) {
+ if (ihs[i] instanceof BranchHandle) {
+ BranchInstruction bi = (BranchInstruction) ihs[i].instruction;
+ int target = bi.position + bi.getIndex(); /* Byte code position:
+ * relative -> absolute. */
+ // Search for target position
+ InstructionHandle ih = findHandle(ihs, pos, count, target);
+ if (ih == null) {
+ throw new ClassGenException("Couldn't find target for branch: " + bi);
+ }
+ bi.setTarget(ih); // Update target
+ // If it is a Select instruction, update all branch targets
+ if (bi instanceof Select) { // Either LOOKUPSWITCH or TABLESWITCH
+ Select s = (Select) bi;
+ int[] indices = s.getIndices();
+ for (int j = 0; j < indices.length; j++) {
+ target = bi.position + indices[j];
+ ih = findHandle(ihs, pos, count, target);
+ if (ih == null) {
+ throw new ClassGenException("Couldn't find target for switch: " + bi);
+ }
+ s.setTarget(j, ih); // Update target
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Append another list after instruction (handle) ih contained in this list.
+ * Consumes argument list, i.e., it becomes empty.
+ *
+ * @param ih where to append the instruction list
+ * @param il Instruction list to append to this one
+ * @return instruction handle pointing to the first appended instruction
+ */
+ public InstructionHandle append( InstructionHandle ih, InstructionList il ) {
+ if (il == null) {
+ throw new ClassGenException("Appending null InstructionList");
+ }
+ if (il.isEmpty()) {
+ return ih;
+ }
+ InstructionHandle next = ih.next, ret = il.start;
+ ih.next = il.start;
+ il.start.prev = ih;
+ il.end.next = next;
+ if (next != null) {
+ next.prev = il.end;
+ } else {
+ end = il.end; // Update end ...
+ }
+ length += il.length; // Update length
+ il.clear();
+ return ret;
+ }
+
+
+ /**
+ * Append another list after instruction i contained in this list.
+ * Consumes argument list, i.e., it becomes empty.
+ *
+ * @param i where to append the instruction list
+ * @param il Instruction list to append to this one
+ * @return instruction handle pointing to the first appended instruction
+ */
+ public InstructionHandle append( Instruction i, InstructionList il ) {
+ InstructionHandle ih;
+ if ((ih = findInstruction2(i)) == null) {
+ throw new ClassGenException("Instruction " + i + " is not contained in this list.");
+ }
+ return append(ih, il);
+ }
+
+
+ /**
+ * Append another list to this one.
+ * Consumes argument list, i.e., it becomes empty.
+ *
+ * @param il list to append to end of this list
+ * @return instruction handle of the first appended instruction
+ */
+ public InstructionHandle append( InstructionList il ) {
+ if (il == null) {
+ throw new ClassGenException("Appending null InstructionList");
+ }
+ if (il.isEmpty()) {
+ return null;
+ }
+ if (isEmpty()) {
+ start = il.start;
+ end = il.end;
+ length = il.length;
+ il.clear();
+ return start;
+ } else {
+ return append(end, il); // was end.instruction
+ }
+ }
+
+
+ /**
+ * Append an instruction to the end of this list.
+ *
+ * @param ih instruction to append
+ */
+ private void append( InstructionHandle ih ) {
+ if (isEmpty()) {
+ start = end = ih;
+ ih.next = ih.prev = null;
+ } else {
+ end.next = ih;
+ ih.prev = end;
+ ih.next = null;
+ end = ih;
+ }
+ length++; // Update length
+ }
+
+
+ /**
+ * Append an instruction to the end of this list.
+ *
+ * @param i instruction to append
+ * @return instruction handle of the appended instruction
+ */
+ public InstructionHandle append( Instruction i ) {
+ InstructionHandle ih = InstructionHandle.getInstructionHandle(i);
+ append(ih);
+ return ih;
+ }
+
+
+ /**
+ * Append a branch instruction to the end of this list.
+ *
+ * @param i branch instruction to append
+ * @return branch instruction handle of the appended instruction
+ */
+ public BranchHandle append( BranchInstruction i ) {
+ BranchHandle ih = BranchHandle.getBranchHandle(i);
+ append(ih);
+ return ih;
+ }
+
+
+ /**
+ * Append a single instruction j after another instruction i, which
+ * must be in this list of course!
+ *
+ * @param i Instruction in list
+ * @param j Instruction to append after i in list
+ * @return instruction handle of the first appended instruction
+ */
+ public InstructionHandle append( Instruction i, Instruction j ) {
+ return append(i, new InstructionList(j));
+ }
+
+
+ /**
+ * Append a compound instruction, after instruction i.
+ *
+ * @param i Instruction in list
+ * @param c The composite instruction (containing an InstructionList)
+ * @return instruction handle of the first appended instruction
+ */
+ public InstructionHandle append( Instruction i, CompoundInstruction c ) {
+ return append(i, c.getInstructionList());
+ }
+
+
+ /**
+ * Append a compound instruction.
+ *
+ * @param c The composite instruction (containing an InstructionList)
+ * @return instruction handle of the first appended instruction
+ */
+ public InstructionHandle append( CompoundInstruction c ) {
+ return append(c.getInstructionList());
+ }
+
+
+ /**
+ * Append a compound instruction.
+ *
+ * @param ih where to append the instruction list
+ * @param c The composite instruction (containing an InstructionList)
+ * @return instruction handle of the first appended instruction
+ */
+ public InstructionHandle append( InstructionHandle ih, CompoundInstruction c ) {
+ return append(ih, c.getInstructionList());
+ }
+
+
+ /**
+ * Append an instruction after instruction (handle) ih contained in this list.
+ *
+ * @param ih where to append the instruction list
+ * @param i Instruction to append
+ * @return instruction handle pointing to the first appended instruction
+ */
+ public InstructionHandle append( InstructionHandle ih, Instruction i ) {
+ return append(ih, new InstructionList(i));
+ }
+
+
+ /**
+ * Append an instruction after instruction (handle) ih contained in this list.
+ *
+ * @param ih where to append the instruction list
+ * @param i Instruction to append
+ * @return instruction handle pointing to the first appended instruction
+ */
+ public BranchHandle append( InstructionHandle ih, BranchInstruction i ) {
+ BranchHandle bh = BranchHandle.getBranchHandle(i);
+ InstructionList il = new InstructionList();
+ il.append(bh);
+ append(ih, il);
+ return bh;
+ }
+
+
+ /**
+ * Insert another list before Instruction handle ih contained in this list.
+ * Consumes argument list, i.e., it becomes empty.
+ *
+ * @param ih where to append the instruction list
+ * @param il Instruction list to insert
+ * @return instruction handle of the first inserted instruction
+ */
+ public InstructionHandle insert( InstructionHandle ih, InstructionList il ) {
+ if (il == null) {
+ throw new ClassGenException("Inserting null InstructionList");
+ }
+ if (il.isEmpty()) {
+ return ih;
+ }
+ InstructionHandle prev = ih.prev, ret = il.start;
+ ih.prev = il.end;
+ il.end.next = ih;
+ il.start.prev = prev;
+ if (prev != null) {
+ prev.next = il.start;
+ } else {
+ start = il.start; // Update start ...
+ }
+ length += il.length; // Update length
+ il.clear();
+ return ret;
+ }
+
+
+ /**
+ * Insert another list.
+ *
+ * @param il list to insert before start of this list
+ * @return instruction handle of the first inserted instruction
+ */
+ public InstructionHandle insert( InstructionList il ) {
+ if (isEmpty()) {
+ append(il); // Code is identical for this case
+ return start;
+ } else {
+ return insert(start, il);
+ }
+ }
+
+
+ /**
+ * Insert an instruction at start of this list.
+ *
+ * @param ih instruction to insert
+ */
+ private void insert( InstructionHandle ih ) {
+ if (isEmpty()) {
+ start = end = ih;
+ ih.next = ih.prev = null;
+ } else {
+ start.prev = ih;
+ ih.next = start;
+ ih.prev = null;
+ start = ih;
+ }
+ length++;
+ }
+
+
+ /**
+ * Insert another list before Instruction i contained in this list.
+ * Consumes argument list, i.e., it becomes empty.
+ *
+ * @param i where to append the instruction list
+ * @param il Instruction list to insert
+ * @return instruction handle pointing to the first inserted instruction,
+ * i.e., il.getStart()
+ */
+ public InstructionHandle insert( Instruction i, InstructionList il ) {
+ InstructionHandle ih;
+ if ((ih = findInstruction1(i)) == null) {
+ throw new ClassGenException("Instruction " + i + " is not contained in this list.");
+ }
+ return insert(ih, il);
+ }
+
+
+ /**
+ * Insert an instruction at start of this list.
+ *
+ * @param i instruction to insert
+ * @return instruction handle of the inserted instruction
+ */
+ public InstructionHandle insert( Instruction i ) {
+ InstructionHandle ih = InstructionHandle.getInstructionHandle(i);
+ insert(ih);
+ return ih;
+ }
+
+
+ /**
+ * Insert a branch instruction at start of this list.
+ *
+ * @param i branch instruction to insert
+ * @return branch instruction handle of the appended instruction
+ */
+ public BranchHandle insert( BranchInstruction i ) {
+ BranchHandle ih = BranchHandle.getBranchHandle(i);
+ insert(ih);
+ return ih;
+ }
+
+
+ /**
+ * Insert a single instruction j before another instruction i, which
+ * must be in this list of course!
+ *
+ * @param i Instruction in list
+ * @param j Instruction to insert before i in list
+ * @return instruction handle of the first inserted instruction
+ */
+ public InstructionHandle insert( Instruction i, Instruction j ) {
+ return insert(i, new InstructionList(j));
+ }
+
+
+ /**
+ * Insert a compound instruction before instruction i.
+ *
+ * @param i Instruction in list
+ * @param c The composite instruction (containing an InstructionList)
+ * @return instruction handle of the first inserted instruction
+ */
+ public InstructionHandle insert( Instruction i, CompoundInstruction c ) {
+ return insert(i, c.getInstructionList());
+ }
+
+
+ /**
+ * Insert a compound instruction.
+ *
+ * @param c The composite instruction (containing an InstructionList)
+ * @return instruction handle of the first inserted instruction
+ */
+ public InstructionHandle insert( CompoundInstruction c ) {
+ return insert(c.getInstructionList());
+ }
+
+
+ /**
+ * Insert an instruction before instruction (handle) ih contained in this list.
+ *
+ * @param ih where to insert to the instruction list
+ * @param i Instruction to insert
+ * @return instruction handle of the first inserted instruction
+ */
+ public InstructionHandle insert( InstructionHandle ih, Instruction i ) {
+ return insert(ih, new InstructionList(i));
+ }
+
+
+ /**
+ * Insert a compound instruction.
+ *
+ * @param ih where to insert the instruction list
+ * @param c The composite instruction (containing an InstructionList)
+ * @return instruction handle of the first inserted instruction
+ */
+ public InstructionHandle insert( InstructionHandle ih, CompoundInstruction c ) {
+ return insert(ih, c.getInstructionList());
+ }
+
+
+ /**
+ * Insert an instruction before instruction (handle) ih contained in this list.
+ *
+ * @param ih where to insert to the instruction list
+ * @param i Instruction to insert
+ * @return instruction handle of the first inserted instruction
+ */
+ public BranchHandle insert( InstructionHandle ih, BranchInstruction i ) {
+ BranchHandle bh = BranchHandle.getBranchHandle(i);
+ InstructionList il = new InstructionList();
+ il.append(bh);
+ insert(ih, il);
+ return bh;
+ }
+
+
+ /**
+ * Take all instructions (handles) from "start" to "end" and append them after the
+ * new location "target". Of course, "end" must be after "start" and target must
+ * not be located withing this range. If you want to move something to the start of
+ * the list use null as value for target.
+ * Any instruction targeters pointing to handles within the block, keep their targets.
+ *
+ * @param start of moved block
+ * @param end of moved block
+ * @param target of moved block
+ */
+ public void move( InstructionHandle start, InstructionHandle end, InstructionHandle target ) {
+ // Step 1: Check constraints
+ if ((start == null) || (end == null)) {
+ throw new ClassGenException("Invalid null handle: From " + start + " to " + end);
+ }
+ if ((target == start) || (target == end)) {
+ throw new ClassGenException("Invalid range: From " + start + " to " + end
+ + " contains target " + target);
+ }
+ for (InstructionHandle ih = start; ih != end.next; ih = ih.next) {
+ if (ih == null) {
+ throw new ClassGenException("Invalid range: From " + start + " to " + end);
+ } else if (ih == target) {
+ throw new ClassGenException("Invalid range: From " + start + " to " + end
+ + " contains target " + target);
+ }
+ }
+ // Step 2: Temporarily remove the given instructions from the list
+ InstructionHandle prev = start.prev, next = end.next;
+ if (prev != null) {
+ prev.next = next;
+ } else {
+ this.start = next;
+ }
+ if (next != null) {
+ next.prev = prev;
+ } else {
+ this.end = prev;
+ }
+ start.prev = end.next = null;
+ // Step 3: append after target
+ if (target == null) { // append to start of list
+ if (this.start != null) {
+ this.start.prev = end;
+ }
+ end.next = this.start;
+ this.start = start;
+ } else {
+ next = target.next;
+ target.next = start;
+ start.prev = target;
+ end.next = next;
+ if (next != null) {
+ next.prev = end;
+ } else {
+ this.end = end;
+ }
+ }
+ }
+
+
+ /**
+ * Move a single instruction (handle) to a new location.
+ *
+ * @param ih moved instruction
+ * @param target new location of moved instruction
+ */
+ public void move( InstructionHandle ih, InstructionHandle target ) {
+ move(ih, ih, target);
+ }
+
+
+ /**
+ * Remove from instruction `prev' to instruction `next' both contained
+ * in this list. Throws TargetLostException when one of the removed instruction handles
+ * is still being targeted.
+ *
+ * @param prev where to start deleting (predecessor, exclusive)
+ * @param next where to end deleting (successor, exclusive)
+ */
+ private void remove( InstructionHandle prev, InstructionHandle next )
+ throws TargetLostException {
+ InstructionHandle first, last; // First and last deleted instruction
+ if ((prev == null) && (next == null)) { // singleton list
+ first = last = start;
+ start = end = null;
+ } else {
+ if (prev == null) { // At start of list
+ first = start;
+ start = next;
+ } else {
+ first = prev.next;
+ prev.next = next;
+ }
+ if (next == null) { // At end of list
+ last = end;
+ end = prev;
+ } else {
+ last = next.prev;
+ next.prev = prev;
+ }
+ }
+ first.prev = null; // Completely separated from rest of list
+ last.next = null;
+ List target_vec = new ArrayList();
+ for (InstructionHandle ih = first; ih != null; ih = ih.next) {
+ ih.getInstruction().dispose(); // e.g. BranchInstructions release their targets
+ }
+ StringBuilder buf = new StringBuilder("{ ");
+ for (InstructionHandle ih = first; ih != null; ih = next) {
+ next = ih.next;
+ length--;
+ if (ih.hasTargeters()) { // Still got targeters?
+ target_vec.add(ih);
+ buf.append(ih.toString(true) + " ");
+ ih.next = ih.prev = null;
+ } else {
+ ih.dispose();
+ }
+ }
+ buf.append("}");
+ if (!target_vec.isEmpty()) {
+ InstructionHandle[] targeted = new InstructionHandle[target_vec.size()];
+ target_vec.toArray(targeted);
+ throw new TargetLostException(targeted, buf.toString());
+ }
+ }
+
+
+ /**
+ * Remove instruction from this list. The corresponding Instruction
+ * handles must not be reused!
+ *
+ * @param ih instruction (handle) to remove
+ */
+ public void delete( InstructionHandle ih ) throws TargetLostException {
+ remove(ih.prev, ih.next);
+ }
+
+
+ /**
+ * Remove instruction from this list. The corresponding Instruction
+ * handles must not be reused!
+ *
+ * @param i instruction to remove
+ */
+ public void delete( Instruction i ) throws TargetLostException {
+ InstructionHandle ih;
+ if ((ih = findInstruction1(i)) == null) {
+ throw new ClassGenException("Instruction " + i + " is not contained in this list.");
+ }
+ delete(ih);
+ }
+
+
+ /**
+ * Remove instructions from instruction `from' to instruction `to' contained
+ * in this list. The user must ensure that `from' is an instruction before
+ * `to', or risk havoc. The corresponding Instruction handles must not be reused!
+ *
+ * @param from where to start deleting (inclusive)
+ * @param to where to end deleting (inclusive)
+ */
+ public void delete( InstructionHandle from, InstructionHandle to ) throws TargetLostException {
+ remove(from.prev, to.next);
+ }
+
+
+ /**
+ * Remove instructions from instruction `from' to instruction `to' contained
+ * in this list. The user must ensure that `from' is an instruction before
+ * `to', or risk havoc. The corresponding Instruction handles must not be reused!
+ *
+ * @param from where to start deleting (inclusive)
+ * @param to where to end deleting (inclusive)
+ */
+ public void delete( Instruction from, Instruction to ) throws TargetLostException {
+ InstructionHandle from_ih, to_ih;
+ if ((from_ih = findInstruction1(from)) == null) {
+ throw new ClassGenException("Instruction " + from + " is not contained in this list.");
+ }
+ if ((to_ih = findInstruction2(to)) == null) {
+ throw new ClassGenException("Instruction " + to + " is not contained in this list.");
+ }
+ delete(from_ih, to_ih);
+ }
+
+
+ /**
+ * Search for given Instruction reference, start at beginning of list.
+ *
+ * @param i instruction to search for
+ * @return instruction found on success, null otherwise
+ */
+ private InstructionHandle findInstruction1( Instruction i ) {
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ if (ih.instruction == i) {
+ return ih;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Search for given Instruction reference, start at end of list
+ *
+ * @param i instruction to search for
+ * @return instruction found on success, null otherwise
+ */
+ private InstructionHandle findInstruction2( Instruction i ) {
+ for (InstructionHandle ih = end; ih != null; ih = ih.prev) {
+ if (ih.instruction == i) {
+ return ih;
+ }
+ }
+ return null;
+ }
+
+
+ public boolean contains( InstructionHandle i ) {
+ if (i == null) {
+ return false;
+ }
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ if (ih == i) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ public boolean contains( Instruction i ) {
+ return findInstruction1(i) != null;
+ }
+
+
+ public void setPositions() {
+ setPositions(false);
+ }
+
+
+ /**
+ * Give all instructions their position number (offset in byte stream), i.e.,
+ * make the list ready to be dumped.
+ *
+ * @param check Perform sanity checks, e.g. if all targeted instructions really belong
+ * to this list
+ */
+ public void setPositions( boolean check ) {
+ int max_additional_bytes = 0, additional_bytes = 0;
+ int index = 0, count = 0;
+ int[] pos = new int[length];
+ /* Pass 0: Sanity checks
+ */
+ if (check) {
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ Instruction i = ih.instruction;
+ if (i instanceof BranchInstruction) { // target instruction within list?
+ Instruction inst = ((BranchInstruction) i).getTarget().instruction;
+ if (!contains(inst)) {
+ throw new ClassGenException("Branch target of "
+ + Constants.OPCODE_NAMES[i.opcode] + ":" + inst
+ + " not in instruction list");
+ }
+ if (i instanceof Select) {
+ InstructionHandle[] targets = ((Select) i).getTargets();
+ for (int j = 0; j < targets.length; j++) {
+ inst = targets[j].instruction;
+ if (!contains(inst)) {
+ throw new ClassGenException("Branch target of "
+ + Constants.OPCODE_NAMES[i.opcode] + ":" + inst
+ + " not in instruction list");
+ }
+ }
+ }
+ if (!(ih instanceof BranchHandle)) {
+ throw new ClassGenException("Branch instruction "
+ + Constants.OPCODE_NAMES[i.opcode] + ":" + inst
+ + " not contained in BranchHandle.");
+ }
+ }
+ }
+ }
+ /* Pass 1: Set position numbers and sum up the maximum number of bytes an
+ * instruction may be shifted.
+ */
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ Instruction i = ih.instruction;
+ ih.setPosition(index);
+ pos[count++] = index;
+ /* Get an estimate about how many additional bytes may be added, because
+ * BranchInstructions may have variable length depending on the target
+ * offset (short vs. int) or alignment issues (TABLESWITCH and
+ * LOOKUPSWITCH).
+ */
+ switch (i.getOpcode()) {
+ case Constants.JSR:
+ case Constants.GOTO:
+ max_additional_bytes += 2;
+ break;
+ case Constants.TABLESWITCH:
+ case Constants.LOOKUPSWITCH:
+ max_additional_bytes += 3;
+ break;
+ }
+ index += i.getLength();
+ }
+ /* Pass 2: Expand the variable-length (Branch)Instructions depending on
+ * the target offset (short or int) and ensure that branch targets are
+ * within this list.
+ */
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ additional_bytes += ih.updatePosition(additional_bytes, max_additional_bytes);
+ }
+ /* Pass 3: Update position numbers (which may have changed due to the
+ * preceding expansions), like pass 1.
+ */
+ index = count = 0;
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ Instruction i = ih.instruction;
+ ih.setPosition(index);
+ pos[count++] = index;
+ index += i.getLength();
+ }
+ byte_positions = new int[count]; // Trim to proper size
+ System.arraycopy(pos, 0, byte_positions, 0, count);
+ }
+
+
+ /**
+ * When everything is finished, use this method to convert the instruction
+ * list into an array of bytes.
+ *
+ * @return the byte code ready to be dumped
+ */
+ public byte[] getByteCode() {
+ // Update position indices of instructions
+ setPositions();
+ ByteArrayOutputStream b = new ByteArrayOutputStream();
+ DataOutputStream out = new DataOutputStream(b);
+ try {
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ Instruction i = ih.instruction;
+ i.dump(out); // Traverse list
+ }
+ } catch (IOException e) {
+ System.err.println(e);
+ return null;
+ }
+ return b.toByteArray();
+ }
+
+
+ /**
+ * @return an array of instructions without target information for branch instructions.
+ */
+ public Instruction[] getInstructions() {
+ ByteSequence bytes = new ByteSequence(getByteCode());
+ List instructions = new ArrayList();
+ try {
+ while (bytes.available() > 0) {
+ instructions.add(Instruction.readInstruction(bytes));
+ }
+ } catch (IOException e) {
+ throw new ClassGenException(e.toString());
+ }
+ return (Instruction[]) instructions.toArray(new Instruction[instructions.size()]);
+ }
+
+
+ public String toString() {
+ return toString(true);
+ }
+
+
+ /**
+ * @param verbose toggle output format
+ * @return String containing all instructions in this list.
+ */
+ public String toString( boolean verbose ) {
+ StringBuilder buf = new StringBuilder();
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ buf.append(ih.toString(verbose)).append("\n");
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return Enumeration that lists all instructions (handles)
+ */
+ public Iterator iterator() {
+ return new Iterator() {
+
+ private InstructionHandle ih = start;
+
+
+ public Object next() {
+ InstructionHandle i = ih;
+ ih = ih.next;
+ return i;
+ }
+
+
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+
+ public boolean hasNext() {
+ return ih != null;
+ }
+ };
+ }
+
+
+ /**
+ * @return array containing all instructions (handles)
+ */
+ public InstructionHandle[] getInstructionHandles() {
+ InstructionHandle[] ihs = new InstructionHandle[length];
+ InstructionHandle ih = start;
+ for (int i = 0; i < length; i++) {
+ ihs[i] = ih;
+ ih = ih.next;
+ }
+ return ihs;
+ }
+
+
+ /**
+ * Get positions (offsets) of all instructions in the list. This relies on that
+ * the list has been freshly created from an byte code array, or that setPositions()
+ * has been called. Otherwise this may be inaccurate.
+ *
+ * @return array containing all instruction's offset in byte code
+ */
+ public int[] getInstructionPositions() {
+ return byte_positions;
+ }
+
+
+ /**
+ * @return complete, i.e., deep copy of this list
+ */
+ public InstructionList copy() {
+ Map map = new HashMap();
+ InstructionList il = new InstructionList();
+ /* Pass 1: Make copies of all instructions, append them to the new list
+ * and associate old instruction references with the new ones, i.e.,
+ * a 1:1 mapping.
+ */
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ Instruction i = ih.instruction;
+ Instruction c = i.copy(); // Use clone for shallow copy
+ if (c instanceof BranchInstruction) {
+ map.put(ih, il.append((BranchInstruction) c));
+ } else {
+ map.put(ih, il.append(c));
+ }
+ }
+ /* Pass 2: Update branch targets.
+ */
+ InstructionHandle ih = start;
+ InstructionHandle ch = il.start;
+ while (ih != null) {
+ Instruction i = ih.instruction;
+ Instruction c = ch.instruction;
+ if (i instanceof BranchInstruction) {
+ BranchInstruction bi = (BranchInstruction) i;
+ BranchInstruction bc = (BranchInstruction) c;
+ InstructionHandle itarget = bi.getTarget(); // old target
+ // New target is in hash map
+ bc.setTarget((InstructionHandle) map.get(itarget));
+ if (bi instanceof Select) { // Either LOOKUPSWITCH or TABLESWITCH
+ InstructionHandle[] itargets = ((Select) bi).getTargets();
+ InstructionHandle[] ctargets = ((Select) bc).getTargets();
+ for (int j = 0; j < itargets.length; j++) { // Update all targets
+ ctargets[j] = (InstructionHandle) map.get(itargets[j]);
+ }
+ }
+ }
+ ih = ih.next;
+ ch = ch.next;
+ }
+ return il;
+ }
+
+
+ /** Replace all references to the old constant pool with references to the new
+ * constant pool
+ */
+ public void replaceConstantPool( ConstantPoolGen old_cp, ConstantPoolGen new_cp ) {
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ Instruction i = ih.instruction;
+ if (i instanceof CPInstruction) {
+ CPInstruction ci = (CPInstruction) i;
+ Constant c = old_cp.getConstant(ci.getIndex());
+ ci.setIndex(new_cp.addConstant(c, old_cp));
+ }
+ }
+ }
+
+
+ private void clear() {
+ start = end = null;
+ length = 0;
+ }
+
+
+ /**
+ * Delete contents of list. Provides besser memory utilization,
+ * because the system then may reuse the instruction handles. This
+ * method is typically called right after
+ * MethodGen.getMethod().
+ */
+ public void dispose() {
+ // Traverse in reverse order, because ih.next is overwritten
+ for (InstructionHandle ih = end; ih != null; ih = ih.prev) {
+ /* Causes BranchInstructions to release target and targeters, because it
+ * calls dispose() on the contained instruction.
+ */
+ ih.dispose();
+ }
+ clear();
+ }
+
+
+ /**
+ * @return start of list
+ */
+ public InstructionHandle getStart() {
+ return start;
+ }
+
+
+ /**
+ * @return end of list
+ */
+ public InstructionHandle getEnd() {
+ return end;
+ }
+
+
+ /**
+ * @return length of list (Number of instructions, not bytes)
+ */
+ public int getLength() {
+ return length;
+ }
+
+
+ /**
+ * @return length of list (Number of instructions, not bytes)
+ */
+ public int size() {
+ return length;
+ }
+
+
+ /**
+ * Redirect all references from old_target to new_target, i.e., update targets
+ * of branch instructions.
+ *
+ * @param old_target the old target instruction handle
+ * @param new_target the new target instruction handle
+ */
+ public void redirectBranches( InstructionHandle old_target, InstructionHandle new_target ) {
+ for (InstructionHandle ih = start; ih != null; ih = ih.next) {
+ Instruction i = ih.getInstruction();
+ if (i instanceof BranchInstruction) {
+ BranchInstruction b = (BranchInstruction) i;
+ InstructionHandle target = b.getTarget();
+ if (target == old_target) {
+ b.setTarget(new_target);
+ }
+ if (b instanceof Select) { // Either LOOKUPSWITCH or TABLESWITCH
+ InstructionHandle[] targets = ((Select) b).getTargets();
+ for (int j = 0; j < targets.length; j++) {
+ if (targets[j] == old_target) {
+ ((Select) b).setTarget(j, new_target);
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Redirect all references of local variables from old_target to new_target.
+ *
+ * @param lg array of local variables
+ * @param old_target the old target instruction handle
+ * @param new_target the new target instruction handle
+ * @see MethodGen
+ */
+ public void redirectLocalVariables( LocalVariableGen[] lg, InstructionHandle old_target,
+ InstructionHandle new_target ) {
+ for (int i = 0; i < lg.length; i++) {
+ InstructionHandle start = lg[i].getStart();
+ InstructionHandle end = lg[i].getEnd();
+ if (start == old_target) {
+ lg[i].setStart(new_target);
+ }
+ if (end == old_target) {
+ lg[i].setEnd(new_target);
+ }
+ }
+ }
+
+
+ /**
+ * Redirect all references of exception handlers from old_target to new_target.
+ *
+ * @param exceptions array of exception handlers
+ * @param old_target the old target instruction handle
+ * @param new_target the new target instruction handle
+ * @see MethodGen
+ */
+ public void redirectExceptionHandlers( CodeExceptionGen[] exceptions,
+ InstructionHandle old_target, InstructionHandle new_target ) {
+ for (int i = 0; i < exceptions.length; i++) {
+ if (exceptions[i].getStartPC() == old_target) {
+ exceptions[i].setStartPC(new_target);
+ }
+ if (exceptions[i].getEndPC() == old_target) {
+ exceptions[i].setEndPC(new_target);
+ }
+ if (exceptions[i].getHandlerPC() == old_target) {
+ exceptions[i].setHandlerPC(new_target);
+ }
+ }
+ }
+
+ private List observers;
+
+
+ /** Add observer for this object.
+ */
+ public void addObserver( InstructionListObserver o ) {
+ if (observers == null) {
+ observers = new ArrayList();
+ }
+ observers.add(o);
+ }
+
+
+ /** Remove observer for this object.
+ */
+ public void removeObserver( InstructionListObserver o ) {
+ if (observers != null) {
+ observers.remove(o);
+ }
+ }
+
+
+ /** Call notify() method on all observers. This method is not called
+ * automatically whenever the state has changed, but has to be
+ * called by the user after he has finished editing the object.
+ */
+ public void update() {
+ if (observers != null) {
+ for (Iterator e = observers.iterator(); e.hasNext();) {
+ ((InstructionListObserver) e.next()).notify(this);
+ }
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionListObserver.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionListObserver.java
index bdbb7e03..5fff36fc 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionListObserver.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionListObserver.java
@@ -1,29 +1,29 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Implement this interface if you're interested in changes to an InstructionList object
- * and register yourself with addObserver().
- *
- * @version $Id: InstructionListObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface InstructionListObserver {
-
- public void notify( InstructionList list );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Implement this interface if you're interested in changes to an InstructionList object
+ * and register yourself with addObserver().
+ *
+ * @version $Id: InstructionListObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface InstructionListObserver {
+
+ public void notify( InstructionList list );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionTargeter.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionTargeter.java
index 0a817cfc..aac85fc1 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionTargeter.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InstructionTargeter.java
@@ -1,35 +1,35 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denote that a class targets InstructionHandles within an InstructionList. Namely
- * the following implementers:
- *
- * @see BranchHandle
- * @see LocalVariableGen
- * @see CodeExceptionGen
- * @version $Id: InstructionTargeter.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface InstructionTargeter {
-
- public boolean containsTarget( InstructionHandle ih );
-
-
- public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denote that a class targets InstructionHandles within an InstructionList. Namely
+ * the following implementers:
+ *
+ * @see BranchHandle
+ * @see LocalVariableGen
+ * @see CodeExceptionGen
+ * @version $Id: InstructionTargeter.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface InstructionTargeter {
+
+ public boolean containsTarget( InstructionHandle ih );
+
+
+ public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InvokeInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InvokeInstruction.java
index 32d7d17e..a59d3d39 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InvokeInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/InvokeInstruction.java
@@ -1,119 +1,119 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.StringTokenizer;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.Constant;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-
-/**
- * Super class for the INVOKExxx family of instructions.
- *
- * @version $Id: InvokeInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class InvokeInstruction extends FieldOrMethod implements ExceptionThrower,
- TypedInstruction, StackConsumer, StackProducer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- InvokeInstruction() {
- }
-
-
- /**
- * @param index to constant pool
- */
- protected InvokeInstruction(short opcode, int index) {
- super(opcode, index);
- }
-
-
- /**
- * @return mnemonic for instruction with symbolic references resolved
- */
- public String toString( ConstantPool cp ) {
- Constant c = cp.getConstant(index);
- StringTokenizer tok = new StringTokenizer(cp.constantToString(c));
- return Constants.OPCODE_NAMES[opcode] + " " + tok.nextToken().replace('.', '/')
- + tok.nextToken();
- }
-
-
- /**
- * Also works for instructions whose stack effect depends on the
- * constant pool entry they reference.
- * @return Number of words consumed from stack by this instruction
- */
- public int consumeStack( ConstantPoolGen cpg ) {
- String signature = getSignature(cpg);
- Type[] args = Type.getArgumentTypes(signature);
- int sum;
- if (opcode == Constants.INVOKESTATIC) {
- sum = 0;
- } else {
- sum = 1; // this reference
- }
- int n = args.length;
- for (int i = 0; i < n; i++) {
- sum += args[i].getSize();
- }
- return sum;
- }
-
-
- /**
- * Also works for instructions whose stack effect depends on the
- * constant pool entry they reference.
- * @return Number of words produced onto stack by this instruction
- */
- public int produceStack( ConstantPoolGen cpg ) {
- return getReturnType(cpg).getSize();
- }
-
-
- /** @return return type of referenced method.
- */
- public Type getType( ConstantPoolGen cpg ) {
- return getReturnType(cpg);
- }
-
-
- /** @return name of referenced method.
- */
- public String getMethodName( ConstantPoolGen cpg ) {
- return getName(cpg);
- }
-
-
- /** @return return type of referenced method.
- */
- public Type getReturnType( ConstantPoolGen cpg ) {
- return Type.getReturnType(getSignature(cpg));
- }
-
-
- /** @return argument types of referenced method.
- */
- public Type[] getArgumentTypes( ConstantPoolGen cpg ) {
- return Type.getArgumentTypes(getSignature(cpg));
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.StringTokenizer;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.Constant;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+
+/**
+ * Super class for the INVOKExxx family of instructions.
+ *
+ * @version $Id: InvokeInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class InvokeInstruction extends FieldOrMethod implements ExceptionThrower,
+ TypedInstruction, StackConsumer, StackProducer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ InvokeInstruction() {
+ }
+
+
+ /**
+ * @param index to constant pool
+ */
+ protected InvokeInstruction(short opcode, int index) {
+ super(opcode, index);
+ }
+
+
+ /**
+ * @return mnemonic for instruction with symbolic references resolved
+ */
+ public String toString( ConstantPool cp ) {
+ Constant c = cp.getConstant(index);
+ StringTokenizer tok = new StringTokenizer(cp.constantToString(c));
+ return Constants.OPCODE_NAMES[opcode] + " " + tok.nextToken().replace('.', '/')
+ + tok.nextToken();
+ }
+
+
+ /**
+ * Also works for instructions whose stack effect depends on the
+ * constant pool entry they reference.
+ * @return Number of words consumed from stack by this instruction
+ */
+ public int consumeStack( ConstantPoolGen cpg ) {
+ String signature = getSignature(cpg);
+ Type[] args = Type.getArgumentTypes(signature);
+ int sum;
+ if (opcode == Constants.INVOKESTATIC) {
+ sum = 0;
+ } else {
+ sum = 1; // this reference
+ }
+ int n = args.length;
+ for (int i = 0; i < n; i++) {
+ sum += args[i].getSize();
+ }
+ return sum;
+ }
+
+
+ /**
+ * Also works for instructions whose stack effect depends on the
+ * constant pool entry they reference.
+ * @return Number of words produced onto stack by this instruction
+ */
+ public int produceStack( ConstantPoolGen cpg ) {
+ return getReturnType(cpg).getSize();
+ }
+
+
+ /** @return return type of referenced method.
+ */
+ public Type getType( ConstantPoolGen cpg ) {
+ return getReturnType(cpg);
+ }
+
+
+ /** @return name of referenced method.
+ */
+ public String getMethodName( ConstantPoolGen cpg ) {
+ return getName(cpg);
+ }
+
+
+ /** @return return type of referenced method.
+ */
+ public Type getReturnType( ConstantPoolGen cpg ) {
+ return Type.getReturnType(getSignature(cpg));
+ }
+
+
+ /** @return argument types of referenced method.
+ */
+ public Type[] getArgumentTypes( ConstantPoolGen cpg ) {
+ return Type.getArgumentTypes(getSignature(cpg));
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR.java
index 4e483bf0..b0e98403 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR.java
@@ -1,86 +1,86 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-/**
- * JSR - Jump to subroutine
- *
- * @version $Id: JSR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class JSR extends JsrInstruction implements VariableLengthInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- JSR() {
- }
-
-
- public JSR(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.JSR, target);
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- index = getTargetOffset();
- if (opcode == org.apache.bcel5_2_0.Constants.JSR) {
- super.dump(out);
- } else { // JSR_W
- index = getTargetOffset();
- out.writeByte(opcode);
- out.writeInt(index);
- }
- }
-
-
- protected int updatePosition( int offset, int max_offset ) {
- int i = getTargetOffset(); // Depending on old position value
- position += offset; // Position may be shifted by preceding expansions
- if (Math.abs(i) >= (32767 - max_offset)) { // to large for short (estimate)
- opcode = org.apache.bcel5_2_0.Constants.JSR_W;
- length = 5;
- return 2; // 5 - 3
- }
- return 0;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitVariableLengthInstruction(this);
- v.visitBranchInstruction(this);
- v.visitJsrInstruction(this);
- v.visitJSR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+/**
+ * JSR - Jump to subroutine
+ *
+ * @version $Id: JSR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class JSR extends JsrInstruction implements VariableLengthInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ JSR() {
+ }
+
+
+ public JSR(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.JSR, target);
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ index = getTargetOffset();
+ if (opcode == org.apache.bcel5_2_0.Constants.JSR) {
+ super.dump(out);
+ } else { // JSR_W
+ index = getTargetOffset();
+ out.writeByte(opcode);
+ out.writeInt(index);
+ }
+ }
+
+
+ protected int updatePosition( int offset, int max_offset ) {
+ int i = getTargetOffset(); // Depending on old position value
+ position += offset; // Position may be shifted by preceding expansions
+ if (Math.abs(i) >= (32767 - max_offset)) { // to large for short (estimate)
+ opcode = org.apache.bcel5_2_0.Constants.JSR_W;
+ length = 5;
+ return 2; // 5 - 3
+ }
+ return 0;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitVariableLengthInstruction(this);
+ v.visitBranchInstruction(this);
+ v.visitJsrInstruction(this);
+ v.visitJSR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR_W.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR_W.java
index 7913375d..5f2aecad 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR_W.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JSR_W.java
@@ -1,80 +1,80 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * JSR_W - Jump to subroutine
- *
- * @version $Id: JSR_W.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class JSR_W extends JsrInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- JSR_W() {
- }
-
-
- public JSR_W(InstructionHandle target) {
- super(org.apache.bcel5_2_0.Constants.JSR_W, target);
- length = 5;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- index = getTargetOffset();
- out.writeByte(opcode);
- out.writeInt(index);
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- index = bytes.readInt();
- length = 5;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitBranchInstruction(this);
- v.visitJsrInstruction(this);
- v.visitJSR_W(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * JSR_W - Jump to subroutine
+ *
+ * @version $Id: JSR_W.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class JSR_W extends JsrInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ JSR_W() {
+ }
+
+
+ public JSR_W(InstructionHandle target) {
+ super(org.apache.bcel5_2_0.Constants.JSR_W, target);
+ length = 5;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ index = getTargetOffset();
+ out.writeByte(opcode);
+ out.writeInt(index);
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ index = bytes.readInt();
+ length = 5;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitBranchInstruction(this);
+ v.visitJsrInstruction(this);
+ v.visitJSR_W(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JsrInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JsrInstruction.java
index 56aea6be..f8611563 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JsrInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/JsrInstruction.java
@@ -1,79 +1,79 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Super class for JSR - Jump to subroutine
- *
- * @version $Id: JsrInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class JsrInstruction extends BranchInstruction implements UnconditionalBranch,
- TypedInstruction, StackProducer {
-
- JsrInstruction(short opcode, InstructionHandle target) {
- super(opcode, target);
- }
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- JsrInstruction() {
- }
-
-
- /** @return return address type
- */
- public Type getType( ConstantPoolGen cp ) {
- return new ReturnaddressType(physicalSuccessor());
- }
-
-
- /**
- * Returns an InstructionHandle to the physical successor
- * of this JsrInstruction. For this method to work,
- * this JsrInstruction object must not be shared between
- * multiple InstructionHandle objects!
- * Formally, there must not be InstructionHandle objects
- * i, j where i != j and i.getInstruction() == this ==
- * j.getInstruction().
- * @return an InstructionHandle to the "next" instruction that
- * will be executed when RETurned from a subroutine.
- */
- public InstructionHandle physicalSuccessor() {
- InstructionHandle ih = this.target;
- // Rewind!
- while (ih.getPrev() != null) {
- ih = ih.getPrev();
- }
- // Find the handle for "this" JsrInstruction object.
- while (ih.getInstruction() != this) {
- ih = ih.getNext();
- }
- InstructionHandle toThis = ih;
- while (ih != null) {
- ih = ih.getNext();
- if ((ih != null) && (ih.getInstruction() == this)) {
- throw new RuntimeException("physicalSuccessor() called on a shared JsrInstruction.");
- }
- }
- // Return the physical successor
- return toThis.getNext();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Super class for JSR - Jump to subroutine
+ *
+ * @version $Id: JsrInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class JsrInstruction extends BranchInstruction implements UnconditionalBranch,
+ TypedInstruction, StackProducer {
+
+ JsrInstruction(short opcode, InstructionHandle target) {
+ super(opcode, target);
+ }
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ JsrInstruction() {
+ }
+
+
+ /** @return return address type
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return new ReturnaddressType(physicalSuccessor());
+ }
+
+
+ /**
+ * Returns an InstructionHandle to the physical successor
+ * of this JsrInstruction. For this method to work,
+ * this JsrInstruction object must not be shared between
+ * multiple InstructionHandle objects!
+ * Formally, there must not be InstructionHandle objects
+ * i, j where i != j and i.getInstruction() == this ==
+ * j.getInstruction().
+ * @return an InstructionHandle to the "next" instruction that
+ * will be executed when RETurned from a subroutine.
+ */
+ public InstructionHandle physicalSuccessor() {
+ InstructionHandle ih = this.target;
+ // Rewind!
+ while (ih.getPrev() != null) {
+ ih = ih.getPrev();
+ }
+ // Find the handle for "this" JsrInstruction object.
+ while (ih.getInstruction() != this) {
+ ih = ih.getNext();
+ }
+ InstructionHandle toThis = ih;
+ while (ih != null) {
+ ih = ih.getNext();
+ if ((ih != null) && (ih.getInstruction() == this)) {
+ throw new RuntimeException("physicalSuccessor() called on a shared JsrInstruction.");
+ }
+ }
+ // Return the physical successor
+ return toThis.getNext();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2D.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2D.java
index 9d1898ea..de6212c0 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2D.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2D.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * L2D - Convert long to double
- * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
- * @version $Id: L2D.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class L2D extends ConversionInstruction {
-
- public L2D() {
- super(org.apache.bcel5_2_0.Constants.L2D);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitL2D(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * L2D - Convert long to double
+ * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
+ *
+ * @version $Id: L2D.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class L2D extends ConversionInstruction {
+
+ public L2D() {
+ super(org.apache.bcel5_2_0.Constants.L2D);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitL2D(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2F.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2F.java
index 1a9c693e..28396921 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2F.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2F.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * L2F - Convert long to float
- * Stack: ..., value.word1, value.word2 -> ..., result
- *
- * @version $Id: L2F.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class L2F extends ConversionInstruction {
-
- public L2F() {
- super(org.apache.bcel5_2_0.Constants.L2F);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitL2F(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * L2F - Convert long to float
+ * Stack: ..., value.word1, value.word2 -> ..., result
+ *
+ * @version $Id: L2F.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class L2F extends ConversionInstruction {
+
+ public L2F() {
+ super(org.apache.bcel5_2_0.Constants.L2F);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitL2F(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2I.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2I.java
index 5348c3c7..7a91fbf3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2I.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/L2I.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * L2I - Convert long to int
- * Stack: ..., value.word1, value.word2 -> ..., result
- *
- * @version $Id: L2I.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class L2I extends ConversionInstruction {
-
- public L2I() {
- super(org.apache.bcel5_2_0.Constants.L2I);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitConversionInstruction(this);
- v.visitL2I(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * L2I - Convert long to int
+ * Stack: ..., value.word1, value.word2 -> ..., result
+ *
+ * @version $Id: L2I.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class L2I extends ConversionInstruction {
+
+ public L2I() {
+ super(org.apache.bcel5_2_0.Constants.L2I);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitConversionInstruction(this);
+ v.visitL2I(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LADD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LADD.java
index 8dd94e22..1587f14e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LADD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LADD.java
@@ -1,49 +1,49 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LADD - Add longs
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: LADD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LADD extends ArithmeticInstruction {
-
- public LADD() {
- super(org.apache.bcel5_2_0.Constants.LADD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLADD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LADD - Add longs
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: LADD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LADD extends ArithmeticInstruction {
+
+ public LADD() {
+ super(org.apache.bcel5_2_0.Constants.LADD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLADD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LALOAD.java
index a8b0b5ce..7a868cd1 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LALOAD.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LALOAD - Load long from array
- * Stack: ..., arrayref, index -> ..., value1, value2
- *
- * @version $Id: LALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LALOAD extends ArrayInstruction implements StackProducer {
-
- /** Load long from array
- */
- public LALOAD() {
- super(org.apache.bcel5_2_0.Constants.LALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitLALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LALOAD - Load long from array
+ * Stack: ..., arrayref, index -> ..., value1, value2
+ *
+ * @version $Id: LALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LALOAD extends ArrayInstruction implements StackProducer {
+
+ /** Load long from array
+ */
+ public LALOAD() {
+ super(org.apache.bcel5_2_0.Constants.LALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitLALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LAND.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LAND.java
index 4ad83ee7..c43590f3 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LAND.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LAND.java
@@ -1,49 +1,49 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LAND - Bitwise AND longs
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: LAND.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LAND extends ArithmeticInstruction {
-
- public LAND() {
- super(org.apache.bcel5_2_0.Constants.LAND);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLAND(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LAND - Bitwise AND longs
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: LAND.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LAND extends ArithmeticInstruction {
+
+ public LAND() {
+ super(org.apache.bcel5_2_0.Constants.LAND);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLAND(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LASTORE.java
index b1846f0b..06472f38 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LASTORE.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LASTORE - Store into long array
- * Stack: ..., arrayref, index, value.word1, value.word2 -> ...
- *
- * @version $Id: LASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LASTORE extends ArrayInstruction implements StackConsumer {
-
- /** Store long into array
- */
- public LASTORE() {
- super(org.apache.bcel5_2_0.Constants.LASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitLASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LASTORE - Store into long array
+ * Stack: ..., arrayref, index, value.word1, value.word2 -> ...
+ *
+ * @version $Id: LASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LASTORE extends ArrayInstruction implements StackConsumer {
+
+ /** Store long into array
+ */
+ public LASTORE() {
+ super(org.apache.bcel5_2_0.Constants.LASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitLASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCMP.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCMP.java
index b63770b6..e97a4005 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCMP.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCMP.java
@@ -1,55 +1,55 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LCMP - Compare longs:
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result <= -1, 0, 1>
- *
- * @version $Id: LCMP.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LCMP extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
-
- public LCMP() {
- super(org.apache.bcel5_2_0.Constants.LCMP, (short) 1);
- }
-
-
- /** @return Type.LONG
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.LONG;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitLCMP(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LCMP - Compare longs:
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result <= -1, 0, 1>
+ *
+ * @version $Id: LCMP.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LCMP extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
+
+ public LCMP() {
+ super(org.apache.bcel5_2_0.Constants.LCMP, (short) 1);
+ }
+
+
+ /** @return Type.LONG
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.LONG;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitLCMP(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCONST.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCONST.java
index e108c939..86fcdd23 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCONST.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LCONST.java
@@ -1,80 +1,80 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LCONST - Push 0 or 1, other values cause an exception
- *
- * Stack: ... -> ...,
- *
- * @version $Id: LCONST.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LCONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
-
- private long value;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- LCONST() {
- }
-
-
- public LCONST(long l) {
- super(org.apache.bcel5_2_0.Constants.LCONST_0, (short) 1);
- if (l == 0) {
- opcode = org.apache.bcel5_2_0.Constants.LCONST_0;
- } else if (l == 1) {
- opcode = org.apache.bcel5_2_0.Constants.LCONST_1;
- } else {
- throw new ClassGenException("LCONST can be used only for 0 and 1: " + l);
- }
- value = l;
- }
-
-
- public Number getValue() {
- return new Long(value);
- }
-
-
- /** @return Type.LONG
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.LONG;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitPushInstruction(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitConstantPushInstruction(this);
- v.visitLCONST(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LCONST - Push 0 or 1, other values cause an exception
+ *
+ * Stack: ... -> ...,
+ *
+ * @version $Id: LCONST.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LCONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
+
+ private long value;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ LCONST() {
+ }
+
+
+ public LCONST(long l) {
+ super(org.apache.bcel5_2_0.Constants.LCONST_0, (short) 1);
+ if (l == 0) {
+ opcode = org.apache.bcel5_2_0.Constants.LCONST_0;
+ } else if (l == 1) {
+ opcode = org.apache.bcel5_2_0.Constants.LCONST_1;
+ } else {
+ throw new ClassGenException("LCONST can be used only for 0 and 1: " + l);
+ }
+ value = l;
+ }
+
+
+ public Number getValue() {
+ return new Long(value);
+ }
+
+
+ /** @return Type.LONG
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.LONG;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitPushInstruction(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitConstantPushInstruction(this);
+ v.visitLCONST(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC.java
index 88bd44ff..0201f8aa 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC.java
@@ -1,149 +1,149 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * LDC - Push item from constant pool.
- *
- * Stack: ... -> ..., item
- *
- * @version $Id: LDC.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LDC extends CPInstruction implements PushInstruction, ExceptionThrower,
- TypedInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- LDC() {
- }
-
-
- public LDC(int index) {
- super(org.apache.bcel5_2_0.Constants.LDC_W, index);
- setSize();
- }
-
-
- // Adjust to proper size
- protected final void setSize() {
- if (index <= org.apache.bcel5_2_0.Constants.MAX_BYTE) { // Fits in one byte?
- opcode = org.apache.bcel5_2_0.Constants.LDC;
- length = 2;
- } else {
- opcode = org.apache.bcel5_2_0.Constants.LDC_W;
- length = 3;
- }
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode);
- if (length == 2) {
- out.writeByte(index);
- } else {
- out.writeShort(index);
- }
- }
-
-
- /**
- * Set the index to constant pool and adjust size.
- */
- public final void setIndex( int index ) {
- super.setIndex(index);
- setSize();
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- length = 2;
- index = bytes.readUnsignedByte();
- }
-
-
- public Object getValue( ConstantPoolGen cpg ) {
- org.apache.bcel5_2_0.classfile.Constant c = cpg.getConstantPool().getConstant(index);
- switch (c.getTag()) {
- case org.apache.bcel5_2_0.Constants.CONSTANT_String:
- int i = ((org.apache.bcel5_2_0.classfile.ConstantString) c).getStringIndex();
- c = cpg.getConstantPool().getConstant(i);
- return ((org.apache.bcel5_2_0.classfile.ConstantUtf8) c).getBytes();
- case org.apache.bcel5_2_0.Constants.CONSTANT_Float:
- return new Float(((org.apache.bcel5_2_0.classfile.ConstantFloat) c).getBytes());
- case org.apache.bcel5_2_0.Constants.CONSTANT_Integer:
- return new Integer(((org.apache.bcel5_2_0.classfile.ConstantInteger) c).getBytes());
- case org.apache.bcel5_2_0.Constants.CONSTANT_Class:
- return c;
- default: // Never reached
- throw new RuntimeException("Unknown or invalid constant type at " + index);
- }
- }
-
-
- public Type getType( ConstantPoolGen cpg ) {
- switch (cpg.getConstantPool().getConstant(index).getTag()) {
- case org.apache.bcel5_2_0.Constants.CONSTANT_String:
- return Type.STRING;
- case org.apache.bcel5_2_0.Constants.CONSTANT_Float:
- return Type.FLOAT;
- case org.apache.bcel5_2_0.Constants.CONSTANT_Integer:
- return Type.INT;
- case org.apache.bcel5_2_0.Constants.CONSTANT_Class:
- return Type.CLASS;
- default: // Never reached
- throw new RuntimeException("Unknown or invalid constant type at " + index);
- }
- }
-
-
- public Class[] getExceptions() {
- return org.apache.bcel5_2_0.ExceptionConstants.EXCS_STRING_RESOLUTION;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitPushInstruction(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitCPInstruction(this);
- v.visitLDC(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * LDC - Push item from constant pool.
+ *
+ * Stack: ... -> ..., item
+ *
+ * @version $Id: LDC.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LDC extends CPInstruction implements PushInstruction, ExceptionThrower,
+ TypedInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ LDC() {
+ }
+
+
+ public LDC(int index) {
+ super(org.apache.bcel5_2_0.Constants.LDC_W, index);
+ setSize();
+ }
+
+
+ // Adjust to proper size
+ protected final void setSize() {
+ if (index <= org.apache.bcel5_2_0.Constants.MAX_BYTE) { // Fits in one byte?
+ opcode = org.apache.bcel5_2_0.Constants.LDC;
+ length = 2;
+ } else {
+ opcode = org.apache.bcel5_2_0.Constants.LDC_W;
+ length = 3;
+ }
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode);
+ if (length == 2) {
+ out.writeByte(index);
+ } else {
+ out.writeShort(index);
+ }
+ }
+
+
+ /**
+ * Set the index to constant pool and adjust size.
+ */
+ public final void setIndex( int index ) {
+ super.setIndex(index);
+ setSize();
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ length = 2;
+ index = bytes.readUnsignedByte();
+ }
+
+
+ public Object getValue( ConstantPoolGen cpg ) {
+ org.apache.bcel5_2_0.classfile.Constant c = cpg.getConstantPool().getConstant(index);
+ switch (c.getTag()) {
+ case org.apache.bcel5_2_0.Constants.CONSTANT_String:
+ int i = ((org.apache.bcel5_2_0.classfile.ConstantString) c).getStringIndex();
+ c = cpg.getConstantPool().getConstant(i);
+ return ((org.apache.bcel5_2_0.classfile.ConstantUtf8) c).getBytes();
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Float:
+ return new Float(((org.apache.bcel5_2_0.classfile.ConstantFloat) c).getBytes());
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Integer:
+ return new Integer(((org.apache.bcel5_2_0.classfile.ConstantInteger) c).getBytes());
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Class:
+ return c;
+ default: // Never reached
+ throw new RuntimeException("Unknown or invalid constant type at " + index);
+ }
+ }
+
+
+ public Type getType( ConstantPoolGen cpg ) {
+ switch (cpg.getConstantPool().getConstant(index).getTag()) {
+ case org.apache.bcel5_2_0.Constants.CONSTANT_String:
+ return Type.STRING;
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Float:
+ return Type.FLOAT;
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Integer:
+ return Type.INT;
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Class:
+ return Type.CLASS;
+ default: // Never reached
+ throw new RuntimeException("Unknown or invalid constant type at " + index);
+ }
+ }
+
+
+ public Class[] getExceptions() {
+ return org.apache.bcel5_2_0.ExceptionConstants.EXCS_STRING_RESOLUTION;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitPushInstruction(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitCPInstruction(this);
+ v.visitLDC(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC2_W.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC2_W.java
index 8d670295..b0208b07 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC2_W.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC2_W.java
@@ -1,82 +1,82 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LDC2_W - Push long or double from constant pool
- *
- * Stack: ... -> ..., item.word1, item.word2
- *
- * @version $Id: LDC2_W.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LDC2_W extends CPInstruction implements PushInstruction, TypedInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- LDC2_W() {
- }
-
-
- public LDC2_W(int index) {
- super(org.apache.bcel5_2_0.Constants.LDC2_W, index);
- }
-
-
- public Type getType( ConstantPoolGen cpg ) {
- switch (cpg.getConstantPool().getConstant(index).getTag()) {
- case org.apache.bcel5_2_0.Constants.CONSTANT_Long:
- return Type.LONG;
- case org.apache.bcel5_2_0.Constants.CONSTANT_Double:
- return Type.DOUBLE;
- default: // Never reached
- throw new RuntimeException("Unknown constant type " + opcode);
- }
- }
-
-
- public Number getValue( ConstantPoolGen cpg ) {
- org.apache.bcel5_2_0.classfile.Constant c = cpg.getConstantPool().getConstant(index);
- switch (c.getTag()) {
- case org.apache.bcel5_2_0.Constants.CONSTANT_Long:
- return new Long(((org.apache.bcel5_2_0.classfile.ConstantLong) c).getBytes());
- case org.apache.bcel5_2_0.Constants.CONSTANT_Double:
- return new Double(((org.apache.bcel5_2_0.classfile.ConstantDouble) c).getBytes());
- default: // Never reached
- throw new RuntimeException("Unknown or invalid constant type at " + index);
- }
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitPushInstruction(this);
- v.visitTypedInstruction(this);
- v.visitCPInstruction(this);
- v.visitLDC2_W(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LDC2_W - Push long or double from constant pool
+ *
+ * Stack: ... -> ..., item.word1, item.word2
+ *
+ * @version $Id: LDC2_W.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LDC2_W extends CPInstruction implements PushInstruction, TypedInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ LDC2_W() {
+ }
+
+
+ public LDC2_W(int index) {
+ super(org.apache.bcel5_2_0.Constants.LDC2_W, index);
+ }
+
+
+ public Type getType( ConstantPoolGen cpg ) {
+ switch (cpg.getConstantPool().getConstant(index).getTag()) {
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Long:
+ return Type.LONG;
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Double:
+ return Type.DOUBLE;
+ default: // Never reached
+ throw new RuntimeException("Unknown constant type " + opcode);
+ }
+ }
+
+
+ public Number getValue( ConstantPoolGen cpg ) {
+ org.apache.bcel5_2_0.classfile.Constant c = cpg.getConstantPool().getConstant(index);
+ switch (c.getTag()) {
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Long:
+ return new Long(((org.apache.bcel5_2_0.classfile.ConstantLong) c).getBytes());
+ case org.apache.bcel5_2_0.Constants.CONSTANT_Double:
+ return new Double(((org.apache.bcel5_2_0.classfile.ConstantDouble) c).getBytes());
+ default: // Never reached
+ throw new RuntimeException("Unknown or invalid constant type at " + index);
+ }
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitPushInstruction(this);
+ v.visitTypedInstruction(this);
+ v.visitCPInstruction(this);
+ v.visitLDC2_W(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC_W.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC_W.java
index 40402bce..1ec1e1be 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC_W.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDC_W.java
@@ -1,55 +1,55 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * LDC_W - Push item from constant pool (wide index)
- *
- * Stack: ... -> ..., item.word1, item.word2
- *
- * @version $Id: LDC_W.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LDC_W extends LDC {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- LDC_W() {
- }
-
-
- public LDC_W(int index) {
- super(index);
- }
-
-
- /**
- * Read needed data (i.e., index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- setIndex(bytes.readUnsignedShort());
- // Override just in case it has been changed
- opcode = org.apache.bcel5_2_0.Constants.LDC_W;
- length = 3;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * LDC_W - Push item from constant pool (wide index)
+ *
+ * Stack: ... -> ..., item.word1, item.word2
+ *
+ * @version $Id: LDC_W.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LDC_W extends LDC {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ LDC_W() {
+ }
+
+
+ public LDC_W(int index) {
+ super(index);
+ }
+
+
+ /**
+ * Read needed data (i.e., index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ setIndex(bytes.readUnsignedShort());
+ // Override just in case it has been changed
+ opcode = org.apache.bcel5_2_0.Constants.LDC_W;
+ length = 3;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDIV.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDIV.java
index 764fafd3..2cf5b1a6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDIV.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LDIV.java
@@ -1,57 +1,57 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LDIV - Divide longs
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: LDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LDIV extends ArithmeticInstruction implements ExceptionThrower {
-
- public LDIV() {
- super(org.apache.bcel5_2_0.Constants.LDIV);
- }
-
-
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLDIV(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LDIV - Divide longs
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: LDIV.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LDIV extends ArithmeticInstruction implements ExceptionThrower {
+
+ public LDIV() {
+ super(org.apache.bcel5_2_0.Constants.LDIV);
+ }
+
+
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLDIV(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LLOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LLOAD.java
index 0f7732b3..9833196e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LLOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LLOAD.java
@@ -1,54 +1,54 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LLOAD - Load long from local variable
- *Stack ... -> ..., result.word1, result.word2
- *
- * @version $Id: LLOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LLOAD extends LoadInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- LLOAD() {
- super(org.apache.bcel5_2_0.Constants.LLOAD, org.apache.bcel5_2_0.Constants.LLOAD_0);
- }
-
-
- public LLOAD(int n) {
- super(org.apache.bcel5_2_0.Constants.LLOAD, org.apache.bcel5_2_0.Constants.LLOAD_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitLLOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LLOAD - Load long from local variable
+ *Stack ... -> ..., result.word1, result.word2
+ *
+ * @version $Id: LLOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LLOAD extends LoadInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ LLOAD() {
+ super(org.apache.bcel5_2_0.Constants.LLOAD, org.apache.bcel5_2_0.Constants.LLOAD_0);
+ }
+
+
+ public LLOAD(int n) {
+ super(org.apache.bcel5_2_0.Constants.LLOAD, org.apache.bcel5_2_0.Constants.LLOAD_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitLLOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LMUL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LMUL.java
index f596d9e4..2b609f18 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LMUL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LMUL.java
@@ -1,49 +1,49 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LMUL - Multiply longs
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: LMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LMUL extends ArithmeticInstruction {
-
- public LMUL() {
- super(org.apache.bcel5_2_0.Constants.LMUL);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLMUL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LMUL - Multiply longs
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: LMUL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LMUL extends ArithmeticInstruction {
+
+ public LMUL() {
+ super(org.apache.bcel5_2_0.Constants.LMUL);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLMUL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LNEG.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LNEG.java
index 280ef8e2..0df878ae 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LNEG.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LNEG.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LNEG - Negate long
- * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
- * @version $Id: LNEG.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LNEG extends ArithmeticInstruction {
-
- public LNEG() {
- super(org.apache.bcel5_2_0.Constants.LNEG);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLNEG(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LNEG - Negate long
+ * Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
+ *
+ * @version $Id: LNEG.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LNEG extends ArithmeticInstruction {
+
+ public LNEG() {
+ super(org.apache.bcel5_2_0.Constants.LNEG);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLNEG(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOOKUPSWITCH.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOOKUPSWITCH.java
index d0eccdd5..36c438ff 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOOKUPSWITCH.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOOKUPSWITCH.java
@@ -1,96 +1,96 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * LOOKUPSWITCH - Switch with unordered set of values
- *
- * @version $Id: LOOKUPSWITCH.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see SWITCH
- */
-public class LOOKUPSWITCH extends Select {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- LOOKUPSWITCH() {
- }
-
-
- public LOOKUPSWITCH(int[] match, InstructionHandle[] targets, InstructionHandle defaultTarget) {
- super(org.apache.bcel5_2_0.Constants.LOOKUPSWITCH, match, targets, defaultTarget);
- length = (short) (9 + match_length * 8); /* alignment remainder assumed
- * 0 here, until dump time. */
- fixed_length = length;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- super.dump(out);
- out.writeInt(match_length); // npairs
- for (int i = 0; i < match_length; i++) {
- out.writeInt(match[i]); // match-offset pairs
- out.writeInt(indices[i] = getTargetOffset(targets[i]));
- }
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- super.initFromFile(bytes, wide); // reads padding
- match_length = bytes.readInt();
- fixed_length = (short) (9 + match_length * 8);
- length = (short) (fixed_length + padding);
- match = new int[match_length];
- indices = new int[match_length];
- targets = new InstructionHandle[match_length];
- for (int i = 0; i < match_length; i++) {
- match[i] = bytes.readInt();
- indices[i] = bytes.readInt();
- }
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitVariableLengthInstruction(this);
- v.visitStackProducer(this);
- v.visitBranchInstruction(this);
- v.visitSelect(this);
- v.visitLOOKUPSWITCH(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * LOOKUPSWITCH - Switch with unordered set of values
+ *
+ * @version $Id: LOOKUPSWITCH.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see SWITCH
+ */
+public class LOOKUPSWITCH extends Select {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ LOOKUPSWITCH() {
+ }
+
+
+ public LOOKUPSWITCH(int[] match, InstructionHandle[] targets, InstructionHandle defaultTarget) {
+ super(org.apache.bcel5_2_0.Constants.LOOKUPSWITCH, match, targets, defaultTarget);
+ length = (short) (9 + match_length * 8); /* alignment remainder assumed
+ * 0 here, until dump time. */
+ fixed_length = length;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ super.dump(out);
+ out.writeInt(match_length); // npairs
+ for (int i = 0; i < match_length; i++) {
+ out.writeInt(match[i]); // match-offset pairs
+ out.writeInt(indices[i] = getTargetOffset(targets[i]));
+ }
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ super.initFromFile(bytes, wide); // reads padding
+ match_length = bytes.readInt();
+ fixed_length = (short) (9 + match_length * 8);
+ length = (short) (fixed_length + padding);
+ match = new int[match_length];
+ indices = new int[match_length];
+ targets = new InstructionHandle[match_length];
+ for (int i = 0; i < match_length; i++) {
+ match[i] = bytes.readInt();
+ indices[i] = bytes.readInt();
+ }
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitVariableLengthInstruction(this);
+ v.visitStackProducer(this);
+ v.visitBranchInstruction(this);
+ v.visitSelect(this);
+ v.visitLOOKUPSWITCH(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOR.java
index e0210b68..5f126d90 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LOR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LOR - Bitwise OR long
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: LOR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LOR extends ArithmeticInstruction {
-
- public LOR() {
- super(org.apache.bcel5_2_0.Constants.LOR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLOR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LOR - Bitwise OR long
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: LOR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LOR extends ArithmeticInstruction {
+
+ public LOR() {
+ super(org.apache.bcel5_2_0.Constants.LOR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLOR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LREM.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LREM.java
index fd332d64..b9cdfe35 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LREM.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LREM.java
@@ -1,56 +1,56 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LREM - Remainder of long
- * Stack: ..., value1, value2 -> result
- *
- * @version $Id: LREM.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LREM extends ArithmeticInstruction implements ExceptionThrower {
-
- public LREM() {
- super(org.apache.bcel5_2_0.Constants.LREM);
- }
-
-
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLREM(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LREM - Remainder of long
+ * Stack: ..., value1, value2 -> result
+ *
+ * @version $Id: LREM.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LREM extends ArithmeticInstruction implements ExceptionThrower {
+
+ public LREM() {
+ super(org.apache.bcel5_2_0.Constants.LREM);
+ }
+
+
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.ARITHMETIC_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLREM(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LRETURN.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LRETURN.java
index 97a4787c..2459199c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LRETURN.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LRETURN.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LRETURN - Return long from method
- * Stack: ..., value.word1, value.word2 -> <empty>
- *
- * @version $Id: LRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LRETURN extends ReturnInstruction {
-
- public LRETURN() {
- super(org.apache.bcel5_2_0.Constants.LRETURN);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitReturnInstruction(this);
- v.visitLRETURN(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LRETURN - Return long from method
+ * Stack: ..., value.word1, value.word2 -> <empty>
+ *
+ * @version $Id: LRETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LRETURN extends ReturnInstruction {
+
+ public LRETURN() {
+ super(org.apache.bcel5_2_0.Constants.LRETURN);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitReturnInstruction(this);
+ v.visitLRETURN(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHL.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHL.java
index cd684fe2..d83114a7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHL.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHL.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LSHL - Arithmetic shift left long
- * Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2
- *
- * @version $Id: LSHL.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LSHL extends ArithmeticInstruction {
-
- public LSHL() {
- super(org.apache.bcel5_2_0.Constants.LSHL);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLSHL(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LSHL - Arithmetic shift left long
+ * Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2
+ *
+ * @version $Id: LSHL.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LSHL extends ArithmeticInstruction {
+
+ public LSHL() {
+ super(org.apache.bcel5_2_0.Constants.LSHL);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLSHL(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHR.java
index 406d57cc..413ebad0 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSHR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LSHR - Arithmetic shift right long
- * Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2
- *
- * @version $Id: LSHR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LSHR extends ArithmeticInstruction {
-
- public LSHR() {
- super(org.apache.bcel5_2_0.Constants.LSHR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLSHR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LSHR - Arithmetic shift right long
+ * Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2
+ *
+ * @version $Id: LSHR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LSHR extends ArithmeticInstruction {
+
+ public LSHR() {
+ super(org.apache.bcel5_2_0.Constants.LSHR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLSHR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSTORE.java
index f1e770d1..25bd59c6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSTORE.java
@@ -1,54 +1,54 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LSTORE - Store long into local variable
- * Stack: ..., value.word1, value.word2 -> ...
- *
- * @version $Id: LSTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LSTORE extends StoreInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- LSTORE() {
- super(org.apache.bcel5_2_0.Constants.LSTORE, org.apache.bcel5_2_0.Constants.LSTORE_0);
- }
-
-
- public LSTORE(int n) {
- super(org.apache.bcel5_2_0.Constants.LSTORE, org.apache.bcel5_2_0.Constants.LSTORE_0, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- super.accept(v);
- v.visitLSTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LSTORE - Store long into local variable
+ * Stack: ..., value.word1, value.word2 -> ...
+ *
+ * @version $Id: LSTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LSTORE extends StoreInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ LSTORE() {
+ super(org.apache.bcel5_2_0.Constants.LSTORE, org.apache.bcel5_2_0.Constants.LSTORE_0);
+ }
+
+
+ public LSTORE(int n) {
+ super(org.apache.bcel5_2_0.Constants.LSTORE, org.apache.bcel5_2_0.Constants.LSTORE_0, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ super.accept(v);
+ v.visitLSTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSUB.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSUB.java
index ee622bcc..97165c45 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSUB.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LSUB.java
@@ -1,49 +1,49 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LSUB - Substract longs
- * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- * ..., result.word1, result.word2
- *
- * @version $Id: LSUB.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LSUB extends ArithmeticInstruction {
-
- public LSUB() {
- super(org.apache.bcel5_2_0.Constants.LSUB);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLSUB(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LSUB - Substract longs
+ * Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
+ * ..., result.word1, result.word2
+ *
+ * @version $Id: LSUB.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LSUB extends ArithmeticInstruction {
+
+ public LSUB() {
+ super(org.apache.bcel5_2_0.Constants.LSUB);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLSUB(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LUSHR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LUSHR.java
index e8332b1c..39bf16f6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LUSHR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LUSHR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LUSHR - Logical shift right long
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: LUSHR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LUSHR extends ArithmeticInstruction {
-
- public LUSHR() {
- super(org.apache.bcel5_2_0.Constants.LUSHR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLUSHR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LUSHR - Logical shift right long
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: LUSHR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LUSHR extends ArithmeticInstruction {
+
+ public LUSHR() {
+ super(org.apache.bcel5_2_0.Constants.LUSHR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLUSHR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LXOR.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LXOR.java
index ca30a032..d295a659 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LXOR.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LXOR.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * LXOR - Bitwise XOR long
- * Stack: ..., value1, value2 -> ..., result
- *
- * @version $Id: LXOR.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class LXOR extends ArithmeticInstruction {
-
- public LXOR() {
- super(org.apache.bcel5_2_0.Constants.LXOR);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitTypedInstruction(this);
- v.visitStackProducer(this);
- v.visitStackConsumer(this);
- v.visitArithmeticInstruction(this);
- v.visitLXOR(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * LXOR - Bitwise XOR long
+ * Stack: ..., value1, value2 -> ..., result
+ *
+ * @version $Id: LXOR.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class LXOR extends ArithmeticInstruction {
+
+ public LXOR() {
+ super(org.apache.bcel5_2_0.Constants.LXOR);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitTypedInstruction(this);
+ v.visitStackProducer(this);
+ v.visitStackConsumer(this);
+ v.visitArithmeticInstruction(this);
+ v.visitLXOR(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LineNumberGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LineNumberGen.java
index 0acd7516..69b003bd 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LineNumberGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LineNumberGen.java
@@ -1,108 +1,108 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.classfile.LineNumber;
-
-/**
- * This class represents a line number within a method, i.e., give an instruction
- * a line number corresponding to the source code line.
- *
- * @version $Id: LineNumberGen.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see LineNumber
- * @see MethodGen
- */
-public class LineNumberGen implements InstructionTargeter, Cloneable, java.io.Serializable {
-
- private InstructionHandle ih;
- private int src_line;
-
-
- /**
- * Create a line number.
- *
- * @param ih instruction handle to reference
- */
- public LineNumberGen(InstructionHandle ih, int src_line) {
- setInstruction(ih);
- setSourceLine(src_line);
- }
-
-
- /**
- * @return true, if ih is target of this line number
- */
- public boolean containsTarget( InstructionHandle ih ) {
- return this.ih == ih;
- }
-
-
- /**
- * @param old_ih old target
- * @param new_ih new target
- */
- public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
- if (old_ih != ih) {
- throw new ClassGenException("Not targeting " + old_ih + ", but " + ih + "}");
- } else {
- setInstruction(new_ih);
- }
- }
-
-
- /**
- * Get LineNumber attribute .
- *
- * This relies on that the instruction list has already been dumped to byte code or
- * or that the `setPositions' methods has been called for the instruction list.
- */
- public LineNumber getLineNumber() {
- return new LineNumber(ih.getPosition(), src_line);
- }
-
-
- public void setInstruction( InstructionHandle ih ) {
- BranchInstruction.notifyTarget(this.ih, ih, this);
- this.ih = ih;
- }
-
-
- public Object clone() {
- try {
- return super.clone();
- } catch (CloneNotSupportedException e) {
- System.err.println(e);
- return null;
- }
- }
-
-
- public InstructionHandle getInstruction() {
- return ih;
- }
-
-
- public void setSourceLine( int src_line ) {
- this.src_line = src_line;
- }
-
-
- public int getSourceLine() {
- return src_line;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.classfile.LineNumber;
+
+/**
+ * This class represents a line number within a method, i.e., give an instruction
+ * a line number corresponding to the source code line.
+ *
+ * @version $Id: LineNumberGen.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see LineNumber
+ * @see MethodGen
+ */
+public class LineNumberGen implements InstructionTargeter, Cloneable, java.io.Serializable {
+
+ private InstructionHandle ih;
+ private int src_line;
+
+
+ /**
+ * Create a line number.
+ *
+ * @param ih instruction handle to reference
+ */
+ public LineNumberGen(InstructionHandle ih, int src_line) {
+ setInstruction(ih);
+ setSourceLine(src_line);
+ }
+
+
+ /**
+ * @return true, if ih is target of this line number
+ */
+ public boolean containsTarget( InstructionHandle ih ) {
+ return this.ih == ih;
+ }
+
+
+ /**
+ * @param old_ih old target
+ * @param new_ih new target
+ */
+ public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
+ if (old_ih != ih) {
+ throw new ClassGenException("Not targeting " + old_ih + ", but " + ih + "}");
+ } else {
+ setInstruction(new_ih);
+ }
+ }
+
+
+ /**
+ * Get LineNumber attribute .
+ *
+ * This relies on that the instruction list has already been dumped to byte code or
+ * or that the `setPositions' methods has been called for the instruction list.
+ */
+ public LineNumber getLineNumber() {
+ return new LineNumber(ih.getPosition(), src_line);
+ }
+
+
+ public void setInstruction( InstructionHandle ih ) {
+ BranchInstruction.notifyTarget(this.ih, ih, this);
+ this.ih = ih;
+ }
+
+
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch (CloneNotSupportedException e) {
+ System.err.println(e);
+ return null;
+ }
+ }
+
+
+ public InstructionHandle getInstruction() {
+ return ih;
+ }
+
+
+ public void setSourceLine( int src_line ) {
+ this.src_line = src_line;
+ }
+
+
+ public int getSourceLine() {
+ return src_line;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadClass.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadClass.java
index b483a4a0..006fe964 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadClass.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadClass.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes that an instruction may start the process of loading and resolving
- * the referenced class in the Virtual Machine.
- *
- * @version $Id: LoadClass.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface LoadClass {
-
- /**
- * Returns the ObjectType of the referenced class or interface
- * that may be loaded and resolved.
- * @return object type that may be loaded or null if a primitive is
- * referenced
- */
- public ObjectType getLoadClassType( ConstantPoolGen cpg );
-
-
- /**
- * Returns the type associated with this instruction.
- * LoadClass instances are always typed, but this type
- * does not always refer to the type of the class or interface
- * that it possibly forces to load. For example, GETFIELD would
- * return the type of the field and not the type of the class
- * where the field is defined.
- * If no class is forced to be loaded, null is returned.
- * An example for this is an ANEWARRAY instruction that creates
- * an int[][].
- * @see #getLoadClassType(ConstantPoolGen)
- */
- public Type getType( ConstantPoolGen cpg );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes that an instruction may start the process of loading and resolving
+ * the referenced class in the Virtual Machine.
+ *
+ * @version $Id: LoadClass.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface LoadClass {
+
+ /**
+ * Returns the ObjectType of the referenced class or interface
+ * that may be loaded and resolved.
+ * @return object type that may be loaded or null if a primitive is
+ * referenced
+ */
+ public ObjectType getLoadClassType( ConstantPoolGen cpg );
+
+
+ /**
+ * Returns the type associated with this instruction.
+ * LoadClass instances are always typed, but this type
+ * does not always refer to the type of the class or interface
+ * that it possibly forces to load. For example, GETFIELD would
+ * return the type of the field and not the type of the class
+ * where the field is defined.
+ * If no class is forced to be loaded, null is returned.
+ * An example for this is an ANEWARRAY instruction that creates
+ * an int[][].
+ * @see #getLoadClassType(ConstantPoolGen)
+ */
+ public Type getType( ConstantPoolGen cpg );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadInstruction.java
index ffa11303..2039885e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LoadInstruction.java
@@ -1,63 +1,63 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes an unparameterized instruction to load a value from a local
- * variable, e.g. ILOAD.
- *
- * @version $Id: LoadInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class LoadInstruction extends LocalVariableInstruction implements PushInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- * tag and length are defined in readInstruction and initFromFile, respectively.
- */
- LoadInstruction(short canon_tag, short c_tag) {
- super(canon_tag, c_tag);
- }
-
-
- /**
- * @param opcode Instruction opcode
- * @param c_tag Instruction number for compact version, ALOAD_0, e.g.
- * @param n local variable index (unsigned short)
- */
- protected LoadInstruction(short opcode, short c_tag, int n) {
- super(opcode, c_tag, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitPushInstruction(this);
- v.visitTypedInstruction(this);
- v.visitLocalVariableInstruction(this);
- v.visitLoadInstruction(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes an unparameterized instruction to load a value from a local
+ * variable, e.g. ILOAD.
+ *
+ * @version $Id: LoadInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class LoadInstruction extends LocalVariableInstruction implements PushInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ * tag and length are defined in readInstruction and initFromFile, respectively.
+ */
+ LoadInstruction(short canon_tag, short c_tag) {
+ super(canon_tag, c_tag);
+ }
+
+
+ /**
+ * @param opcode Instruction opcode
+ * @param c_tag Instruction number for compact version, ALOAD_0, e.g.
+ * @param n local variable index (unsigned short)
+ */
+ protected LoadInstruction(short opcode, short c_tag, int n) {
+ super(opcode, c_tag, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitPushInstruction(this);
+ v.visitTypedInstruction(this);
+ v.visitLocalVariableInstruction(this);
+ v.visitLoadInstruction(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableGen.java
index 2c93a342..eef00636 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableGen.java
@@ -1,208 +1,208 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.LocalVariable;
-
-/**
- * This class represents a local variable within a method. It contains its
- * scope, name and type. The generated LocalVariable object can be obtained
- * with getLocalVariable which needs the instruction list and the constant
- * pool as parameters.
- *
- * @version $Id: LocalVariableGen.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see LocalVariable
- * @see MethodGen
- */
-public class LocalVariableGen implements InstructionTargeter, NamedAndTyped, Cloneable,
- java.io.Serializable {
-
- private int index;
- private String name;
- private Type type;
- private InstructionHandle start, end;
-
-
- /**
- * Generate a local variable that with index `index'. Note that double and long
- * variables need two indexs. Index indices have to be provided by the user.
- *
- * @param index index of local variable
- * @param name its name
- * @param type its type
- * @param start from where the instruction is valid (null means from the start)
- * @param end until where the instruction is valid (null means to the end)
- */
- public LocalVariableGen(int index, String name, Type type, InstructionHandle start,
- InstructionHandle end) {
- if ((index < 0) || (index > Constants.MAX_SHORT)) {
- throw new ClassGenException("Invalid index index: " + index);
- }
- this.name = name;
- this.type = type;
- this.index = index;
- setStart(start);
- setEnd(end);
- }
-
-
- /**
- * Get LocalVariable object.
- *
- * This relies on that the instruction list has already been dumped to byte code or
- * or that the `setPositions' methods has been called for the instruction list.
- *
- * Note that for local variables whose scope end at the last
- * instruction of the method's code, the JVM specification is ambiguous:
- * both a start_pc+length ending at the last instruction and
- * start_pc+length ending at first index beyond the end of the code are
- * valid.
- *
- * @param cp constant pool
- */
- public LocalVariable getLocalVariable( ConstantPoolGen cp ) {
- int start_pc = start.getPosition();
- int length = end.getPosition() - start_pc;
- if (length > 0) {
- length += end.getInstruction().getLength();
- }
- int name_index = cp.addUtf8(name);
- int signature_index = cp.addUtf8(type.getSignature());
- return new LocalVariable(start_pc, length, name_index, signature_index, index, cp
- .getConstantPool());
- }
-
-
- public void setIndex( int index ) {
- this.index = index;
- }
-
-
- public int getIndex() {
- return index;
- }
-
-
- public void setName( String name ) {
- this.name = name;
- }
-
-
- public String getName() {
- return name;
- }
-
-
- public void setType( Type type ) {
- this.type = type;
- }
-
-
- public Type getType() {
- return type;
- }
-
-
- public InstructionHandle getStart() {
- return start;
- }
-
-
- public InstructionHandle getEnd() {
- return end;
- }
-
-
- public void setStart( InstructionHandle start ) {
- BranchInstruction.notifyTarget(this.start, start, this);
- this.start = start;
- }
-
-
- public void setEnd( InstructionHandle end ) {
- BranchInstruction.notifyTarget(this.end, end, this);
- this.end = end;
- }
-
-
- /**
- * @param old_ih old target, either start or end
- * @param new_ih new target
- */
- public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
- boolean targeted = false;
- if (start == old_ih) {
- targeted = true;
- setStart(new_ih);
- }
- if (end == old_ih) {
- targeted = true;
- setEnd(new_ih);
- }
- if (!targeted) {
- throw new ClassGenException("Not targeting " + old_ih + ", but {" + start + ", " + end
- + "}");
- }
- }
-
-
- /**
- * @return true, if ih is target of this variable
- */
- public boolean containsTarget( InstructionHandle ih ) {
- return (start == ih) || (end == ih);
- }
-
-
- /** @return a hash code value for the object.
- */
- public int hashCode() {
- //If the user changes the name or type, problems with the targeter hashmap will occur
- int hc = index ^ name.hashCode() ^ type.hashCode();
- return hc;
- }
-
-
- /**
- * We consider to local variables to be equal, if the use the same index and
- * are valid in the same range.
- */
- public boolean equals( Object o ) {
- if (!(o instanceof LocalVariableGen)) {
- return false;
- }
- LocalVariableGen l = (LocalVariableGen) o;
- return (l.index == index) && (l.start == start) && (l.end == end);
- }
-
-
- public String toString() {
- return "LocalVariableGen(" + name + ", " + type + ", " + start + ", " + end + ")";
- }
-
-
- public Object clone() {
- try {
- return super.clone();
- } catch (CloneNotSupportedException e) {
- System.err.println(e);
- return null;
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.LocalVariable;
+
+/**
+ * This class represents a local variable within a method. It contains its
+ * scope, name and type. The generated LocalVariable object can be obtained
+ * with getLocalVariable which needs the instruction list and the constant
+ * pool as parameters.
+ *
+ * @version $Id: LocalVariableGen.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see LocalVariable
+ * @see MethodGen
+ */
+public class LocalVariableGen implements InstructionTargeter, NamedAndTyped, Cloneable,
+ java.io.Serializable {
+
+ private int index;
+ private String name;
+ private Type type;
+ private InstructionHandle start, end;
+
+
+ /**
+ * Generate a local variable that with index `index'. Note that double and long
+ * variables need two indexs. Index indices have to be provided by the user.
+ *
+ * @param index index of local variable
+ * @param name its name
+ * @param type its type
+ * @param start from where the instruction is valid (null means from the start)
+ * @param end until where the instruction is valid (null means to the end)
+ */
+ public LocalVariableGen(int index, String name, Type type, InstructionHandle start,
+ InstructionHandle end) {
+ if ((index < 0) || (index > Constants.MAX_SHORT)) {
+ throw new ClassGenException("Invalid index index: " + index);
+ }
+ this.name = name;
+ this.type = type;
+ this.index = index;
+ setStart(start);
+ setEnd(end);
+ }
+
+
+ /**
+ * Get LocalVariable object.
+ *
+ * This relies on that the instruction list has already been dumped to byte code or
+ * or that the `setPositions' methods has been called for the instruction list.
+ *
+ * Note that for local variables whose scope end at the last
+ * instruction of the method's code, the JVM specification is ambiguous:
+ * both a start_pc+length ending at the last instruction and
+ * start_pc+length ending at first index beyond the end of the code are
+ * valid.
+ *
+ * @param cp constant pool
+ */
+ public LocalVariable getLocalVariable( ConstantPoolGen cp ) {
+ int start_pc = start.getPosition();
+ int length = end.getPosition() - start_pc;
+ if (length > 0) {
+ length += end.getInstruction().getLength();
+ }
+ int name_index = cp.addUtf8(name);
+ int signature_index = cp.addUtf8(type.getSignature());
+ return new LocalVariable(start_pc, length, name_index, signature_index, index, cp
+ .getConstantPool());
+ }
+
+
+ public void setIndex( int index ) {
+ this.index = index;
+ }
+
+
+ public int getIndex() {
+ return index;
+ }
+
+
+ public void setName( String name ) {
+ this.name = name;
+ }
+
+
+ public String getName() {
+ return name;
+ }
+
+
+ public void setType( Type type ) {
+ this.type = type;
+ }
+
+
+ public Type getType() {
+ return type;
+ }
+
+
+ public InstructionHandle getStart() {
+ return start;
+ }
+
+
+ public InstructionHandle getEnd() {
+ return end;
+ }
+
+
+ public void setStart( InstructionHandle start ) {
+ BranchInstruction.notifyTarget(this.start, start, this);
+ this.start = start;
+ }
+
+
+ public void setEnd( InstructionHandle end ) {
+ BranchInstruction.notifyTarget(this.end, end, this);
+ this.end = end;
+ }
+
+
+ /**
+ * @param old_ih old target, either start or end
+ * @param new_ih new target
+ */
+ public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
+ boolean targeted = false;
+ if (start == old_ih) {
+ targeted = true;
+ setStart(new_ih);
+ }
+ if (end == old_ih) {
+ targeted = true;
+ setEnd(new_ih);
+ }
+ if (!targeted) {
+ throw new ClassGenException("Not targeting " + old_ih + ", but {" + start + ", " + end
+ + "}");
+ }
+ }
+
+
+ /**
+ * @return true, if ih is target of this variable
+ */
+ public boolean containsTarget( InstructionHandle ih ) {
+ return (start == ih) || (end == ih);
+ }
+
+
+ /** @return a hash code value for the object.
+ */
+ public int hashCode() {
+ //If the user changes the name or type, problems with the targeter hashmap will occur
+ int hc = index ^ name.hashCode() ^ type.hashCode();
+ return hc;
+ }
+
+
+ /**
+ * We consider to local variables to be equal, if the use the same index and
+ * are valid in the same range.
+ */
+ public boolean equals( Object o ) {
+ if (!(o instanceof LocalVariableGen)) {
+ return false;
+ }
+ LocalVariableGen l = (LocalVariableGen) o;
+ return (l.index == index) && (l.start == start) && (l.end == end);
+ }
+
+
+ public String toString() {
+ return "LocalVariableGen(" + name + ", " + type + ", " + start + ", " + end + ")";
+ }
+
+
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch (CloneNotSupportedException e) {
+ System.err.println(e);
+ return null;
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableInstruction.java
index f63c604a..304fd10d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/LocalVariableInstruction.java
@@ -1,203 +1,203 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * Abstract super class for instructions dealing with local variables.
- *
- * @version $Id: LocalVariableInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class LocalVariableInstruction extends Instruction implements TypedInstruction,
- IndexedInstruction {
-
- protected int n = -1; // index of referenced variable
- private short c_tag = -1; // compact version, such as ILOAD_0
- private short canon_tag = -1; // canonical tag such as ILOAD
-
-
- private final boolean wide() {
- return n > Constants.MAX_BYTE;
- }
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- * tag and length are defined in readInstruction and initFromFile, respectively.
- */
- LocalVariableInstruction(short canon_tag, short c_tag) {
- super();
- this.canon_tag = canon_tag;
- this.c_tag = c_tag;
- }
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Also used by IINC()!
- */
- LocalVariableInstruction() {
- }
-
-
- /**
- * @param opcode Instruction opcode
- * @param c_tag Instruction number for compact version, ALOAD_0, e.g.
- * @param n local variable index (unsigned short)
- */
- protected LocalVariableInstruction(short opcode, short c_tag, int n) {
- super(opcode, (short) 2);
- this.c_tag = c_tag;
- canon_tag = opcode;
- setIndex(n);
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- if (wide()) {
- out.writeByte(Constants.WIDE);
- }
- out.writeByte(opcode);
- if (length > 1) { // Otherwise ILOAD_n, instruction, e.g.
- if (wide()) {
- out.writeShort(n);
- } else {
- out.writeByte(n);
- }
- }
- }
-
-
- /**
- * Long output format:
- *
- * <name of opcode> "["<opcode number>"]"
- * "("<length of instruction>")" "<"< local variable index>">"
- *
- * @param verbose long/short format switch
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- if (((opcode >= Constants.ILOAD_0) && (opcode <= Constants.ALOAD_3))
- || ((opcode >= Constants.ISTORE_0) && (opcode <= Constants.ASTORE_3))) {
- return super.toString(verbose);
- } else {
- return super.toString(verbose) + " " + n;
- }
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- * PRE: (ILOAD <= tag <= ALOAD_3) || (ISTORE <= tag <= ASTORE_3)
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- if (wide) {
- n = bytes.readUnsignedShort();
- length = 4;
- } else if (((opcode >= Constants.ILOAD) && (opcode <= Constants.ALOAD))
- || ((opcode >= Constants.ISTORE) && (opcode <= Constants.ASTORE))) {
- n = bytes.readUnsignedByte();
- length = 2;
- } else if (opcode <= Constants.ALOAD_3) { // compact load instruction such as ILOAD_2
- n = (opcode - Constants.ILOAD_0) % 4;
- length = 1;
- } else { // Assert ISTORE_0 <= tag <= ASTORE_3
- n = (opcode - Constants.ISTORE_0) % 4;
- length = 1;
- }
- }
-
-
- /**
- * @return local variable index referred by this instruction.
- */
- public final int getIndex() {
- return n;
- }
-
-
- /**
- * Set the local variable index
- */
- public void setIndex( int n ) {
- if ((n < 0) || (n > Constants.MAX_SHORT)) {
- throw new ClassGenException("Illegal value: " + n);
- }
- this.n = n;
- if (n >= 0 && n <= 3) { // Use more compact instruction xLOAD_n
- opcode = (short) (c_tag + n);
- length = 1;
- } else {
- opcode = canon_tag;
- if (wide()) {
- length = 4;
- } else {
- length = 2;
- }
- }
- }
-
-
- /** @return canonical tag for instruction, e.g., ALOAD for ALOAD_0
- */
- public short getCanonicalTag() {
- return canon_tag;
- }
-
-
- /**
- * Returns the type associated with the instruction -
- * in case of ALOAD or ASTORE Type.OBJECT is returned.
- * This is just a bit incorrect, because ALOAD and ASTORE
- * may work on every ReferenceType (including Type.NULL) and
- * ASTORE may even work on a ReturnaddressType .
- * @return type associated with the instruction
- */
- public Type getType( ConstantPoolGen cp ) {
- switch (canon_tag) {
- case Constants.ILOAD:
- case Constants.ISTORE:
- return Type.INT;
- case Constants.LLOAD:
- case Constants.LSTORE:
- return Type.LONG;
- case Constants.DLOAD:
- case Constants.DSTORE:
- return Type.DOUBLE;
- case Constants.FLOAD:
- case Constants.FSTORE:
- return Type.FLOAT;
- case Constants.ALOAD:
- case Constants.ASTORE:
- return Type.OBJECT;
- default:
- throw new ClassGenException("Oops: unknown case in switch" + canon_tag);
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * Abstract super class for instructions dealing with local variables.
+ *
+ * @version $Id: LocalVariableInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class LocalVariableInstruction extends Instruction implements TypedInstruction,
+ IndexedInstruction {
+
+ protected int n = -1; // index of referenced variable
+ private short c_tag = -1; // compact version, such as ILOAD_0
+ private short canon_tag = -1; // canonical tag such as ILOAD
+
+
+ private final boolean wide() {
+ return n > Constants.MAX_BYTE;
+ }
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ * tag and length are defined in readInstruction and initFromFile, respectively.
+ */
+ LocalVariableInstruction(short canon_tag, short c_tag) {
+ super();
+ this.canon_tag = canon_tag;
+ this.c_tag = c_tag;
+ }
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Also used by IINC()!
+ */
+ LocalVariableInstruction() {
+ }
+
+
+ /**
+ * @param opcode Instruction opcode
+ * @param c_tag Instruction number for compact version, ALOAD_0, e.g.
+ * @param n local variable index (unsigned short)
+ */
+ protected LocalVariableInstruction(short opcode, short c_tag, int n) {
+ super(opcode, (short) 2);
+ this.c_tag = c_tag;
+ canon_tag = opcode;
+ setIndex(n);
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ if (wide()) {
+ out.writeByte(Constants.WIDE);
+ }
+ out.writeByte(opcode);
+ if (length > 1) { // Otherwise ILOAD_n, instruction, e.g.
+ if (wide()) {
+ out.writeShort(n);
+ } else {
+ out.writeByte(n);
+ }
+ }
+ }
+
+
+ /**
+ * Long output format:
+ *
+ * <name of opcode> "["<opcode number>"]"
+ * "("<length of instruction>")" "<"< local variable index>">"
+ *
+ * @param verbose long/short format switch
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ if (((opcode >= Constants.ILOAD_0) && (opcode <= Constants.ALOAD_3))
+ || ((opcode >= Constants.ISTORE_0) && (opcode <= Constants.ASTORE_3))) {
+ return super.toString(verbose);
+ } else {
+ return super.toString(verbose) + " " + n;
+ }
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ * PRE: (ILOAD <= tag <= ALOAD_3) || (ISTORE <= tag <= ASTORE_3)
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ if (wide) {
+ n = bytes.readUnsignedShort();
+ length = 4;
+ } else if (((opcode >= Constants.ILOAD) && (opcode <= Constants.ALOAD))
+ || ((opcode >= Constants.ISTORE) && (opcode <= Constants.ASTORE))) {
+ n = bytes.readUnsignedByte();
+ length = 2;
+ } else if (opcode <= Constants.ALOAD_3) { // compact load instruction such as ILOAD_2
+ n = (opcode - Constants.ILOAD_0) % 4;
+ length = 1;
+ } else { // Assert ISTORE_0 <= tag <= ASTORE_3
+ n = (opcode - Constants.ISTORE_0) % 4;
+ length = 1;
+ }
+ }
+
+
+ /**
+ * @return local variable index referred by this instruction.
+ */
+ public final int getIndex() {
+ return n;
+ }
+
+
+ /**
+ * Set the local variable index
+ */
+ public void setIndex( int n ) {
+ if ((n < 0) || (n > Constants.MAX_SHORT)) {
+ throw new ClassGenException("Illegal value: " + n);
+ }
+ this.n = n;
+ if (n >= 0 && n <= 3) { // Use more compact instruction xLOAD_n
+ opcode = (short) (c_tag + n);
+ length = 1;
+ } else {
+ opcode = canon_tag;
+ if (wide()) {
+ length = 4;
+ } else {
+ length = 2;
+ }
+ }
+ }
+
+
+ /** @return canonical tag for instruction, e.g., ALOAD for ALOAD_0
+ */
+ public short getCanonicalTag() {
+ return canon_tag;
+ }
+
+
+ /**
+ * Returns the type associated with the instruction -
+ * in case of ALOAD or ASTORE Type.OBJECT is returned.
+ * This is just a bit incorrect, because ALOAD and ASTORE
+ * may work on every ReferenceType (including Type.NULL) and
+ * ASTORE may even work on a ReturnaddressType .
+ * @return type associated with the instruction
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ switch (canon_tag) {
+ case Constants.ILOAD:
+ case Constants.ISTORE:
+ return Type.INT;
+ case Constants.LLOAD:
+ case Constants.LSTORE:
+ return Type.LONG;
+ case Constants.DLOAD:
+ case Constants.DSTORE:
+ return Type.DOUBLE;
+ case Constants.FLOAD:
+ case Constants.FSTORE:
+ return Type.FLOAT;
+ case Constants.ALOAD:
+ case Constants.ASTORE:
+ return Type.OBJECT;
+ default:
+ throw new ClassGenException("Oops: unknown case in switch" + canon_tag);
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITORENTER.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITORENTER.java
index e62a13f9..7aad1980 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITORENTER.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITORENTER.java
@@ -1,53 +1,53 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * MONITORENTER - Enter monitor for object
- * Stack: ..., objectref -> ...
- *
- * @version $Id: MONITORENTER.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class MONITORENTER extends Instruction implements ExceptionThrower, StackConsumer {
-
- public MONITORENTER() {
- super(org.apache.bcel5_2_0.Constants.MONITORENTER, (short) 1);
- }
-
-
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.NULL_POINTER_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitStackConsumer(this);
- v.visitMONITORENTER(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * MONITORENTER - Enter monitor for object
+ * Stack: ..., objectref -> ...
+ *
+ * @version $Id: MONITORENTER.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class MONITORENTER extends Instruction implements ExceptionThrower, StackConsumer {
+
+ public MONITORENTER() {
+ super(org.apache.bcel5_2_0.Constants.MONITORENTER, (short) 1);
+ }
+
+
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.NULL_POINTER_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitStackConsumer(this);
+ v.visitMONITORENTER(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITOREXIT.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITOREXIT.java
index d9cb66a3..e6359bc4 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITOREXIT.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MONITOREXIT.java
@@ -1,53 +1,53 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * MONITOREXIT - Exit monitor for object
- * Stack: ..., objectref -> ...
- *
- * @version $Id: MONITOREXIT.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class MONITOREXIT extends Instruction implements ExceptionThrower, StackConsumer {
-
- public MONITOREXIT() {
- super(org.apache.bcel5_2_0.Constants.MONITOREXIT, (short) 1);
- }
-
-
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.NULL_POINTER_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitStackConsumer(this);
- v.visitMONITOREXIT(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * MONITOREXIT - Exit monitor for object
+ * Stack: ..., objectref -> ...
+ *
+ * @version $Id: MONITOREXIT.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class MONITOREXIT extends Instruction implements ExceptionThrower, StackConsumer {
+
+ public MONITOREXIT() {
+ super(org.apache.bcel5_2_0.Constants.MONITOREXIT, (short) 1);
+ }
+
+
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.NULL_POINTER_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitStackConsumer(this);
+ v.visitMONITOREXIT(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MULTIANEWARRAY.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MULTIANEWARRAY.java
index e830db8f..ac8555c6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MULTIANEWARRAY.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MULTIANEWARRAY.java
@@ -1,147 +1,147 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.ExceptionConstants;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * MULTIANEWARRAY - Create new mutidimensional array of references
- * Stack: ..., count1, [count2, ...] -> ..., arrayref
- *
- * @version $Id: MULTIANEWARRAY.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class MULTIANEWARRAY extends CPInstruction implements LoadClass, AllocationInstruction,
- ExceptionThrower {
-
- private short dimensions;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- MULTIANEWARRAY() {
- }
-
-
- public MULTIANEWARRAY(int index, short dimensions) {
- super(org.apache.bcel5_2_0.Constants.MULTIANEWARRAY, index);
- if (dimensions < 1) {
- throw new ClassGenException("Invalid dimensions value: " + dimensions);
- }
- this.dimensions = dimensions;
- length = 4;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode);
- out.writeShort(index);
- out.writeByte(dimensions);
- }
-
-
- /**
- * Read needed data (i.e., no. dimension) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- super.initFromFile(bytes, wide);
- dimensions = bytes.readByte();
- length = 4;
- }
-
-
- /**
- * @return number of dimensions to be created
- */
- public final short getDimensions() {
- return dimensions;
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- return super.toString(verbose) + " " + index + " " + dimensions;
- }
-
-
- /**
- * @return mnemonic for instruction with symbolic references resolved
- */
- public String toString( ConstantPool cp ) {
- return super.toString(cp) + " " + dimensions;
- }
-
-
- /**
- * Also works for instructions whose stack effect depends on the
- * constant pool entry they reference.
- * @return Number of words consumed from stack by this instruction
- */
- public int consumeStack( ConstantPoolGen cpg ) {
- return dimensions;
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[2 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length + 1] = ExceptionConstants.NEGATIVE_ARRAY_SIZE_EXCEPTION;
- cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.ILLEGAL_ACCESS_ERROR;
- return cs;
- }
-
-
- public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
- Type t = getType(cpg);
- if (t instanceof ArrayType) {
- t = ((ArrayType) t).getBasicType();
- }
- return (t instanceof ObjectType) ? (ObjectType) t : null;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLoadClass(this);
- v.visitAllocationInstruction(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitCPInstruction(this);
- v.visitMULTIANEWARRAY(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.ExceptionConstants;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * MULTIANEWARRAY - Create new mutidimensional array of references
+ * Stack: ..., count1, [count2, ...] -> ..., arrayref
+ *
+ * @version $Id: MULTIANEWARRAY.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class MULTIANEWARRAY extends CPInstruction implements LoadClass, AllocationInstruction,
+ ExceptionThrower {
+
+ private short dimensions;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ MULTIANEWARRAY() {
+ }
+
+
+ public MULTIANEWARRAY(int index, short dimensions) {
+ super(org.apache.bcel5_2_0.Constants.MULTIANEWARRAY, index);
+ if (dimensions < 1) {
+ throw new ClassGenException("Invalid dimensions value: " + dimensions);
+ }
+ this.dimensions = dimensions;
+ length = 4;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode);
+ out.writeShort(index);
+ out.writeByte(dimensions);
+ }
+
+
+ /**
+ * Read needed data (i.e., no. dimension) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ super.initFromFile(bytes, wide);
+ dimensions = bytes.readByte();
+ length = 4;
+ }
+
+
+ /**
+ * @return number of dimensions to be created
+ */
+ public final short getDimensions() {
+ return dimensions;
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ return super.toString(verbose) + " " + index + " " + dimensions;
+ }
+
+
+ /**
+ * @return mnemonic for instruction with symbolic references resolved
+ */
+ public String toString( ConstantPool cp ) {
+ return super.toString(cp) + " " + dimensions;
+ }
+
+
+ /**
+ * Also works for instructions whose stack effect depends on the
+ * constant pool entry they reference.
+ * @return Number of words consumed from stack by this instruction
+ */
+ public int consumeStack( ConstantPoolGen cpg ) {
+ return dimensions;
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[2 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length + 1] = ExceptionConstants.NEGATIVE_ARRAY_SIZE_EXCEPTION;
+ cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.ILLEGAL_ACCESS_ERROR;
+ return cs;
+ }
+
+
+ public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
+ Type t = getType(cpg);
+ if (t instanceof ArrayType) {
+ t = ((ArrayType) t).getBasicType();
+ }
+ return (t instanceof ObjectType) ? (ObjectType) t : null;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLoadClass(this);
+ v.visitAllocationInstruction(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitCPInstruction(this);
+ v.visitMULTIANEWARRAY(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodGen.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodGen.java
index b5e534c4..1b0f318f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodGen.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodGen.java
@@ -1,1087 +1,1087 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Stack;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.Attribute;
-import org.apache.bcel5_2_0.classfile.Code;
-import org.apache.bcel5_2_0.classfile.CodeException;
-import org.apache.bcel5_2_0.classfile.ExceptionTable;
-import org.apache.bcel5_2_0.classfile.LineNumber;
-import org.apache.bcel5_2_0.classfile.LineNumberTable;
-import org.apache.bcel5_2_0.classfile.LocalVariable;
-import org.apache.bcel5_2_0.classfile.LocalVariableTable;
-import org.apache.bcel5_2_0.classfile.Method;
-import org.apache.bcel5_2_0.classfile.Utility;
-import org.apache.bcel5_2_0.util.BCELComparator;
-
-/**
- * Template class for building up a method. This is done by defining exception
- * handlers, adding thrown exceptions, local variables and attributes, whereas
- * the `LocalVariableTable' and `LineNumberTable' attributes will be set
- * automatically for the code. Use stripAttributes() if you don't like this.
- *
- * While generating code it may be necessary to insert NOP operations. You can
- * use the `removeNOPs' method to get rid off them.
- * The resulting method object can be obtained via the `getMethod()' method.
- *
- * @version $Id: MethodGen.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @author Patrick C. Beard [setMaxStack()]
- * @see InstructionList
- * @see Method
- */
-public class MethodGen extends FieldGenOrMethodGen {
-
- private String class_name;
- private Type[] arg_types;
- private String[] arg_names;
- private int max_locals;
- private int max_stack;
- private InstructionList il;
- private boolean strip_attributes;
- private List variable_vec = new ArrayList();
- private List line_number_vec = new ArrayList();
- private List exception_vec = new ArrayList();
- private List throws_vec = new ArrayList();
- private List code_attrs_vec = new ArrayList();
- private static BCELComparator _cmp = new BCELComparator() {
-
- public boolean equals( Object o1, Object o2 ) {
- MethodGen THIS = (MethodGen) o1;
- MethodGen THAT = (MethodGen) o2;
- return THIS.getName().equals(THAT.getName())
- && THIS.getSignature().equals(THAT.getSignature());
- }
-
-
- public int hashCode( Object o ) {
- MethodGen THIS = (MethodGen) o;
- return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
- }
- };
-
-
- /**
- * Declare method. If the method is non-static the constructor
- * automatically declares a local variable `$this' in slot 0. The
- * actual code is contained in the `il' parameter, which may further
- * manipulated by the user. But he must take care not to remove any
- * instruction (handles) that are still referenced from this object.
- *
- * For example one may not add a local variable and later remove the
- * instructions it refers to without causing havoc. It is safe
- * however if you remove that local variable, too.
- *
- * @param access_flags access qualifiers
- * @param return_type method type
- * @param arg_types argument types
- * @param arg_names argument names (if this is null, default names will be provided
- * for them)
- * @param method_name name of method
- * @param class_name class name containing this method (may be null, if you don't care)
- * @param il instruction list associated with this method, may be null only for
- * abstract or native methods
- * @param cp constant pool
- */
- public MethodGen(int access_flags, Type return_type, Type[] arg_types, String[] arg_names,
- String method_name, String class_name, InstructionList il, ConstantPoolGen cp) {
- setAccessFlags(access_flags);
- setType(return_type);
- setArgumentTypes(arg_types);
- setArgumentNames(arg_names);
- setName(method_name);
- setClassName(class_name);
- setInstructionList(il);
- setConstantPool(cp);
- boolean abstract_ = isAbstract() || isNative();
- InstructionHandle start = null;
- InstructionHandle end = null;
- if (!abstract_) {
- start = il.getStart();
- end = il.getEnd();
- /* Add local variables, namely the implicit `this' and the arguments
- */
- if (!isStatic() && (class_name != null)) { // Instance method -> `this' is local var 0
- addLocalVariable("this", new ObjectType(class_name), start, end);
- }
- }
- if (arg_types != null) {
- int size = arg_types.length;
- for (int i = 0; i < size; i++) {
- if (Type.VOID == arg_types[i]) {
- throw new ClassGenException("'void' is an illegal argument type for a method");
- }
- }
- if (arg_names != null) { // Names for variables provided?
- if (size != arg_names.length) {
- throw new ClassGenException("Mismatch in argument array lengths: " + size
- + " vs. " + arg_names.length);
- }
- } else { // Give them dummy names
- arg_names = new String[size];
- for (int i = 0; i < size; i++) {
- arg_names[i] = "arg" + i;
- }
- setArgumentNames(arg_names);
- }
- if (!abstract_) {
- for (int i = 0; i < size; i++) {
- addLocalVariable(arg_names[i], arg_types[i], start, end);
- }
- }
- }
- }
-
-
- /**
- * Instantiate from existing method.
- *
- * @param m method
- * @param class_name class name containing this method
- * @param cp constant pool
- */
- public MethodGen(Method m, String class_name, ConstantPoolGen cp) {
- this(m.getAccessFlags(), Type.getReturnType(m.getSignature()), Type.getArgumentTypes(m
- .getSignature()), null /* may be overridden anyway */
- , m.getName(), class_name,
- ((m.getAccessFlags() & (Constants.ACC_ABSTRACT | Constants.ACC_NATIVE)) == 0)
- ? new InstructionList(m.getCode().getCode())
- : null, cp);
- Attribute[] attributes = m.getAttributes();
- for (int i = 0; i < attributes.length; i++) {
- Attribute a = attributes[i];
- if (a instanceof Code) {
- Code c = (Code) a;
- setMaxStack(c.getMaxStack());
- setMaxLocals(c.getMaxLocals());
- CodeException[] ces = c.getExceptionTable();
- if (ces != null) {
- for (int j = 0; j < ces.length; j++) {
- CodeException ce = ces[j];
- int type = ce.getCatchType();
- ObjectType c_type = null;
- if (type > 0) {
- String cen = m.getConstantPool().getConstantString(type,
- Constants.CONSTANT_Class);
- c_type = new ObjectType(cen);
- }
- int end_pc = ce.getEndPC();
- int length = m.getCode().getCode().length;
- InstructionHandle end;
- if (length == end_pc) { // May happen, because end_pc is exclusive
- end = il.getEnd();
- } else {
- end = il.findHandle(end_pc);
- end = end.getPrev(); // Make it inclusive
- }
- addExceptionHandler(il.findHandle(ce.getStartPC()), end, il.findHandle(ce
- .getHandlerPC()), c_type);
- }
- }
- Attribute[] c_attributes = c.getAttributes();
- for (int j = 0; j < c_attributes.length; j++) {
- a = c_attributes[j];
- if (a instanceof LineNumberTable) {
- LineNumber[] ln = ((LineNumberTable) a).getLineNumberTable();
- for (int k = 0; k < ln.length; k++) {
- LineNumber l = ln[k];
- InstructionHandle ih = il.findHandle(l.getStartPC());
- if (ih != null) {
- addLineNumber(ih, l.getLineNumber());
- }
- }
- } else if (a instanceof LocalVariableTable) {
- LocalVariable[] lv = ((LocalVariableTable) a).getLocalVariableTable();
- removeLocalVariables();
- for (int k = 0; k < lv.length; k++) {
- LocalVariable l = lv[k];
- InstructionHandle start = il.findHandle(l.getStartPC());
- InstructionHandle end = il.findHandle(l.getStartPC() + l.getLength());
- // Repair malformed handles
- if (null == start) {
- start = il.getStart();
- }
- if (null == end) {
- end = il.getEnd();
- }
- addLocalVariable(l.getName(), Type.getType(l.getSignature()), l
- .getIndex(), start, end);
- }
- } else {
- addCodeAttribute(a);
- }
- }
- } else if (a instanceof ExceptionTable) {
- String[] names = ((ExceptionTable) a).getExceptionNames();
- for (int j = 0; j < names.length; j++) {
- addException(names[j]);
- }
- } else {
- addAttribute(a);
- }
- }
- }
-
-
- /**
- * Adds a local variable to this method.
- *
- * @param name variable name
- * @param type variable type
- * @param slot the index of the local variable, if type is long or double, the next available
- * index is slot+2
- * @param start from where the variable is valid
- * @param end until where the variable is valid
- * @return new local variable object
- * @see LocalVariable
- */
- public LocalVariableGen addLocalVariable( String name, Type type, int slot,
- InstructionHandle start, InstructionHandle end ) {
- byte t = type.getType();
- if (t != Constants.T_ADDRESS) {
- int add = type.getSize();
- if (slot + add > max_locals) {
- max_locals = slot + add;
- }
- LocalVariableGen l = new LocalVariableGen(slot, name, type, start, end);
- int i;
- if ((i = variable_vec.indexOf(l)) >= 0) {
- variable_vec.set(i, l);
- } else {
- variable_vec.add(l);
- }
- return l;
- } else {
- throw new IllegalArgumentException("Can not use " + type
- + " as type for local variable");
- }
- }
-
-
- /**
- * Adds a local variable to this method and assigns an index automatically.
- *
- * @param name variable name
- * @param type variable type
- * @param start from where the variable is valid, if this is null,
- * it is valid from the start
- * @param end until where the variable is valid, if this is null,
- * it is valid to the end
- * @return new local variable object
- * @see LocalVariable
- */
- public LocalVariableGen addLocalVariable( String name, Type type, InstructionHandle start,
- InstructionHandle end ) {
- return addLocalVariable(name, type, max_locals, start, end);
- }
-
-
- /**
- * Remove a local variable, its slot will not be reused, if you do not use addLocalVariable
- * with an explicit index argument.
- */
- public void removeLocalVariable( LocalVariableGen l ) {
- variable_vec.remove(l);
- }
-
-
- /**
- * Remove all local variables.
- */
- public void removeLocalVariables() {
- variable_vec.clear();
- }
-
-
- /**
- * Sort local variables by index
- */
- private static final void sort( LocalVariableGen[] vars, int l, int r ) {
- int i = l, j = r;
- int m = vars[(l + r) / 2].getIndex();
- LocalVariableGen h;
- do {
- while (vars[i].getIndex() < m) {
- i++;
- }
- while (m < vars[j].getIndex()) {
- j--;
- }
- if (i <= j) {
- h = vars[i];
- vars[i] = vars[j];
- vars[j] = h; // Swap elements
- i++;
- j--;
- }
- } while (i <= j);
- if (l < j) {
- sort(vars, l, j);
- }
- if (i < r) {
- sort(vars, i, r);
- }
- }
-
-
- /*
- * If the range of the variable has not been set yet, it will be set to be valid from
- * the start to the end of the instruction list.
- *
- * @return array of declared local variables sorted by index
- */
- public LocalVariableGen[] getLocalVariables() {
- int size = variable_vec.size();
- LocalVariableGen[] lg = new LocalVariableGen[size];
- variable_vec.toArray(lg);
- for (int i = 0; i < size; i++) {
- if (lg[i].getStart() == null) {
- lg[i].setStart(il.getStart());
- }
- if (lg[i].getEnd() == null) {
- lg[i].setEnd(il.getEnd());
- }
- }
- if (size > 1) {
- sort(lg, 0, size - 1);
- }
- return lg;
- }
-
-
- /**
- * @return `LocalVariableTable' attribute of all the local variables of this method.
- */
- public LocalVariableTable getLocalVariableTable( ConstantPoolGen cp ) {
- LocalVariableGen[] lg = getLocalVariables();
- int size = lg.length;
- LocalVariable[] lv = new LocalVariable[size];
- for (int i = 0; i < size; i++) {
- lv[i] = lg[i].getLocalVariable(cp);
- }
- return new LocalVariableTable(cp.addUtf8("LocalVariableTable"), 2 + lv.length * 10, lv, cp
- .getConstantPool());
- }
-
-
- /**
- * Give an instruction a line number corresponding to the source code line.
- *
- * @param ih instruction to tag
- * @return new line number object
- * @see LineNumber
- */
- public LineNumberGen addLineNumber( InstructionHandle ih, int src_line ) {
- LineNumberGen l = new LineNumberGen(ih, src_line);
- line_number_vec.add(l);
- return l;
- }
-
-
- /**
- * Remove a line number.
- */
- public void removeLineNumber( LineNumberGen l ) {
- line_number_vec.remove(l);
- }
-
-
- /**
- * Remove all line numbers.
- */
- public void removeLineNumbers() {
- line_number_vec.clear();
- }
-
-
- /*
- * @return array of line numbers
- */
- public LineNumberGen[] getLineNumbers() {
- LineNumberGen[] lg = new LineNumberGen[line_number_vec.size()];
- line_number_vec.toArray(lg);
- return lg;
- }
-
-
- /**
- * @return `LineNumberTable' attribute of all the local variables of this method.
- */
- public LineNumberTable getLineNumberTable( ConstantPoolGen cp ) {
- int size = line_number_vec.size();
- LineNumber[] ln = new LineNumber[size];
- try {
- for (int i = 0; i < size; i++) {
- ln[i] = ((LineNumberGen) line_number_vec.get(i)).getLineNumber();
- }
- } catch (ArrayIndexOutOfBoundsException e) {
- } // Never occurs
- return new LineNumberTable(cp.addUtf8("LineNumberTable"), 2 + ln.length * 4, ln, cp
- .getConstantPool());
- }
-
-
- /**
- * Add an exception handler, i.e., specify region where a handler is active and an
- * instruction where the actual handling is done.
- *
- * @param start_pc Start of region (inclusive)
- * @param end_pc End of region (inclusive)
- * @param handler_pc Where handling is done
- * @param catch_type class type of handled exception or null if any
- * exception is handled
- * @return new exception handler object
- */
- public CodeExceptionGen addExceptionHandler( InstructionHandle start_pc,
- InstructionHandle end_pc, InstructionHandle handler_pc, ObjectType catch_type ) {
- if ((start_pc == null) || (end_pc == null) || (handler_pc == null)) {
- throw new ClassGenException("Exception handler target is null instruction");
- }
- CodeExceptionGen c = new CodeExceptionGen(start_pc, end_pc, handler_pc, catch_type);
- exception_vec.add(c);
- return c;
- }
-
-
- /**
- * Remove an exception handler.
- */
- public void removeExceptionHandler( CodeExceptionGen c ) {
- exception_vec.remove(c);
- }
-
-
- /**
- * Remove all line numbers.
- */
- public void removeExceptionHandlers() {
- exception_vec.clear();
- }
-
-
- /*
- * @return array of declared exception handlers
- */
- public CodeExceptionGen[] getExceptionHandlers() {
- CodeExceptionGen[] cg = new CodeExceptionGen[exception_vec.size()];
- exception_vec.toArray(cg);
- return cg;
- }
-
-
- /**
- * @return code exceptions for `Code' attribute
- */
- private CodeException[] getCodeExceptions() {
- int size = exception_vec.size();
- CodeException[] c_exc = new CodeException[size];
- try {
- for (int i = 0; i < size; i++) {
- CodeExceptionGen c = (CodeExceptionGen) exception_vec.get(i);
- c_exc[i] = c.getCodeException(cp);
- }
- } catch (ArrayIndexOutOfBoundsException e) {
- }
- return c_exc;
- }
-
-
- /**
- * Add an exception possibly thrown by this method.
- *
- * @param class_name (fully qualified) name of exception
- */
- public void addException( String class_name ) {
- throws_vec.add(class_name);
- }
-
-
- /**
- * Remove an exception.
- */
- public void removeException( String c ) {
- throws_vec.remove(c);
- }
-
-
- /**
- * Remove all exceptions.
- */
- public void removeExceptions() {
- throws_vec.clear();
- }
-
-
- /*
- * @return array of thrown exceptions
- */
- public String[] getExceptions() {
- String[] e = new String[throws_vec.size()];
- throws_vec.toArray(e);
- return e;
- }
-
-
- /**
- * @return `Exceptions' attribute of all the exceptions thrown by this method.
- */
- private ExceptionTable getExceptionTable( ConstantPoolGen cp ) {
- int size = throws_vec.size();
- int[] ex = new int[size];
- try {
- for (int i = 0; i < size; i++) {
- ex[i] = cp.addClass((String) throws_vec.get(i));
- }
- } catch (ArrayIndexOutOfBoundsException e) {
- }
- return new ExceptionTable(cp.addUtf8("Exceptions"), 2 + 2 * size, ex, cp.getConstantPool());
- }
-
-
- /**
- * Add an attribute to the code. Currently, the JVM knows about the
- * LineNumberTable, LocalVariableTable and StackMap attributes,
- * where the former two will be generated automatically and the
- * latter is used for the MIDP only. Other attributes will be
- * ignored by the JVM but do no harm.
- *
- * @param a attribute to be added
- */
- public void addCodeAttribute( Attribute a ) {
- code_attrs_vec.add(a);
- }
-
-
- /**
- * Remove a code attribute.
- */
- public void removeCodeAttribute( Attribute a ) {
- code_attrs_vec.remove(a);
- }
-
-
- /**
- * Remove all code attributes.
- */
- public void removeCodeAttributes() {
- code_attrs_vec.clear();
- }
-
-
- /**
- * @return all attributes of this method.
- */
- public Attribute[] getCodeAttributes() {
- Attribute[] attributes = new Attribute[code_attrs_vec.size()];
- code_attrs_vec.toArray(attributes);
- return attributes;
- }
-
-
- /**
- * Get method object. Never forget to call setMaxStack() or setMaxStack(max), respectively,
- * before calling this method (the same applies for max locals).
- *
- * @return method object
- */
- public Method getMethod() {
- String signature = getSignature();
- int name_index = cp.addUtf8(name);
- int signature_index = cp.addUtf8(signature);
- /* Also updates positions of instructions, i.e., their indices
- */
- byte[] byte_code = null;
- if (il != null) {
- byte_code = il.getByteCode();
- }
- LineNumberTable lnt = null;
- LocalVariableTable lvt = null;
- /* Create LocalVariableTable and LineNumberTable attributes (for debuggers, e.g.)
- */
- if ((variable_vec.size() > 0) && !strip_attributes) {
- addCodeAttribute(lvt = getLocalVariableTable(cp));
- }
- if ((line_number_vec.size() > 0) && !strip_attributes) {
- addCodeAttribute(lnt = getLineNumberTable(cp));
- }
- Attribute[] code_attrs = getCodeAttributes();
- /* Each attribute causes 6 additional header bytes
- */
- int attrs_len = 0;
- for (int i = 0; i < code_attrs.length; i++) {
- attrs_len += (code_attrs[i].getLength() + 6);
- }
- CodeException[] c_exc = getCodeExceptions();
- int exc_len = c_exc.length * 8; // Every entry takes 8 bytes
- Code code = null;
- if ((il != null) && !isAbstract() && !isNative()) {
- // Remove any stale code attribute
- Attribute[] attributes = getAttributes();
- for (int i = 0; i < attributes.length; i++) {
- Attribute a = attributes[i];
- if (a instanceof Code) {
- removeAttribute(a);
- }
- }
- code = new Code(cp.addUtf8("Code"), 8 + byte_code.length + // prologue byte code
- 2 + exc_len + // exceptions
- 2 + attrs_len, // attributes
- max_stack, max_locals, byte_code, c_exc, code_attrs, cp.getConstantPool());
- addAttribute(code);
- }
- ExceptionTable et = null;
- if (throws_vec.size() > 0) {
- addAttribute(et = getExceptionTable(cp));
- // Add `Exceptions' if there are "throws" clauses
- }
- Method m = new Method(access_flags, name_index, signature_index, getAttributes(), cp
- .getConstantPool());
- // Undo effects of adding attributes
- if (lvt != null) {
- removeCodeAttribute(lvt);
- }
- if (lnt != null) {
- removeCodeAttribute(lnt);
- }
- if (code != null) {
- removeAttribute(code);
- }
- if (et != null) {
- removeAttribute(et);
- }
- return m;
- }
-
-
- /**
- * Remove all NOPs from the instruction list (if possible) and update every
- * object refering to them, i.e., branch instructions, local variables and
- * exception handlers.
- */
- public void removeNOPs() {
- if (il != null) {
- InstructionHandle next;
- /* Check branch instructions.
- */
- for (InstructionHandle ih = il.getStart(); ih != null; ih = next) {
- next = ih.next;
- if ((next != null) && (ih.getInstruction() instanceof NOP)) {
- try {
- il.delete(ih);
- } catch (TargetLostException e) {
- InstructionHandle[] targets = e.getTargets();
- for (int i = 0; i < targets.length; i++) {
- InstructionTargeter[] targeters = targets[i].getTargeters();
- for (int j = 0; j < targeters.length; j++) {
- targeters[j].updateTarget(targets[i], next);
- }
- }
- }
- }
- }
- }
- }
-
-
- /**
- * Set maximum number of local variables.
- */
- public void setMaxLocals( int m ) {
- max_locals = m;
- }
-
-
- public int getMaxLocals() {
- return max_locals;
- }
-
-
- /**
- * Set maximum stack size for this method.
- */
- public void setMaxStack( int m ) {
- max_stack = m;
- }
-
-
- public int getMaxStack() {
- return max_stack;
- }
-
-
- /** @return class that contains this method
- */
- public String getClassName() {
- return class_name;
- }
-
-
- public void setClassName( String class_name ) {
- this.class_name = class_name;
- }
-
-
- public void setReturnType( Type return_type ) {
- setType(return_type);
- }
-
-
- public Type getReturnType() {
- return getType();
- }
-
-
- public void setArgumentTypes( Type[] arg_types ) {
- this.arg_types = arg_types;
- }
-
-
- public Type[] getArgumentTypes() {
- return (Type[]) arg_types.clone();
- }
-
-
- public void setArgumentType( int i, Type type ) {
- arg_types[i] = type;
- }
-
-
- public Type getArgumentType( int i ) {
- return arg_types[i];
- }
-
-
- public void setArgumentNames( String[] arg_names ) {
- this.arg_names = arg_names;
- }
-
-
- public String[] getArgumentNames() {
- return (String[]) arg_names.clone();
- }
-
-
- public void setArgumentName( int i, String name ) {
- arg_names[i] = name;
- }
-
-
- public String getArgumentName( int i ) {
- return arg_names[i];
- }
-
-
- public InstructionList getInstructionList() {
- return il;
- }
-
-
- public void setInstructionList( InstructionList il ) {
- this.il = il;
- }
-
-
- public String getSignature() {
- return Type.getMethodSignature(type, arg_types);
- }
-
-
- /**
- * Computes max. stack size by performing control flow analysis.
- */
- public void setMaxStack() {
- if (il != null) {
- max_stack = getMaxStack(cp, il, getExceptionHandlers());
- } else {
- max_stack = 0;
- }
- }
-
-
- /**
- * Compute maximum number of local variables.
- */
- public void setMaxLocals() {
- if (il != null) {
- int max = isStatic() ? 0 : 1;
- if (arg_types != null) {
- for (int i = 0; i < arg_types.length; i++) {
- max += arg_types[i].getSize();
- }
- }
- for (InstructionHandle ih = il.getStart(); ih != null; ih = ih.getNext()) {
- Instruction ins = ih.getInstruction();
- if ((ins instanceof LocalVariableInstruction) || (ins instanceof RET)
- || (ins instanceof IINC)) {
- int index = ((IndexedInstruction) ins).getIndex()
- + ((TypedInstruction) ins).getType(cp).getSize();
- if (index > max) {
- max = index;
- }
- }
- }
- max_locals = max;
- } else {
- max_locals = 0;
- }
- }
-
-
- /** Do not/Do produce attributes code attributesLineNumberTable and
- * LocalVariableTable, like javac -O
- */
- public void stripAttributes( boolean flag ) {
- strip_attributes = flag;
- }
-
- static final class BranchTarget {
-
- InstructionHandle target;
- int stackDepth;
-
-
- BranchTarget(InstructionHandle target, int stackDepth) {
- this.target = target;
- this.stackDepth = stackDepth;
- }
- }
-
- static final class BranchStack {
-
- Stack branchTargets = new Stack();
- Hashtable visitedTargets = new Hashtable();
-
-
- public void push( InstructionHandle target, int stackDepth ) {
- if (visited(target)) {
- return;
- }
- branchTargets.push(visit(target, stackDepth));
- }
-
-
- public BranchTarget pop() {
- if (!branchTargets.empty()) {
- BranchTarget bt = (BranchTarget) branchTargets.pop();
- return bt;
- }
- return null;
- }
-
-
- private final BranchTarget visit( InstructionHandle target, int stackDepth ) {
- BranchTarget bt = new BranchTarget(target, stackDepth);
- visitedTargets.put(target, bt);
- return bt;
- }
-
-
- private final boolean visited( InstructionHandle target ) {
- return (visitedTargets.get(target) != null);
- }
- }
-
-
- /**
- * Computes stack usage of an instruction list by performing control flow analysis.
- *
- * @return maximum stack depth used by method
- */
- public static int getMaxStack( ConstantPoolGen cp, InstructionList il, CodeExceptionGen[] et ) {
- BranchStack branchTargets = new BranchStack();
- /* Initially, populate the branch stack with the exception
- * handlers, because these aren't (necessarily) branched to
- * explicitly. in each case, the stack will have depth 1,
- * containing the exception object.
- */
- for (int i = 0; i < et.length; i++) {
- InstructionHandle handler_pc = et[i].getHandlerPC();
- if (handler_pc != null) {
- branchTargets.push(handler_pc, 1);
- }
- }
- int stackDepth = 0, maxStackDepth = 0;
- InstructionHandle ih = il.getStart();
- while (ih != null) {
- Instruction instruction = ih.getInstruction();
- short opcode = instruction.getOpcode();
- int delta = instruction.produceStack(cp) - instruction.consumeStack(cp);
- stackDepth += delta;
- if (stackDepth > maxStackDepth) {
- maxStackDepth = stackDepth;
- }
- // choose the next instruction based on whether current is a branch.
- if (instruction instanceof BranchInstruction) {
- BranchInstruction branch = (BranchInstruction) instruction;
- if (instruction instanceof Select) {
- // explore all of the select's targets. the default target is handled below.
- Select select = (Select) branch;
- InstructionHandle[] targets = select.getTargets();
- for (int i = 0; i < targets.length; i++) {
- branchTargets.push(targets[i], stackDepth);
- }
- // nothing to fall through to.
- ih = null;
- } else if (!(branch instanceof IfInstruction)) {
- // if an instruction that comes back to following PC,
- // push next instruction, with stack depth reduced by 1.
- if (opcode == Constants.JSR || opcode == Constants.JSR_W) {
- branchTargets.push(ih.getNext(), stackDepth - 1);
- }
- ih = null;
- }
- // for all branches, the target of the branch is pushed on the branch stack.
- // conditional branches have a fall through case, selects don't, and
- // jsr/jsr_w return to the next instruction.
- branchTargets.push(branch.getTarget(), stackDepth);
- } else {
- // check for instructions that terminate the method.
- if (opcode == Constants.ATHROW || opcode == Constants.RET
- || (opcode >= Constants.IRETURN && opcode <= Constants.RETURN)) {
- ih = null;
- }
- }
- // normal case, go to the next instruction.
- if (ih != null) {
- ih = ih.getNext();
- }
- // if we have no more instructions, see if there are any deferred branches to explore.
- if (ih == null) {
- BranchTarget bt = branchTargets.pop();
- if (bt != null) {
- ih = bt.target;
- stackDepth = bt.stackDepth;
- }
- }
- }
- return maxStackDepth;
- }
-
- private List observers;
-
-
- /** Add observer for this object.
- */
- public void addObserver( MethodObserver o ) {
- if (observers == null) {
- observers = new ArrayList();
- }
- observers.add(o);
- }
-
-
- /** Remove observer for this object.
- */
- public void removeObserver( MethodObserver o ) {
- if (observers != null) {
- observers.remove(o);
- }
- }
-
-
- /** Call notify() method on all observers. This method is not called
- * automatically whenever the state has changed, but has to be
- * called by the user after he has finished editing the object.
- */
- public void update() {
- if (observers != null) {
- for (Iterator e = observers.iterator(); e.hasNext();) {
- ((MethodObserver) e.next()).notify(this);
- }
- }
- }
-
-
- /**
- * Return string representation close to declaration format,
- * `public static void main(String[]) throws IOException', e.g.
- *
- * @return String representation of the method.
- */
- public final String toString() {
- String access = Utility.accessToString(access_flags);
- String signature = Type.getMethodSignature(type, arg_types);
- signature = Utility.methodSignatureToString(signature, name, access, true,
- getLocalVariableTable(cp));
- StringBuilder buf = new StringBuilder(signature);
- if (throws_vec.size() > 0) {
- for (Iterator e = throws_vec.iterator(); e.hasNext();) {
- buf.append("\n\t\tthrows ").append(e.next());
- }
- }
- return buf.toString();
- }
-
-
- /** @return deep copy of this method
- */
- public MethodGen copy( String class_name, ConstantPoolGen cp ) {
- Method m = ((MethodGen) clone()).getMethod();
- MethodGen mg = new MethodGen(m, class_name, this.cp);
- if (this.cp != cp) {
- mg.setConstantPool(cp);
- mg.getInstructionList().replaceConstantPool(this.cp, cp);
- }
- return mg;
- }
-
-
- /**
- * @return Comparison strategy object
- */
- public static BCELComparator getComparator() {
- return _cmp;
- }
-
-
- /**
- * @param comparator Comparison strategy object
- */
- public static void setComparator( BCELComparator comparator ) {
- _cmp = comparator;
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default two MethodGen objects are said to be equal when
- * their names and signatures are equal.
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals( Object obj ) {
- return _cmp.equals(this, obj);
- }
-
-
- /**
- * Return value as defined by given BCELComparator strategy.
- * By default return the hashcode of the method's name XOR signature.
- *
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return _cmp.hashCode(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Stack;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.Attribute;
+import org.apache.bcel5_2_0.classfile.Code;
+import org.apache.bcel5_2_0.classfile.CodeException;
+import org.apache.bcel5_2_0.classfile.ExceptionTable;
+import org.apache.bcel5_2_0.classfile.LineNumber;
+import org.apache.bcel5_2_0.classfile.LineNumberTable;
+import org.apache.bcel5_2_0.classfile.LocalVariable;
+import org.apache.bcel5_2_0.classfile.LocalVariableTable;
+import org.apache.bcel5_2_0.classfile.Method;
+import org.apache.bcel5_2_0.classfile.Utility;
+import org.apache.bcel5_2_0.util.BCELComparator;
+
+/**
+ * Template class for building up a method. This is done by defining exception
+ * handlers, adding thrown exceptions, local variables and attributes, whereas
+ * the `LocalVariableTable' and `LineNumberTable' attributes will be set
+ * automatically for the code. Use stripAttributes() if you don't like this.
+ *
+ * While generating code it may be necessary to insert NOP operations. You can
+ * use the `removeNOPs' method to get rid off them.
+ * The resulting method object can be obtained via the `getMethod()' method.
+ *
+ * @version $Id: MethodGen.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @author Patrick C. Beard [setMaxStack()]
+ * @see InstructionList
+ * @see Method
+ */
+public class MethodGen extends FieldGenOrMethodGen {
+
+ private String class_name;
+ private Type[] arg_types;
+ private String[] arg_names;
+ private int max_locals;
+ private int max_stack;
+ private InstructionList il;
+ private boolean strip_attributes;
+ private List variable_vec = new ArrayList();
+ private List line_number_vec = new ArrayList();
+ private List exception_vec = new ArrayList();
+ private List throws_vec = new ArrayList();
+ private List code_attrs_vec = new ArrayList();
+ private static BCELComparator _cmp = new BCELComparator() {
+
+ public boolean equals( Object o1, Object o2 ) {
+ MethodGen THIS = (MethodGen) o1;
+ MethodGen THAT = (MethodGen) o2;
+ return THIS.getName().equals(THAT.getName())
+ && THIS.getSignature().equals(THAT.getSignature());
+ }
+
+
+ public int hashCode( Object o ) {
+ MethodGen THIS = (MethodGen) o;
+ return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
+ }
+ };
+
+
+ /**
+ * Declare method. If the method is non-static the constructor
+ * automatically declares a local variable `$this' in slot 0. The
+ * actual code is contained in the `il' parameter, which may further
+ * manipulated by the user. But he must take care not to remove any
+ * instruction (handles) that are still referenced from this object.
+ *
+ * For example one may not add a local variable and later remove the
+ * instructions it refers to without causing havoc. It is safe
+ * however if you remove that local variable, too.
+ *
+ * @param access_flags access qualifiers
+ * @param return_type method type
+ * @param arg_types argument types
+ * @param arg_names argument names (if this is null, default names will be provided
+ * for them)
+ * @param method_name name of method
+ * @param class_name class name containing this method (may be null, if you don't care)
+ * @param il instruction list associated with this method, may be null only for
+ * abstract or native methods
+ * @param cp constant pool
+ */
+ public MethodGen(int access_flags, Type return_type, Type[] arg_types, String[] arg_names,
+ String method_name, String class_name, InstructionList il, ConstantPoolGen cp) {
+ setAccessFlags(access_flags);
+ setType(return_type);
+ setArgumentTypes(arg_types);
+ setArgumentNames(arg_names);
+ setName(method_name);
+ setClassName(class_name);
+ setInstructionList(il);
+ setConstantPool(cp);
+ boolean abstract_ = isAbstract() || isNative();
+ InstructionHandle start = null;
+ InstructionHandle end = null;
+ if (!abstract_) {
+ start = il.getStart();
+ end = il.getEnd();
+ /* Add local variables, namely the implicit `this' and the arguments
+ */
+ if (!isStatic() && (class_name != null)) { // Instance method -> `this' is local var 0
+ addLocalVariable("this", new ObjectType(class_name), start, end);
+ }
+ }
+ if (arg_types != null) {
+ int size = arg_types.length;
+ for (int i = 0; i < size; i++) {
+ if (Type.VOID == arg_types[i]) {
+ throw new ClassGenException("'void' is an illegal argument type for a method");
+ }
+ }
+ if (arg_names != null) { // Names for variables provided?
+ if (size != arg_names.length) {
+ throw new ClassGenException("Mismatch in argument array lengths: " + size
+ + " vs. " + arg_names.length);
+ }
+ } else { // Give them dummy names
+ arg_names = new String[size];
+ for (int i = 0; i < size; i++) {
+ arg_names[i] = "arg" + i;
+ }
+ setArgumentNames(arg_names);
+ }
+ if (!abstract_) {
+ for (int i = 0; i < size; i++) {
+ addLocalVariable(arg_names[i], arg_types[i], start, end);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Instantiate from existing method.
+ *
+ * @param m method
+ * @param class_name class name containing this method
+ * @param cp constant pool
+ */
+ public MethodGen(Method m, String class_name, ConstantPoolGen cp) {
+ this(m.getAccessFlags(), Type.getReturnType(m.getSignature()), Type.getArgumentTypes(m
+ .getSignature()), null /* may be overridden anyway */
+ , m.getName(), class_name,
+ ((m.getAccessFlags() & (Constants.ACC_ABSTRACT | Constants.ACC_NATIVE)) == 0)
+ ? new InstructionList(m.getCode().getCode())
+ : null, cp);
+ Attribute[] attributes = m.getAttributes();
+ for (int i = 0; i < attributes.length; i++) {
+ Attribute a = attributes[i];
+ if (a instanceof Code) {
+ Code c = (Code) a;
+ setMaxStack(c.getMaxStack());
+ setMaxLocals(c.getMaxLocals());
+ CodeException[] ces = c.getExceptionTable();
+ if (ces != null) {
+ for (int j = 0; j < ces.length; j++) {
+ CodeException ce = ces[j];
+ int type = ce.getCatchType();
+ ObjectType c_type = null;
+ if (type > 0) {
+ String cen = m.getConstantPool().getConstantString(type,
+ Constants.CONSTANT_Class);
+ c_type = new ObjectType(cen);
+ }
+ int end_pc = ce.getEndPC();
+ int length = m.getCode().getCode().length;
+ InstructionHandle end;
+ if (length == end_pc) { // May happen, because end_pc is exclusive
+ end = il.getEnd();
+ } else {
+ end = il.findHandle(end_pc);
+ end = end.getPrev(); // Make it inclusive
+ }
+ addExceptionHandler(il.findHandle(ce.getStartPC()), end, il.findHandle(ce
+ .getHandlerPC()), c_type);
+ }
+ }
+ Attribute[] c_attributes = c.getAttributes();
+ for (int j = 0; j < c_attributes.length; j++) {
+ a = c_attributes[j];
+ if (a instanceof LineNumberTable) {
+ LineNumber[] ln = ((LineNumberTable) a).getLineNumberTable();
+ for (int k = 0; k < ln.length; k++) {
+ LineNumber l = ln[k];
+ InstructionHandle ih = il.findHandle(l.getStartPC());
+ if (ih != null) {
+ addLineNumber(ih, l.getLineNumber());
+ }
+ }
+ } else if (a instanceof LocalVariableTable) {
+ LocalVariable[] lv = ((LocalVariableTable) a).getLocalVariableTable();
+ removeLocalVariables();
+ for (int k = 0; k < lv.length; k++) {
+ LocalVariable l = lv[k];
+ InstructionHandle start = il.findHandle(l.getStartPC());
+ InstructionHandle end = il.findHandle(l.getStartPC() + l.getLength());
+ // Repair malformed handles
+ if (null == start) {
+ start = il.getStart();
+ }
+ if (null == end) {
+ end = il.getEnd();
+ }
+ addLocalVariable(l.getName(), Type.getType(l.getSignature()), l
+ .getIndex(), start, end);
+ }
+ } else {
+ addCodeAttribute(a);
+ }
+ }
+ } else if (a instanceof ExceptionTable) {
+ String[] names = ((ExceptionTable) a).getExceptionNames();
+ for (int j = 0; j < names.length; j++) {
+ addException(names[j]);
+ }
+ } else {
+ addAttribute(a);
+ }
+ }
+ }
+
+
+ /**
+ * Adds a local variable to this method.
+ *
+ * @param name variable name
+ * @param type variable type
+ * @param slot the index of the local variable, if type is long or double, the next available
+ * index is slot+2
+ * @param start from where the variable is valid
+ * @param end until where the variable is valid
+ * @return new local variable object
+ * @see LocalVariable
+ */
+ public LocalVariableGen addLocalVariable( String name, Type type, int slot,
+ InstructionHandle start, InstructionHandle end ) {
+ byte t = type.getType();
+ if (t != Constants.T_ADDRESS) {
+ int add = type.getSize();
+ if (slot + add > max_locals) {
+ max_locals = slot + add;
+ }
+ LocalVariableGen l = new LocalVariableGen(slot, name, type, start, end);
+ int i;
+ if ((i = variable_vec.indexOf(l)) >= 0) {
+ variable_vec.set(i, l);
+ } else {
+ variable_vec.add(l);
+ }
+ return l;
+ } else {
+ throw new IllegalArgumentException("Can not use " + type
+ + " as type for local variable");
+ }
+ }
+
+
+ /**
+ * Adds a local variable to this method and assigns an index automatically.
+ *
+ * @param name variable name
+ * @param type variable type
+ * @param start from where the variable is valid, if this is null,
+ * it is valid from the start
+ * @param end until where the variable is valid, if this is null,
+ * it is valid to the end
+ * @return new local variable object
+ * @see LocalVariable
+ */
+ public LocalVariableGen addLocalVariable( String name, Type type, InstructionHandle start,
+ InstructionHandle end ) {
+ return addLocalVariable(name, type, max_locals, start, end);
+ }
+
+
+ /**
+ * Remove a local variable, its slot will not be reused, if you do not use addLocalVariable
+ * with an explicit index argument.
+ */
+ public void removeLocalVariable( LocalVariableGen l ) {
+ variable_vec.remove(l);
+ }
+
+
+ /**
+ * Remove all local variables.
+ */
+ public void removeLocalVariables() {
+ variable_vec.clear();
+ }
+
+
+ /**
+ * Sort local variables by index
+ */
+ private static final void sort( LocalVariableGen[] vars, int l, int r ) {
+ int i = l, j = r;
+ int m = vars[(l + r) / 2].getIndex();
+ LocalVariableGen h;
+ do {
+ while (vars[i].getIndex() < m) {
+ i++;
+ }
+ while (m < vars[j].getIndex()) {
+ j--;
+ }
+ if (i <= j) {
+ h = vars[i];
+ vars[i] = vars[j];
+ vars[j] = h; // Swap elements
+ i++;
+ j--;
+ }
+ } while (i <= j);
+ if (l < j) {
+ sort(vars, l, j);
+ }
+ if (i < r) {
+ sort(vars, i, r);
+ }
+ }
+
+
+ /*
+ * If the range of the variable has not been set yet, it will be set to be valid from
+ * the start to the end of the instruction list.
+ *
+ * @return array of declared local variables sorted by index
+ */
+ public LocalVariableGen[] getLocalVariables() {
+ int size = variable_vec.size();
+ LocalVariableGen[] lg = new LocalVariableGen[size];
+ variable_vec.toArray(lg);
+ for (int i = 0; i < size; i++) {
+ if (lg[i].getStart() == null) {
+ lg[i].setStart(il.getStart());
+ }
+ if (lg[i].getEnd() == null) {
+ lg[i].setEnd(il.getEnd());
+ }
+ }
+ if (size > 1) {
+ sort(lg, 0, size - 1);
+ }
+ return lg;
+ }
+
+
+ /**
+ * @return `LocalVariableTable' attribute of all the local variables of this method.
+ */
+ public LocalVariableTable getLocalVariableTable( ConstantPoolGen cp ) {
+ LocalVariableGen[] lg = getLocalVariables();
+ int size = lg.length;
+ LocalVariable[] lv = new LocalVariable[size];
+ for (int i = 0; i < size; i++) {
+ lv[i] = lg[i].getLocalVariable(cp);
+ }
+ return new LocalVariableTable(cp.addUtf8("LocalVariableTable"), 2 + lv.length * 10, lv, cp
+ .getConstantPool());
+ }
+
+
+ /**
+ * Give an instruction a line number corresponding to the source code line.
+ *
+ * @param ih instruction to tag
+ * @return new line number object
+ * @see LineNumber
+ */
+ public LineNumberGen addLineNumber( InstructionHandle ih, int src_line ) {
+ LineNumberGen l = new LineNumberGen(ih, src_line);
+ line_number_vec.add(l);
+ return l;
+ }
+
+
+ /**
+ * Remove a line number.
+ */
+ public void removeLineNumber( LineNumberGen l ) {
+ line_number_vec.remove(l);
+ }
+
+
+ /**
+ * Remove all line numbers.
+ */
+ public void removeLineNumbers() {
+ line_number_vec.clear();
+ }
+
+
+ /*
+ * @return array of line numbers
+ */
+ public LineNumberGen[] getLineNumbers() {
+ LineNumberGen[] lg = new LineNumberGen[line_number_vec.size()];
+ line_number_vec.toArray(lg);
+ return lg;
+ }
+
+
+ /**
+ * @return `LineNumberTable' attribute of all the local variables of this method.
+ */
+ public LineNumberTable getLineNumberTable( ConstantPoolGen cp ) {
+ int size = line_number_vec.size();
+ LineNumber[] ln = new LineNumber[size];
+ try {
+ for (int i = 0; i < size; i++) {
+ ln[i] = ((LineNumberGen) line_number_vec.get(i)).getLineNumber();
+ }
+ } catch (ArrayIndexOutOfBoundsException e) {
+ } // Never occurs
+ return new LineNumberTable(cp.addUtf8("LineNumberTable"), 2 + ln.length * 4, ln, cp
+ .getConstantPool());
+ }
+
+
+ /**
+ * Add an exception handler, i.e., specify region where a handler is active and an
+ * instruction where the actual handling is done.
+ *
+ * @param start_pc Start of region (inclusive)
+ * @param end_pc End of region (inclusive)
+ * @param handler_pc Where handling is done
+ * @param catch_type class type of handled exception or null if any
+ * exception is handled
+ * @return new exception handler object
+ */
+ public CodeExceptionGen addExceptionHandler( InstructionHandle start_pc,
+ InstructionHandle end_pc, InstructionHandle handler_pc, ObjectType catch_type ) {
+ if ((start_pc == null) || (end_pc == null) || (handler_pc == null)) {
+ throw new ClassGenException("Exception handler target is null instruction");
+ }
+ CodeExceptionGen c = new CodeExceptionGen(start_pc, end_pc, handler_pc, catch_type);
+ exception_vec.add(c);
+ return c;
+ }
+
+
+ /**
+ * Remove an exception handler.
+ */
+ public void removeExceptionHandler( CodeExceptionGen c ) {
+ exception_vec.remove(c);
+ }
+
+
+ /**
+ * Remove all line numbers.
+ */
+ public void removeExceptionHandlers() {
+ exception_vec.clear();
+ }
+
+
+ /*
+ * @return array of declared exception handlers
+ */
+ public CodeExceptionGen[] getExceptionHandlers() {
+ CodeExceptionGen[] cg = new CodeExceptionGen[exception_vec.size()];
+ exception_vec.toArray(cg);
+ return cg;
+ }
+
+
+ /**
+ * @return code exceptions for `Code' attribute
+ */
+ private CodeException[] getCodeExceptions() {
+ int size = exception_vec.size();
+ CodeException[] c_exc = new CodeException[size];
+ try {
+ for (int i = 0; i < size; i++) {
+ CodeExceptionGen c = (CodeExceptionGen) exception_vec.get(i);
+ c_exc[i] = c.getCodeException(cp);
+ }
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ return c_exc;
+ }
+
+
+ /**
+ * Add an exception possibly thrown by this method.
+ *
+ * @param class_name (fully qualified) name of exception
+ */
+ public void addException( String class_name ) {
+ throws_vec.add(class_name);
+ }
+
+
+ /**
+ * Remove an exception.
+ */
+ public void removeException( String c ) {
+ throws_vec.remove(c);
+ }
+
+
+ /**
+ * Remove all exceptions.
+ */
+ public void removeExceptions() {
+ throws_vec.clear();
+ }
+
+
+ /*
+ * @return array of thrown exceptions
+ */
+ public String[] getExceptions() {
+ String[] e = new String[throws_vec.size()];
+ throws_vec.toArray(e);
+ return e;
+ }
+
+
+ /**
+ * @return `Exceptions' attribute of all the exceptions thrown by this method.
+ */
+ private ExceptionTable getExceptionTable( ConstantPoolGen cp ) {
+ int size = throws_vec.size();
+ int[] ex = new int[size];
+ try {
+ for (int i = 0; i < size; i++) {
+ ex[i] = cp.addClass((String) throws_vec.get(i));
+ }
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ return new ExceptionTable(cp.addUtf8("Exceptions"), 2 + 2 * size, ex, cp.getConstantPool());
+ }
+
+
+ /**
+ * Add an attribute to the code. Currently, the JVM knows about the
+ * LineNumberTable, LocalVariableTable and StackMap attributes,
+ * where the former two will be generated automatically and the
+ * latter is used for the MIDP only. Other attributes will be
+ * ignored by the JVM but do no harm.
+ *
+ * @param a attribute to be added
+ */
+ public void addCodeAttribute( Attribute a ) {
+ code_attrs_vec.add(a);
+ }
+
+
+ /**
+ * Remove a code attribute.
+ */
+ public void removeCodeAttribute( Attribute a ) {
+ code_attrs_vec.remove(a);
+ }
+
+
+ /**
+ * Remove all code attributes.
+ */
+ public void removeCodeAttributes() {
+ code_attrs_vec.clear();
+ }
+
+
+ /**
+ * @return all attributes of this method.
+ */
+ public Attribute[] getCodeAttributes() {
+ Attribute[] attributes = new Attribute[code_attrs_vec.size()];
+ code_attrs_vec.toArray(attributes);
+ return attributes;
+ }
+
+
+ /**
+ * Get method object. Never forget to call setMaxStack() or setMaxStack(max), respectively,
+ * before calling this method (the same applies for max locals).
+ *
+ * @return method object
+ */
+ public Method getMethod() {
+ String signature = getSignature();
+ int name_index = cp.addUtf8(name);
+ int signature_index = cp.addUtf8(signature);
+ /* Also updates positions of instructions, i.e., their indices
+ */
+ byte[] byte_code = null;
+ if (il != null) {
+ byte_code = il.getByteCode();
+ }
+ LineNumberTable lnt = null;
+ LocalVariableTable lvt = null;
+ /* Create LocalVariableTable and LineNumberTable attributes (for debuggers, e.g.)
+ */
+ if ((variable_vec.size() > 0) && !strip_attributes) {
+ addCodeAttribute(lvt = getLocalVariableTable(cp));
+ }
+ if ((line_number_vec.size() > 0) && !strip_attributes) {
+ addCodeAttribute(lnt = getLineNumberTable(cp));
+ }
+ Attribute[] code_attrs = getCodeAttributes();
+ /* Each attribute causes 6 additional header bytes
+ */
+ int attrs_len = 0;
+ for (int i = 0; i < code_attrs.length; i++) {
+ attrs_len += (code_attrs[i].getLength() + 6);
+ }
+ CodeException[] c_exc = getCodeExceptions();
+ int exc_len = c_exc.length * 8; // Every entry takes 8 bytes
+ Code code = null;
+ if ((il != null) && !isAbstract() && !isNative()) {
+ // Remove any stale code attribute
+ Attribute[] attributes = getAttributes();
+ for (int i = 0; i < attributes.length; i++) {
+ Attribute a = attributes[i];
+ if (a instanceof Code) {
+ removeAttribute(a);
+ }
+ }
+ code = new Code(cp.addUtf8("Code"), 8 + byte_code.length + // prologue byte code
+ 2 + exc_len + // exceptions
+ 2 + attrs_len, // attributes
+ max_stack, max_locals, byte_code, c_exc, code_attrs, cp.getConstantPool());
+ addAttribute(code);
+ }
+ ExceptionTable et = null;
+ if (throws_vec.size() > 0) {
+ addAttribute(et = getExceptionTable(cp));
+ // Add `Exceptions' if there are "throws" clauses
+ }
+ Method m = new Method(access_flags, name_index, signature_index, getAttributes(), cp
+ .getConstantPool());
+ // Undo effects of adding attributes
+ if (lvt != null) {
+ removeCodeAttribute(lvt);
+ }
+ if (lnt != null) {
+ removeCodeAttribute(lnt);
+ }
+ if (code != null) {
+ removeAttribute(code);
+ }
+ if (et != null) {
+ removeAttribute(et);
+ }
+ return m;
+ }
+
+
+ /**
+ * Remove all NOPs from the instruction list (if possible) and update every
+ * object refering to them, i.e., branch instructions, local variables and
+ * exception handlers.
+ */
+ public void removeNOPs() {
+ if (il != null) {
+ InstructionHandle next;
+ /* Check branch instructions.
+ */
+ for (InstructionHandle ih = il.getStart(); ih != null; ih = next) {
+ next = ih.next;
+ if ((next != null) && (ih.getInstruction() instanceof NOP)) {
+ try {
+ il.delete(ih);
+ } catch (TargetLostException e) {
+ InstructionHandle[] targets = e.getTargets();
+ for (int i = 0; i < targets.length; i++) {
+ InstructionTargeter[] targeters = targets[i].getTargeters();
+ for (int j = 0; j < targeters.length; j++) {
+ targeters[j].updateTarget(targets[i], next);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Set maximum number of local variables.
+ */
+ public void setMaxLocals( int m ) {
+ max_locals = m;
+ }
+
+
+ public int getMaxLocals() {
+ return max_locals;
+ }
+
+
+ /**
+ * Set maximum stack size for this method.
+ */
+ public void setMaxStack( int m ) {
+ max_stack = m;
+ }
+
+
+ public int getMaxStack() {
+ return max_stack;
+ }
+
+
+ /** @return class that contains this method
+ */
+ public String getClassName() {
+ return class_name;
+ }
+
+
+ public void setClassName( String class_name ) {
+ this.class_name = class_name;
+ }
+
+
+ public void setReturnType( Type return_type ) {
+ setType(return_type);
+ }
+
+
+ public Type getReturnType() {
+ return getType();
+ }
+
+
+ public void setArgumentTypes( Type[] arg_types ) {
+ this.arg_types = arg_types;
+ }
+
+
+ public Type[] getArgumentTypes() {
+ return (Type[]) arg_types.clone();
+ }
+
+
+ public void setArgumentType( int i, Type type ) {
+ arg_types[i] = type;
+ }
+
+
+ public Type getArgumentType( int i ) {
+ return arg_types[i];
+ }
+
+
+ public void setArgumentNames( String[] arg_names ) {
+ this.arg_names = arg_names;
+ }
+
+
+ public String[] getArgumentNames() {
+ return (String[]) arg_names.clone();
+ }
+
+
+ public void setArgumentName( int i, String name ) {
+ arg_names[i] = name;
+ }
+
+
+ public String getArgumentName( int i ) {
+ return arg_names[i];
+ }
+
+
+ public InstructionList getInstructionList() {
+ return il;
+ }
+
+
+ public void setInstructionList( InstructionList il ) {
+ this.il = il;
+ }
+
+
+ public String getSignature() {
+ return Type.getMethodSignature(type, arg_types);
+ }
+
+
+ /**
+ * Computes max. stack size by performing control flow analysis.
+ */
+ public void setMaxStack() {
+ if (il != null) {
+ max_stack = getMaxStack(cp, il, getExceptionHandlers());
+ } else {
+ max_stack = 0;
+ }
+ }
+
+
+ /**
+ * Compute maximum number of local variables.
+ */
+ public void setMaxLocals() {
+ if (il != null) {
+ int max = isStatic() ? 0 : 1;
+ if (arg_types != null) {
+ for (int i = 0; i < arg_types.length; i++) {
+ max += arg_types[i].getSize();
+ }
+ }
+ for (InstructionHandle ih = il.getStart(); ih != null; ih = ih.getNext()) {
+ Instruction ins = ih.getInstruction();
+ if ((ins instanceof LocalVariableInstruction) || (ins instanceof RET)
+ || (ins instanceof IINC)) {
+ int index = ((IndexedInstruction) ins).getIndex()
+ + ((TypedInstruction) ins).getType(cp).getSize();
+ if (index > max) {
+ max = index;
+ }
+ }
+ }
+ max_locals = max;
+ } else {
+ max_locals = 0;
+ }
+ }
+
+
+ /** Do not/Do produce attributes code attributesLineNumberTable and
+ * LocalVariableTable, like javac -O
+ */
+ public void stripAttributes( boolean flag ) {
+ strip_attributes = flag;
+ }
+
+ static final class BranchTarget {
+
+ InstructionHandle target;
+ int stackDepth;
+
+
+ BranchTarget(InstructionHandle target, int stackDepth) {
+ this.target = target;
+ this.stackDepth = stackDepth;
+ }
+ }
+
+ static final class BranchStack {
+
+ Stack branchTargets = new Stack();
+ Hashtable visitedTargets = new Hashtable();
+
+
+ public void push( InstructionHandle target, int stackDepth ) {
+ if (visited(target)) {
+ return;
+ }
+ branchTargets.push(visit(target, stackDepth));
+ }
+
+
+ public BranchTarget pop() {
+ if (!branchTargets.empty()) {
+ BranchTarget bt = (BranchTarget) branchTargets.pop();
+ return bt;
+ }
+ return null;
+ }
+
+
+ private final BranchTarget visit( InstructionHandle target, int stackDepth ) {
+ BranchTarget bt = new BranchTarget(target, stackDepth);
+ visitedTargets.put(target, bt);
+ return bt;
+ }
+
+
+ private final boolean visited( InstructionHandle target ) {
+ return (visitedTargets.get(target) != null);
+ }
+ }
+
+
+ /**
+ * Computes stack usage of an instruction list by performing control flow analysis.
+ *
+ * @return maximum stack depth used by method
+ */
+ public static int getMaxStack( ConstantPoolGen cp, InstructionList il, CodeExceptionGen[] et ) {
+ BranchStack branchTargets = new BranchStack();
+ /* Initially, populate the branch stack with the exception
+ * handlers, because these aren't (necessarily) branched to
+ * explicitly. in each case, the stack will have depth 1,
+ * containing the exception object.
+ */
+ for (int i = 0; i < et.length; i++) {
+ InstructionHandle handler_pc = et[i].getHandlerPC();
+ if (handler_pc != null) {
+ branchTargets.push(handler_pc, 1);
+ }
+ }
+ int stackDepth = 0, maxStackDepth = 0;
+ InstructionHandle ih = il.getStart();
+ while (ih != null) {
+ Instruction instruction = ih.getInstruction();
+ short opcode = instruction.getOpcode();
+ int delta = instruction.produceStack(cp) - instruction.consumeStack(cp);
+ stackDepth += delta;
+ if (stackDepth > maxStackDepth) {
+ maxStackDepth = stackDepth;
+ }
+ // choose the next instruction based on whether current is a branch.
+ if (instruction instanceof BranchInstruction) {
+ BranchInstruction branch = (BranchInstruction) instruction;
+ if (instruction instanceof Select) {
+ // explore all of the select's targets. the default target is handled below.
+ Select select = (Select) branch;
+ InstructionHandle[] targets = select.getTargets();
+ for (int i = 0; i < targets.length; i++) {
+ branchTargets.push(targets[i], stackDepth);
+ }
+ // nothing to fall through to.
+ ih = null;
+ } else if (!(branch instanceof IfInstruction)) {
+ // if an instruction that comes back to following PC,
+ // push next instruction, with stack depth reduced by 1.
+ if (opcode == Constants.JSR || opcode == Constants.JSR_W) {
+ branchTargets.push(ih.getNext(), stackDepth - 1);
+ }
+ ih = null;
+ }
+ // for all branches, the target of the branch is pushed on the branch stack.
+ // conditional branches have a fall through case, selects don't, and
+ // jsr/jsr_w return to the next instruction.
+ branchTargets.push(branch.getTarget(), stackDepth);
+ } else {
+ // check for instructions that terminate the method.
+ if (opcode == Constants.ATHROW || opcode == Constants.RET
+ || (opcode >= Constants.IRETURN && opcode <= Constants.RETURN)) {
+ ih = null;
+ }
+ }
+ // normal case, go to the next instruction.
+ if (ih != null) {
+ ih = ih.getNext();
+ }
+ // if we have no more instructions, see if there are any deferred branches to explore.
+ if (ih == null) {
+ BranchTarget bt = branchTargets.pop();
+ if (bt != null) {
+ ih = bt.target;
+ stackDepth = bt.stackDepth;
+ }
+ }
+ }
+ return maxStackDepth;
+ }
+
+ private List observers;
+
+
+ /** Add observer for this object.
+ */
+ public void addObserver( MethodObserver o ) {
+ if (observers == null) {
+ observers = new ArrayList();
+ }
+ observers.add(o);
+ }
+
+
+ /** Remove observer for this object.
+ */
+ public void removeObserver( MethodObserver o ) {
+ if (observers != null) {
+ observers.remove(o);
+ }
+ }
+
+
+ /** Call notify() method on all observers. This method is not called
+ * automatically whenever the state has changed, but has to be
+ * called by the user after he has finished editing the object.
+ */
+ public void update() {
+ if (observers != null) {
+ for (Iterator e = observers.iterator(); e.hasNext();) {
+ ((MethodObserver) e.next()).notify(this);
+ }
+ }
+ }
+
+
+ /**
+ * Return string representation close to declaration format,
+ * `public static void main(String[]) throws IOException', e.g.
+ *
+ * @return String representation of the method.
+ */
+ public final String toString() {
+ String access = Utility.accessToString(access_flags);
+ String signature = Type.getMethodSignature(type, arg_types);
+ signature = Utility.methodSignatureToString(signature, name, access, true,
+ getLocalVariableTable(cp));
+ StringBuilder buf = new StringBuilder(signature);
+ if (throws_vec.size() > 0) {
+ for (Iterator e = throws_vec.iterator(); e.hasNext();) {
+ buf.append("\n\t\tthrows ").append(e.next());
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /** @return deep copy of this method
+ */
+ public MethodGen copy( String class_name, ConstantPoolGen cp ) {
+ Method m = ((MethodGen) clone()).getMethod();
+ MethodGen mg = new MethodGen(m, class_name, this.cp);
+ if (this.cp != cp) {
+ mg.setConstantPool(cp);
+ mg.getInstructionList().replaceConstantPool(this.cp, cp);
+ }
+ return mg;
+ }
+
+
+ /**
+ * @return Comparison strategy object
+ */
+ public static BCELComparator getComparator() {
+ return _cmp;
+ }
+
+
+ /**
+ * @param comparator Comparison strategy object
+ */
+ public static void setComparator( BCELComparator comparator ) {
+ _cmp = comparator;
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default two MethodGen objects are said to be equal when
+ * their names and signatures are equal.
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object obj ) {
+ return _cmp.equals(this, obj);
+ }
+
+
+ /**
+ * Return value as defined by given BCELComparator strategy.
+ * By default return the hashcode of the method's name XOR signature.
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return _cmp.hashCode(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodObserver.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodObserver.java
index c224727b..b0725db6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodObserver.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/MethodObserver.java
@@ -1,29 +1,29 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Implement this interface if you're interested in changes to a MethodGen object
- * and register yourself with addObserver().
- *
- * @version $Id: MethodObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface MethodObserver {
-
- public void notify( MethodGen method );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Implement this interface if you're interested in changes to a MethodGen object
+ * and register yourself with addObserver().
+ *
+ * @version $Id: MethodObserver.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface MethodObserver {
+
+ public void notify( MethodGen method );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEW.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEW.java
index 375ac406..db7f3f15 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEW.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEW.java
@@ -1,76 +1,76 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * NEW - Create new object
- * Stack: ... -> ..., objectref
- *
- * @version $Id: NEW.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class NEW extends CPInstruction implements LoadClass, AllocationInstruction,
- ExceptionThrower, StackProducer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- NEW() {
- }
-
-
- public NEW(int index) {
- super(org.apache.bcel5_2_0.Constants.NEW, index);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[2 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length + 1] = ExceptionConstants.INSTANTIATION_ERROR;
- cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.ILLEGAL_ACCESS_ERROR;
- return cs;
- }
-
-
- public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
- return (ObjectType) getType(cpg);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitLoadClass(this);
- v.visitAllocationInstruction(this);
- v.visitExceptionThrower(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitCPInstruction(this);
- v.visitNEW(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * NEW - Create new object
+ * Stack: ... -> ..., objectref
+ *
+ * @version $Id: NEW.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class NEW extends CPInstruction implements LoadClass, AllocationInstruction,
+ ExceptionThrower, StackProducer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ NEW() {
+ }
+
+
+ public NEW(int index) {
+ super(org.apache.bcel5_2_0.Constants.NEW, index);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[2 + ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length + 1] = ExceptionConstants.INSTANTIATION_ERROR;
+ cs[ExceptionConstants.EXCS_CLASS_AND_INTERFACE_RESOLUTION.length] = ExceptionConstants.ILLEGAL_ACCESS_ERROR;
+ return cs;
+ }
+
+
+ public ObjectType getLoadClassType( ConstantPoolGen cpg ) {
+ return (ObjectType) getType(cpg);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitLoadClass(this);
+ v.visitAllocationInstruction(this);
+ v.visitExceptionThrower(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitCPInstruction(this);
+ v.visitNEW(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEWARRAY.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEWARRAY.java
index 997cde61..c895d25e 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEWARRAY.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NEWARRAY.java
@@ -1,121 +1,121 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * NEWARRAY - Create new array of basic type (int, short, ...)
- * Stack: ..., count -> ..., arrayref
- * type must be one of T_INT, T_SHORT, ...
- *
- * @version $Id: NEWARRAY.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class NEWARRAY extends Instruction implements AllocationInstruction, ExceptionThrower,
- StackProducer {
-
- private byte type;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- NEWARRAY() {
- }
-
-
- public NEWARRAY(byte type) {
- super(org.apache.bcel5_2_0.Constants.NEWARRAY, (short) 2);
- this.type = type;
- }
-
-
- public NEWARRAY(BasicType type) {
- this(type.getType());
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode);
- out.writeByte(type);
- }
-
-
- /**
- * @return numeric code for basic element type
- */
- public final byte getTypecode() {
- return type;
- }
-
-
- /**
- * @return type of constructed array
- */
- public final Type getType() {
- return new ArrayType(BasicType.getType(type), 1);
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- return super.toString(verbose) + " " + org.apache.bcel5_2_0.Constants.TYPE_NAMES[type];
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- type = bytes.readByte();
- length = 2;
- }
-
-
- public Class[] getExceptions() {
- return new Class[] {
- org.apache.bcel5_2_0.ExceptionConstants.NEGATIVE_ARRAY_SIZE_EXCEPTION
- };
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitAllocationInstruction(this);
- v.visitExceptionThrower(this);
- v.visitStackProducer(this);
- v.visitNEWARRAY(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * NEWARRAY - Create new array of basic type (int, short, ...)
+ * Stack: ..., count -> ..., arrayref
+ * type must be one of T_INT, T_SHORT, ...
+ *
+ * @version $Id: NEWARRAY.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class NEWARRAY extends Instruction implements AllocationInstruction, ExceptionThrower,
+ StackProducer {
+
+ private byte type;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ NEWARRAY() {
+ }
+
+
+ public NEWARRAY(byte type) {
+ super(org.apache.bcel5_2_0.Constants.NEWARRAY, (short) 2);
+ this.type = type;
+ }
+
+
+ public NEWARRAY(BasicType type) {
+ this(type.getType());
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode);
+ out.writeByte(type);
+ }
+
+
+ /**
+ * @return numeric code for basic element type
+ */
+ public final byte getTypecode() {
+ return type;
+ }
+
+
+ /**
+ * @return type of constructed array
+ */
+ public final Type getType() {
+ return new ArrayType(BasicType.getType(type), 1);
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ return super.toString(verbose) + " " + org.apache.bcel5_2_0.Constants.TYPE_NAMES[type];
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ type = bytes.readByte();
+ length = 2;
+ }
+
+
+ public Class[] getExceptions() {
+ return new Class[] {
+ org.apache.bcel5_2_0.ExceptionConstants.NEGATIVE_ARRAY_SIZE_EXCEPTION
+ };
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitAllocationInstruction(this);
+ v.visitExceptionThrower(this);
+ v.visitStackProducer(this);
+ v.visitNEWARRAY(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NOP.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NOP.java
index 7b07722d..ebcff05b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NOP.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NOP.java
@@ -1,43 +1,43 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * NOP - Do nothing
- *
- * @version $Id: NOP.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class NOP extends Instruction {
-
- public NOP() {
- super(org.apache.bcel5_2_0.Constants.NOP, (short) 1);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitNOP(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * NOP - Do nothing
+ *
+ * @version $Id: NOP.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class NOP extends Instruction {
+
+ public NOP() {
+ super(org.apache.bcel5_2_0.Constants.NOP, (short) 1);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitNOP(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NamedAndTyped.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NamedAndTyped.java
index 58b40af5..ca8b98c0 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NamedAndTyped.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/NamedAndTyped.java
@@ -1,38 +1,38 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denote entity that has both name and type. This is true for local variables,
- * methods and fields.
- *
- * @version $Id: NamedAndTyped.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface NamedAndTyped {
-
- public String getName();
-
-
- public Type getType();
-
-
- public void setName( String name );
-
-
- public void setType( Type type );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denote entity that has both name and type. This is true for local variables,
+ * methods and fields.
+ *
+ * @version $Id: NamedAndTyped.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface NamedAndTyped {
+
+ public String getName();
+
+
+ public Type getType();
+
+
+ public void setName( String name );
+
+
+ public void setType( Type type );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ObjectType.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ObjectType.java
index 476d1cf4..d3d23707 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ObjectType.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ObjectType.java
@@ -1,155 +1,155 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.Repository;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * Denotes reference such as java.lang.String.
- *
- * @version $Id: ObjectType.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ObjectType extends ReferenceType {
-
- private String class_name; // Class name of type
-
-
- /**
- * @param class_name fully qualified class name, e.g. java.lang.String
- */
- public ObjectType(String class_name) {
- super(Constants.T_REFERENCE, "L" + class_name.replace('.', '/') + ";");
- this.class_name = class_name.replace('/', '.');
- }
-
-
- /** @return name of referenced class
- */
- public String getClassName() {
- return class_name;
- }
-
-
- /** @return a hash code value for the object.
- */
- public int hashCode() {
- return class_name.hashCode();
- }
-
-
- /** @return true if both type objects refer to the same class.
- */
- public boolean equals( Object type ) {
- return (type instanceof ObjectType)
- ? ((ObjectType) type).class_name.equals(class_name)
- : false;
- }
-
-
- /**
- * If "this" doesn't reference a class, it references an interface
- * or a non-existant entity.
- * @deprecated this method returns an inaccurate result
- * if the class or interface referenced cannot
- * be found: use referencesClassExact() instead
- */
- public boolean referencesClass() {
- try {
- JavaClass jc = Repository.lookupClass(class_name);
- return jc.isClass();
- } catch (ClassNotFoundException e) {
- return false;
- }
- }
-
-
- /**
- * If "this" doesn't reference an interface, it references a class
- * or a non-existant entity.
- * @deprecated this method returns an inaccurate result
- * if the class or interface referenced cannot
- * be found: use referencesInterfaceExact() instead
- */
- public boolean referencesInterface() {
- try {
- JavaClass jc = Repository.lookupClass(class_name);
- return !jc.isClass();
- } catch (ClassNotFoundException e) {
- return false;
- }
- }
-
-
- /**
- * Return true if this type references a class,
- * false if it references an interface.
- * @return true if the type references a class, false if
- * it references an interface
- * @throws ClassNotFoundException if the class or interface
- * referenced by this type can't be found
- */
- public boolean referencesClassExact() throws ClassNotFoundException {
- JavaClass jc = Repository.lookupClass(class_name);
- return jc.isClass();
- }
-
-
- /**
- * Return true if this type references an interface,
- * false if it references a class.
- * @return true if the type references an interface, false if
- * it references a class
- * @throws ClassNotFoundException if the class or interface
- * referenced by this type can't be found
- */
- public boolean referencesInterfaceExact() throws ClassNotFoundException {
- JavaClass jc = Repository.lookupClass(class_name);
- return !jc.isClass();
- }
-
-
- /**
- * Return true if this type is a subclass of given ObjectType.
- * @throws ClassNotFoundException if any of this class's superclasses
- * can't be found
- */
- public boolean subclassOf( ObjectType superclass ) throws ClassNotFoundException {
- if (this.referencesInterface() || superclass.referencesInterface()) {
- return false;
- }
- return Repository.instanceOf(this.class_name, superclass.class_name);
- }
-
-
- /**
- * Java Virtual Machine Specification edition 2, paragraph 5.4.4 Access Control
- * @throws ClassNotFoundException if the class referenced by this type
- * can't be found
- */
- public boolean accessibleTo( ObjectType accessor ) throws ClassNotFoundException {
- JavaClass jc = Repository.lookupClass(class_name);
- if (jc.isPublic()) {
- return true;
- } else {
- JavaClass acc = Repository.lookupClass(accessor.class_name);
- return acc.getPackageName().equals(jc.getPackageName());
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.Repository;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * Denotes reference such as java.lang.String.
+ *
+ * @version $Id: ObjectType.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ObjectType extends ReferenceType {
+
+ private String class_name; // Class name of type
+
+
+ /**
+ * @param class_name fully qualified class name, e.g. java.lang.String
+ */
+ public ObjectType(String class_name) {
+ super(Constants.T_REFERENCE, "L" + class_name.replace('.', '/') + ";");
+ this.class_name = class_name.replace('/', '.');
+ }
+
+
+ /** @return name of referenced class
+ */
+ public String getClassName() {
+ return class_name;
+ }
+
+
+ /** @return a hash code value for the object.
+ */
+ public int hashCode() {
+ return class_name.hashCode();
+ }
+
+
+ /** @return true if both type objects refer to the same class.
+ */
+ public boolean equals( Object type ) {
+ return (type instanceof ObjectType)
+ ? ((ObjectType) type).class_name.equals(class_name)
+ : false;
+ }
+
+
+ /**
+ * If "this" doesn't reference a class, it references an interface
+ * or a non-existant entity.
+ * @deprecated this method returns an inaccurate result
+ * if the class or interface referenced cannot
+ * be found: use referencesClassExact() instead
+ */
+ public boolean referencesClass() {
+ try {
+ JavaClass jc = Repository.lookupClass(class_name);
+ return jc.isClass();
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
+
+ /**
+ * If "this" doesn't reference an interface, it references a class
+ * or a non-existant entity.
+ * @deprecated this method returns an inaccurate result
+ * if the class or interface referenced cannot
+ * be found: use referencesInterfaceExact() instead
+ */
+ public boolean referencesInterface() {
+ try {
+ JavaClass jc = Repository.lookupClass(class_name);
+ return !jc.isClass();
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
+
+ /**
+ * Return true if this type references a class,
+ * false if it references an interface.
+ * @return true if the type references a class, false if
+ * it references an interface
+ * @throws ClassNotFoundException if the class or interface
+ * referenced by this type can't be found
+ */
+ public boolean referencesClassExact() throws ClassNotFoundException {
+ JavaClass jc = Repository.lookupClass(class_name);
+ return jc.isClass();
+ }
+
+
+ /**
+ * Return true if this type references an interface,
+ * false if it references a class.
+ * @return true if the type references an interface, false if
+ * it references a class
+ * @throws ClassNotFoundException if the class or interface
+ * referenced by this type can't be found
+ */
+ public boolean referencesInterfaceExact() throws ClassNotFoundException {
+ JavaClass jc = Repository.lookupClass(class_name);
+ return !jc.isClass();
+ }
+
+
+ /**
+ * Return true if this type is a subclass of given ObjectType.
+ * @throws ClassNotFoundException if any of this class's superclasses
+ * can't be found
+ */
+ public boolean subclassOf( ObjectType superclass ) throws ClassNotFoundException {
+ if (this.referencesInterface() || superclass.referencesInterface()) {
+ return false;
+ }
+ return Repository.instanceOf(this.class_name, superclass.class_name);
+ }
+
+
+ /**
+ * Java Virtual Machine Specification edition 2, paragraph 5.4.4 Access Control
+ * @throws ClassNotFoundException if the class referenced by this type
+ * can't be found
+ */
+ public boolean accessibleTo( ObjectType accessor ) throws ClassNotFoundException {
+ JavaClass jc = Repository.lookupClass(class_name);
+ if (jc.isPublic()) {
+ return true;
+ } else {
+ JavaClass acc = Repository.lookupClass(accessor.class_name);
+ return acc.getPackageName().equals(jc.getPackageName());
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP.java
index b9eaf898..e36849d7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * POP - Pop top operand stack word
- *
- * Stack: ..., word -> ...
- *
- * @version $Id: POP.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class POP extends StackInstruction implements PopInstruction {
-
- public POP() {
- super(org.apache.bcel5_2_0.Constants.POP);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitPopInstruction(this);
- v.visitStackInstruction(this);
- v.visitPOP(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * POP - Pop top operand stack word
+ *
+ * Stack: ..., word -> ...
+ *
+ * @version $Id: POP.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class POP extends StackInstruction implements PopInstruction {
+
+ public POP() {
+ super(org.apache.bcel5_2_0.Constants.POP);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitPopInstruction(this);
+ v.visitStackInstruction(this);
+ v.visitPOP(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP2.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP2.java
index 36007ef8..49b04af9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP2.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/POP2.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * POP2 - Pop two top operand stack words
- *
- * Stack: ..., word2, word1 -> ...
- *
- * @version $Id: POP2.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class POP2 extends StackInstruction implements PopInstruction {
-
- public POP2() {
- super(org.apache.bcel5_2_0.Constants.POP2);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitPopInstruction(this);
- v.visitStackInstruction(this);
- v.visitPOP2(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * POP2 - Pop two top operand stack words
+ *
+ * Stack: ..., word2, word1 -> ...
+ *
+ * @version $Id: POP2.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class POP2 extends StackInstruction implements PopInstruction {
+
+ public POP2() {
+ super(org.apache.bcel5_2_0.Constants.POP2);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitPopInstruction(this);
+ v.visitStackInstruction(this);
+ v.visitPOP2(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUSH.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUSH.java
index 1fab5546..e50b5db7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUSH.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUSH.java
@@ -1,178 +1,178 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Wrapper class for push operations, which are implemented either as BIPUSH,
- * LDC or xCONST_n instructions.
- *
- * @version $Id: PUSH.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class PUSH implements CompoundInstruction, VariableLengthInstruction,
- InstructionConstants {
-
- private Instruction instruction;
-
-
- /**
- * This constructor also applies for values of type short, char, byte
- *
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, int value) {
- if ((value >= -1) && (value <= 5)) {
- instruction = INSTRUCTIONS[Constants.ICONST_0 + value];
- } else if ((value >= -128) && (value <= 127)) {
- instruction = new BIPUSH((byte) value);
- } else if ((value >= -32768) && (value <= 32767)) {
- instruction = new SIPUSH((short) value);
- } else {
- instruction = new LDC(cp.addInteger(value));
- }
- }
-
-
- /**
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, boolean value) {
- instruction = INSTRUCTIONS[Constants.ICONST_0 + (value ? 1 : 0)];
- }
-
-
- /**
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, float value) {
- if (value == 0.0) {
- instruction = FCONST_0;
- } else if (value == 1.0) {
- instruction = FCONST_1;
- } else if (value == 2.0) {
- instruction = FCONST_2;
- } else {
- instruction = new LDC(cp.addFloat(value));
- }
- }
-
-
- /**
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, long value) {
- if (value == 0) {
- instruction = LCONST_0;
- } else if (value == 1) {
- instruction = LCONST_1;
- } else {
- instruction = new LDC2_W(cp.addLong(value));
- }
- }
-
-
- /**
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, double value) {
- if (value == 0.0) {
- instruction = DCONST_0;
- } else if (value == 1.0) {
- instruction = DCONST_1;
- } else {
- instruction = new LDC2_W(cp.addDouble(value));
- }
- }
-
-
- /**
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, String value) {
- if (value == null) {
- instruction = ACONST_NULL;
- } else {
- instruction = new LDC(cp.addString(value));
- }
- }
-
-
- /**
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, Number value) {
- if ((value instanceof Integer) || (value instanceof Short) || (value instanceof Byte)) {
- instruction = new PUSH(cp, value.intValue()).instruction;
- } else if (value instanceof Double) {
- instruction = new PUSH(cp, value.doubleValue()).instruction;
- } else if (value instanceof Float) {
- instruction = new PUSH(cp, value.floatValue()).instruction;
- } else if (value instanceof Long) {
- instruction = new PUSH(cp, value.longValue()).instruction;
- } else {
- throw new ClassGenException("What's this: " + value);
- }
- }
-
-
- /**
- * creates a push object from a Character value. Warning: Make sure not to attempt to allow
- * autoboxing to create this value parameter, as an alternative constructor will be called
- *
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, Character value) {
- this(cp, value.charValue());
- }
-
-
- /**
- * @param cp Constant pool
- * @param value to be pushed
- */
- public PUSH(ConstantPoolGen cp, Boolean value) {
- this(cp, value.booleanValue());
- }
-
-
- public final InstructionList getInstructionList() {
- return new InstructionList(instruction);
- }
-
-
- public final Instruction getInstruction() {
- return instruction;
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString() {
- return instruction.toString() + " (PUSH)";
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Wrapper class for push operations, which are implemented either as BIPUSH,
+ * LDC or xCONST_n instructions.
+ *
+ * @version $Id: PUSH.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class PUSH implements CompoundInstruction, VariableLengthInstruction,
+ InstructionConstants {
+
+ private Instruction instruction;
+
+
+ /**
+ * This constructor also applies for values of type short, char, byte
+ *
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, int value) {
+ if ((value >= -1) && (value <= 5)) {
+ instruction = INSTRUCTIONS[Constants.ICONST_0 + value];
+ } else if ((value >= -128) && (value <= 127)) {
+ instruction = new BIPUSH((byte) value);
+ } else if ((value >= -32768) && (value <= 32767)) {
+ instruction = new SIPUSH((short) value);
+ } else {
+ instruction = new LDC(cp.addInteger(value));
+ }
+ }
+
+
+ /**
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, boolean value) {
+ instruction = INSTRUCTIONS[Constants.ICONST_0 + (value ? 1 : 0)];
+ }
+
+
+ /**
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, float value) {
+ if (value == 0.0) {
+ instruction = FCONST_0;
+ } else if (value == 1.0) {
+ instruction = FCONST_1;
+ } else if (value == 2.0) {
+ instruction = FCONST_2;
+ } else {
+ instruction = new LDC(cp.addFloat(value));
+ }
+ }
+
+
+ /**
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, long value) {
+ if (value == 0) {
+ instruction = LCONST_0;
+ } else if (value == 1) {
+ instruction = LCONST_1;
+ } else {
+ instruction = new LDC2_W(cp.addLong(value));
+ }
+ }
+
+
+ /**
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, double value) {
+ if (value == 0.0) {
+ instruction = DCONST_0;
+ } else if (value == 1.0) {
+ instruction = DCONST_1;
+ } else {
+ instruction = new LDC2_W(cp.addDouble(value));
+ }
+ }
+
+
+ /**
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, String value) {
+ if (value == null) {
+ instruction = ACONST_NULL;
+ } else {
+ instruction = new LDC(cp.addString(value));
+ }
+ }
+
+
+ /**
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, Number value) {
+ if ((value instanceof Integer) || (value instanceof Short) || (value instanceof Byte)) {
+ instruction = new PUSH(cp, value.intValue()).instruction;
+ } else if (value instanceof Double) {
+ instruction = new PUSH(cp, value.doubleValue()).instruction;
+ } else if (value instanceof Float) {
+ instruction = new PUSH(cp, value.floatValue()).instruction;
+ } else if (value instanceof Long) {
+ instruction = new PUSH(cp, value.longValue()).instruction;
+ } else {
+ throw new ClassGenException("What's this: " + value);
+ }
+ }
+
+
+ /**
+ * creates a push object from a Character value. Warning: Make sure not to attempt to allow
+ * autoboxing to create this value parameter, as an alternative constructor will be called
+ *
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, Character value) {
+ this(cp, value.charValue());
+ }
+
+
+ /**
+ * @param cp Constant pool
+ * @param value to be pushed
+ */
+ public PUSH(ConstantPoolGen cp, Boolean value) {
+ this(cp, value.booleanValue());
+ }
+
+
+ public final InstructionList getInstructionList() {
+ return new InstructionList(instruction);
+ }
+
+
+ public final Instruction getInstruction() {
+ return instruction;
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString() {
+ return instruction.toString() + " (PUSH)";
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTFIELD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTFIELD.java
index 02ff3c18..ffceff5d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTFIELD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTFIELD.java
@@ -1,80 +1,80 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * PUTFIELD - Put field in object
- * Stack: ..., objectref, value -> ...
- * OR
- * Stack: ..., objectref, value.word1, value.word2 -> ...
- *
- * @version $Id: PUTFIELD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class PUTFIELD extends FieldInstruction implements PopInstruction, ExceptionThrower {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- PUTFIELD() {
- }
-
-
- public PUTFIELD(int index) {
- super(Constants.PUTFIELD, index);
- }
-
-
- public int consumeStack( ConstantPoolGen cpg ) {
- return getFieldSize(cpg) + 1;
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[2 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitStackConsumer(this);
- v.visitPopInstruction(this);
- v.visitTypedInstruction(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitFieldInstruction(this);
- v.visitPUTFIELD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * PUTFIELD - Put field in object
+ * Stack: ..., objectref, value -> ...
+ * OR
+ * Stack: ..., objectref, value.word1, value.word2 -> ...
+ *
+ * @version $Id: PUTFIELD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class PUTFIELD extends FieldInstruction implements PopInstruction, ExceptionThrower {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ PUTFIELD() {
+ }
+
+
+ public PUTFIELD(int index) {
+ super(Constants.PUTFIELD, index);
+ }
+
+
+ public int consumeStack( ConstantPoolGen cpg ) {
+ return getFieldSize(cpg) + 1;
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[2 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length + 1] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.NULL_POINTER_EXCEPTION;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitStackConsumer(this);
+ v.visitPopInstruction(this);
+ v.visitTypedInstruction(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitFieldInstruction(this);
+ v.visitPUTFIELD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTSTATIC.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTSTATIC.java
index b6715859..093df625 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTSTATIC.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PUTSTATIC.java
@@ -1,79 +1,79 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * PUTSTATIC - Put static field in class
- * Stack: ..., value -> ...
- * OR
- * Stack: ..., value.word1, value.word2 -> ...
- *
- * @version $Id: PUTSTATIC.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class PUTSTATIC extends FieldInstruction implements ExceptionThrower, PopInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- PUTSTATIC() {
- }
-
-
- public PUTSTATIC(int index) {
- super(Constants.PUTSTATIC, index);
- }
-
-
- public int consumeStack( ConstantPoolGen cpg ) {
- return getFieldSize(cpg);
- }
-
-
- public Class[] getExceptions() {
- Class[] cs = new Class[1 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
- System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
- ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
- cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
- return cs;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitStackConsumer(this);
- v.visitPopInstruction(this);
- v.visitTypedInstruction(this);
- v.visitLoadClass(this);
- v.visitCPInstruction(this);
- v.visitFieldOrMethod(this);
- v.visitFieldInstruction(this);
- v.visitPUTSTATIC(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * PUTSTATIC - Put static field in class
+ * Stack: ..., value -> ...
+ * OR
+ * Stack: ..., value.word1, value.word2 -> ...
+ *
+ * @version $Id: PUTSTATIC.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class PUTSTATIC extends FieldInstruction implements ExceptionThrower, PopInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ PUTSTATIC() {
+ }
+
+
+ public PUTSTATIC(int index) {
+ super(Constants.PUTSTATIC, index);
+ }
+
+
+ public int consumeStack( ConstantPoolGen cpg ) {
+ return getFieldSize(cpg);
+ }
+
+
+ public Class[] getExceptions() {
+ Class[] cs = new Class[1 + ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length];
+ System.arraycopy(ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION, 0, cs, 0,
+ ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length);
+ cs[ExceptionConstants.EXCS_FIELD_AND_METHOD_RESOLUTION.length] = ExceptionConstants.INCOMPATIBLE_CLASS_CHANGE_ERROR;
+ return cs;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitStackConsumer(this);
+ v.visitPopInstruction(this);
+ v.visitTypedInstruction(this);
+ v.visitLoadClass(this);
+ v.visitCPInstruction(this);
+ v.visitFieldOrMethod(this);
+ v.visitFieldInstruction(this);
+ v.visitPUTSTATIC(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PopInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PopInstruction.java
index 46484a81..53111708 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PopInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PopInstruction.java
@@ -1,29 +1,29 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes an unparameterized instruction to pop a value on top from the stack,
- * such as ISTORE, POP, PUTSTATIC.
- *
- * @version $Id: PopInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see ISTORE
- * @see POP
- */
-public interface PopInstruction extends StackConsumer {
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes an unparameterized instruction to pop a value on top from the stack,
+ * such as ISTORE, POP, PUTSTATIC.
+ *
+ * @version $Id: PopInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see ISTORE
+ * @see POP
+ */
+public interface PopInstruction extends StackConsumer {
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PushInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PushInstruction.java
index 03633555..32d201e2 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PushInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/PushInstruction.java
@@ -1,34 +1,34 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes an unparameterized instruction to produce a value on top of the stack,
- * such as ILOAD, LDC, SIPUSH, DUP, ICONST, etc.
- *
- * @version $Id: PushInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
-
- * @see ILOAD
- * @see ICONST
- * @see LDC
- * @see DUP
- * @see SIPUSH
- * @see GETSTATIC
- */
-public interface PushInstruction extends StackProducer {
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes an unparameterized instruction to produce a value on top of the stack,
+ * such as ILOAD, LDC, SIPUSH, DUP, ICONST, etc.
+ *
+ * @version $Id: PushInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+
+ * @see ILOAD
+ * @see ICONST
+ * @see LDC
+ * @see DUP
+ * @see SIPUSH
+ * @see GETSTATIC
+ */
+public interface PushInstruction extends StackProducer {
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RET.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RET.java
index f0b93f2c..a579a2e6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RET.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RET.java
@@ -1,140 +1,140 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * RET - Return from subroutine
- *
- * Stack: ... -> ...
- *
- * @version $Id: RET.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class RET extends Instruction implements IndexedInstruction, TypedInstruction {
-
- private boolean wide;
- private int index; // index to local variable containg the return address
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- RET() {
- }
-
-
- public RET(int index) {
- super(org.apache.bcel5_2_0.Constants.RET, (short) 2);
- setIndex(index); // May set wide as side effect
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- if (wide) {
- out.writeByte(org.apache.bcel5_2_0.Constants.WIDE);
- }
- out.writeByte(opcode);
- if (wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- }
-
-
- private final void setWide() {
- wide = index > org.apache.bcel5_2_0.Constants.MAX_BYTE;
- if (wide) {
- length = 4; // Including the wide byte
- } else {
- length = 2;
- }
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- this.wide = wide;
- if (wide) {
- index = bytes.readUnsignedShort();
- length = 4;
- } else {
- index = bytes.readUnsignedByte();
- length = 2;
- }
- }
-
-
- /**
- * @return index of local variable containg the return address
- */
- public final int getIndex() {
- return index;
- }
-
-
- /**
- * Set index of local variable containg the return address
- */
- public final void setIndex( int n ) {
- if (n < 0) {
- throw new ClassGenException("Negative index value: " + n);
- }
- index = n;
- setWide();
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- return super.toString(verbose) + " " + index;
- }
-
-
- /** @return return address type
- */
- public Type getType( ConstantPoolGen cp ) {
- return ReturnaddressType.NO_TARGET;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitRET(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * RET - Return from subroutine
+ *
+ * Stack: ... -> ...
+ *
+ * @version $Id: RET.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class RET extends Instruction implements IndexedInstruction, TypedInstruction {
+
+ private boolean wide;
+ private int index; // index to local variable containg the return address
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ RET() {
+ }
+
+
+ public RET(int index) {
+ super(org.apache.bcel5_2_0.Constants.RET, (short) 2);
+ setIndex(index); // May set wide as side effect
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ if (wide) {
+ out.writeByte(org.apache.bcel5_2_0.Constants.WIDE);
+ }
+ out.writeByte(opcode);
+ if (wide) {
+ out.writeShort(index);
+ } else {
+ out.writeByte(index);
+ }
+ }
+
+
+ private final void setWide() {
+ wide = index > org.apache.bcel5_2_0.Constants.MAX_BYTE;
+ if (wide) {
+ length = 4; // Including the wide byte
+ } else {
+ length = 2;
+ }
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ this.wide = wide;
+ if (wide) {
+ index = bytes.readUnsignedShort();
+ length = 4;
+ } else {
+ index = bytes.readUnsignedByte();
+ length = 2;
+ }
+ }
+
+
+ /**
+ * @return index of local variable containg the return address
+ */
+ public final int getIndex() {
+ return index;
+ }
+
+
+ /**
+ * Set index of local variable containg the return address
+ */
+ public final void setIndex( int n ) {
+ if (n < 0) {
+ throw new ClassGenException("Negative index value: " + n);
+ }
+ index = n;
+ setWide();
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ return super.toString(verbose) + " " + index;
+ }
+
+
+ /** @return return address type
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return ReturnaddressType.NO_TARGET;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitRET(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RETURN.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RETURN.java
index fa7587c5..131bf6d6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RETURN.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/RETURN.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * RETURN - Return from void method
- * Stack: ... -> <empty>
- *
- * @version $Id: RETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class RETURN extends ReturnInstruction {
-
- public RETURN() {
- super(org.apache.bcel5_2_0.Constants.RETURN);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitStackConsumer(this);
- v.visitReturnInstruction(this);
- v.visitRETURN(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * RETURN - Return from void method
+ * Stack: ... -> <empty>
+ *
+ * @version $Id: RETURN.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class RETURN extends ReturnInstruction {
+
+ public RETURN() {
+ super(org.apache.bcel5_2_0.Constants.RETURN);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitStackConsumer(this);
+ v.visitReturnInstruction(this);
+ v.visitRETURN(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReferenceType.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReferenceType.java
index f302fade..5470400d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReferenceType.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReferenceType.java
@@ -1,330 +1,330 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.Repository;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * Super class for object and array types.
- *
- * @version $Id: ReferenceType.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class ReferenceType extends Type {
-
- protected ReferenceType(byte t, String s) {
- super(t, s);
- }
-
-
- /** Class is non-abstract but not instantiable from the outside
- */
- ReferenceType() {
- super(Constants.T_OBJECT, "");
- }
-
-
- /**
- * Return true iff this type is castable to another type t as defined in
- * the JVM specification. The case where this is Type.NULL is not
- * defined (see the CHECKCAST definition in the JVM specification).
- * However, because e.g. CHECKCAST doesn't throw a
- * ClassCastException when casting a null reference to any Object,
- * true is returned in this case.
- *
- * @throws ClassNotFoundException if any classes or interfaces required
- * to determine assignment compatibility can't be found
- */
- public boolean isCastableTo( Type t ) throws ClassNotFoundException {
- if (this.equals(Type.NULL)) {
- return true; // If this is ever changed in isAssignmentCompatible()
- }
- return isAssignmentCompatibleWith(t);
- /* Yes, it's true: It's the same definition.
- * See vmspec2 AASTORE / CHECKCAST definitions.
- */
- }
-
-
- /**
- * Return true iff this is assignment compatible with another type t
- * as defined in the JVM specification; see the AASTORE definition
- * there.
- * @throws ClassNotFoundException if any classes or interfaces required
- * to determine assignment compatibility can't be found
- */
- public boolean isAssignmentCompatibleWith( Type t ) throws ClassNotFoundException {
- if (!(t instanceof ReferenceType)) {
- return false;
- }
- ReferenceType T = (ReferenceType) t;
- if (this.equals(Type.NULL)) {
- return true; // This is not explicitely stated, but clear. Isn't it?
- }
- /* If this is a class type then
- */
- if ((this instanceof ObjectType) && (((ObjectType) this).referencesClassExact())) {
- /* If T is a class type, then this must be the same class as T,
- or this must be a subclass of T;
- */
- if ((T instanceof ObjectType) && (((ObjectType) T).referencesClassExact())) {
- if (this.equals(T)) {
- return true;
- }
- if (Repository.instanceOf(((ObjectType) this).getClassName(), ((ObjectType) T)
- .getClassName())) {
- return true;
- }
- }
- /* If T is an interface type, this must implement interface T.
- */
- if ((T instanceof ObjectType) && (((ObjectType) T).referencesInterfaceExact())) {
- if (Repository.implementationOf(((ObjectType) this).getClassName(),
- ((ObjectType) T).getClassName())) {
- return true;
- }
- }
- }
- /* If this is an interface type, then:
- */
- if ((this instanceof ObjectType) && (((ObjectType) this).referencesInterfaceExact())) {
- /* If T is a class type, then T must be Object (paragraph 2.4.7).
- */
- if ((T instanceof ObjectType) && (((ObjectType) T).referencesClassExact())) {
- if (T.equals(Type.OBJECT)) {
- return true;
- }
- }
- /* If T is an interface type, then T must be the same interface
- * as this or a superinterface of this (paragraph 2.13.2).
- */
- if ((T instanceof ObjectType) && (((ObjectType) T).referencesInterfaceExact())) {
- if (this.equals(T)) {
- return true;
- }
- if (Repository.implementationOf(((ObjectType) this).getClassName(),
- ((ObjectType) T).getClassName())) {
- return true;
- }
- }
- }
- /* If this is an array type, namely, the type SC[], that is, an
- * array of components of type SC, then:
- */
- if (this instanceof ArrayType) {
- /* If T is a class type, then T must be Object (paragraph 2.4.7).
- */
- if ((T instanceof ObjectType) && (((ObjectType) T).referencesClassExact())) {
- if (T.equals(Type.OBJECT)) {
- return true;
- }
- }
- /* If T is an array type TC[], that is, an array of components
- * of type TC, then one of the following must be true:
- */
- if (T instanceof ArrayType) {
- /* TC and SC are the same primitive type (paragraph 2.4.1).
- */
- Type sc = ((ArrayType) this).getElementType();
- Type tc = ((ArrayType) T).getElementType();
- if (sc instanceof BasicType && tc instanceof BasicType && sc.equals(tc)) {
- return true;
- }
- /* TC and SC are reference types (paragraph 2.4.6), and type SC is
- * assignable to TC by these runtime rules.
- */
- if (tc instanceof ReferenceType && sc instanceof ReferenceType
- && ((ReferenceType) sc).isAssignmentCompatibleWith(tc)) {
- return true;
- }
- }
- /* If T is an interface type, T must be one of the interfaces implemented by arrays (paragraph 2.15). */
- // TODO: Check if this is still valid or find a way to dynamically find out which
- // interfaces arrays implement. However, as of the JVM specification edition 2, there
- // are at least two different pages where assignment compatibility is defined and
- // on one of them "interfaces implemented by arrays" is exchanged with "'Cloneable' or
- // 'java.io.Serializable'"
- if ((T instanceof ObjectType) && (((ObjectType) T).referencesInterfaceExact())) {
- for (int ii = 0; ii < Constants.INTERFACES_IMPLEMENTED_BY_ARRAYS.length; ii++) {
- if (T.equals(new ObjectType(Constants.INTERFACES_IMPLEMENTED_BY_ARRAYS[ii]))) {
- return true;
- }
- }
- }
- }
- return false; // default.
- }
-
-
- /**
- * This commutative operation returns the first common superclass (narrowest ReferenceType
- * referencing a class, not an interface).
- * If one of the types is a superclass of the other, the former is returned.
- * If "this" is Type.NULL, then t is returned.
- * If t is Type.NULL, then "this" is returned.
- * If "this" equals t ['this.equals(t)'] "this" is returned.
- * If "this" or t is an ArrayType, then Type.OBJECT is returned;
- * unless their dimensions match. Then an ArrayType of the same
- * number of dimensions is returned, with its basic type being the
- * first common super class of the basic types of "this" and t.
- * If "this" or t is a ReferenceType referencing an interface, then Type.OBJECT is returned.
- * If not all of the two classes' superclasses cannot be found, "null" is returned.
- * See the JVM specification edition 2, "paragraph 4.9.2 The Bytecode Verifier".
- *
- * @throws ClassNotFoundException on failure to find superclasses of this
- * type, or the type passed as a parameter
- */
- public ReferenceType getFirstCommonSuperclass( ReferenceType t ) throws ClassNotFoundException {
- if (this.equals(Type.NULL)) {
- return t;
- }
- if (t.equals(Type.NULL)) {
- return this;
- }
- if (this.equals(t)) {
- return this;
- /*
- * TODO: Above sounds a little arbitrary. On the other hand, there is
- * no object referenced by Type.NULL so we can also say all the objects
- * referenced by Type.NULL were derived from java.lang.Object.
- * However, the Java Language's "instanceof" operator proves us wrong:
- * "null" is not referring to an instance of java.lang.Object :)
- */
- }
- /* This code is from a bug report by Konstantin Shagin */
- if ((this instanceof ArrayType) && (t instanceof ArrayType)) {
- ArrayType arrType1 = (ArrayType) this;
- ArrayType arrType2 = (ArrayType) t;
- if ((arrType1.getDimensions() == arrType2.getDimensions())
- && arrType1.getBasicType() instanceof ObjectType
- && arrType2.getBasicType() instanceof ObjectType) {
- return new ArrayType(((ObjectType) arrType1.getBasicType())
- .getFirstCommonSuperclass((ObjectType) arrType2.getBasicType()), arrType1
- .getDimensions());
- }
- }
- if ((this instanceof ArrayType) || (t instanceof ArrayType)) {
- return Type.OBJECT;
- // TODO: Is there a proof of OBJECT being the direct ancestor of every ArrayType?
- }
- if (((this instanceof ObjectType) && ((ObjectType) this).referencesInterface())
- || ((t instanceof ObjectType) && ((ObjectType) t).referencesInterface())) {
- return Type.OBJECT;
- // TODO: The above line is correct comparing to the vmspec2. But one could
- // make class file verification a bit stronger here by using the notion of
- // superinterfaces or even castability or assignment compatibility.
- }
- // this and t are ObjectTypes, see above.
- ObjectType thiz = (ObjectType) this;
- ObjectType other = (ObjectType) t;
- JavaClass[] thiz_sups = Repository.getSuperClasses(thiz.getClassName());
- JavaClass[] other_sups = Repository.getSuperClasses(other.getClassName());
- if ((thiz_sups == null) || (other_sups == null)) {
- return null;
- }
- // Waaahh...
- JavaClass[] this_sups = new JavaClass[thiz_sups.length + 1];
- JavaClass[] t_sups = new JavaClass[other_sups.length + 1];
- System.arraycopy(thiz_sups, 0, this_sups, 1, thiz_sups.length);
- System.arraycopy(other_sups, 0, t_sups, 1, other_sups.length);
- this_sups[0] = Repository.lookupClass(thiz.getClassName());
- t_sups[0] = Repository.lookupClass(other.getClassName());
- for (int i = 0; i < t_sups.length; i++) {
- for (int j = 0; j < this_sups.length; j++) {
- if (this_sups[j].equals(t_sups[i])) {
- return new ObjectType(this_sups[j].getClassName());
- }
- }
- }
- // Huh? Did you ask for Type.OBJECT's superclass??
- return null;
- }
-
-
- /**
- * This commutative operation returns the first common superclass (narrowest ReferenceType
- * referencing a class, not an interface).
- * If one of the types is a superclass of the other, the former is returned.
- * If "this" is Type.NULL, then t is returned.
- * If t is Type.NULL, then "this" is returned.
- * If "this" equals t ['this.equals(t)'] "this" is returned.
- * If "this" or t is an ArrayType, then Type.OBJECT is returned.
- * If "this" or t is a ReferenceType referencing an interface, then Type.OBJECT is returned.
- * If not all of the two classes' superclasses cannot be found, "null" is returned.
- * See the JVM specification edition 2, "paragraph 4.9.2 The Bytecode Verifier".
- *
- * @deprecated use getFirstCommonSuperclass(ReferenceType t) which has
- * slightly changed semantics.
- * @throws ClassNotFoundException on failure to find superclasses of this
- * type, or the type passed as a parameter
- */
- public ReferenceType firstCommonSuperclass( ReferenceType t ) throws ClassNotFoundException {
- if (this.equals(Type.NULL)) {
- return t;
- }
- if (t.equals(Type.NULL)) {
- return this;
- }
- if (this.equals(t)) {
- return this;
- /*
- * TODO: Above sounds a little arbitrary. On the other hand, there is
- * no object referenced by Type.NULL so we can also say all the objects
- * referenced by Type.NULL were derived from java.lang.Object.
- * However, the Java Language's "instanceof" operator proves us wrong:
- * "null" is not referring to an instance of java.lang.Object :)
- */
- }
- if ((this instanceof ArrayType) || (t instanceof ArrayType)) {
- return Type.OBJECT;
- // TODO: Is there a proof of OBJECT being the direct ancestor of every ArrayType?
- }
- if (((this instanceof ObjectType) && ((ObjectType) this).referencesInterface())
- || ((t instanceof ObjectType) && ((ObjectType) t).referencesInterface())) {
- return Type.OBJECT;
- // TODO: The above line is correct comparing to the vmspec2. But one could
- // make class file verification a bit stronger here by using the notion of
- // superinterfaces or even castability or assignment compatibility.
- }
- // this and t are ObjectTypes, see above.
- ObjectType thiz = (ObjectType) this;
- ObjectType other = (ObjectType) t;
- JavaClass[] thiz_sups = Repository.getSuperClasses(thiz.getClassName());
- JavaClass[] other_sups = Repository.getSuperClasses(other.getClassName());
- if ((thiz_sups == null) || (other_sups == null)) {
- return null;
- }
- // Waaahh...
- JavaClass[] this_sups = new JavaClass[thiz_sups.length + 1];
- JavaClass[] t_sups = new JavaClass[other_sups.length + 1];
- System.arraycopy(thiz_sups, 0, this_sups, 1, thiz_sups.length);
- System.arraycopy(other_sups, 0, t_sups, 1, other_sups.length);
- this_sups[0] = Repository.lookupClass(thiz.getClassName());
- t_sups[0] = Repository.lookupClass(other.getClassName());
- for (int i = 0; i < t_sups.length; i++) {
- for (int j = 0; j < this_sups.length; j++) {
- if (this_sups[j].equals(t_sups[i])) {
- return new ObjectType(this_sups[j].getClassName());
- }
- }
- }
- // Huh? Did you ask for Type.OBJECT's superclass??
- return null;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.Repository;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * Super class for object and array types.
+ *
+ * @version $Id: ReferenceType.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class ReferenceType extends Type {
+
+ protected ReferenceType(byte t, String s) {
+ super(t, s);
+ }
+
+
+ /** Class is non-abstract but not instantiable from the outside
+ */
+ ReferenceType() {
+ super(Constants.T_OBJECT, "");
+ }
+
+
+ /**
+ * Return true iff this type is castable to another type t as defined in
+ * the JVM specification. The case where this is Type.NULL is not
+ * defined (see the CHECKCAST definition in the JVM specification).
+ * However, because e.g. CHECKCAST doesn't throw a
+ * ClassCastException when casting a null reference to any Object,
+ * true is returned in this case.
+ *
+ * @throws ClassNotFoundException if any classes or interfaces required
+ * to determine assignment compatibility can't be found
+ */
+ public boolean isCastableTo( Type t ) throws ClassNotFoundException {
+ if (this.equals(Type.NULL)) {
+ return true; // If this is ever changed in isAssignmentCompatible()
+ }
+ return isAssignmentCompatibleWith(t);
+ /* Yes, it's true: It's the same definition.
+ * See vmspec2 AASTORE / CHECKCAST definitions.
+ */
+ }
+
+
+ /**
+ * Return true iff this is assignment compatible with another type t
+ * as defined in the JVM specification; see the AASTORE definition
+ * there.
+ * @throws ClassNotFoundException if any classes or interfaces required
+ * to determine assignment compatibility can't be found
+ */
+ public boolean isAssignmentCompatibleWith( Type t ) throws ClassNotFoundException {
+ if (!(t instanceof ReferenceType)) {
+ return false;
+ }
+ ReferenceType T = (ReferenceType) t;
+ if (this.equals(Type.NULL)) {
+ return true; // This is not explicitely stated, but clear. Isn't it?
+ }
+ /* If this is a class type then
+ */
+ if ((this instanceof ObjectType) && (((ObjectType) this).referencesClassExact())) {
+ /* If T is a class type, then this must be the same class as T,
+ or this must be a subclass of T;
+ */
+ if ((T instanceof ObjectType) && (((ObjectType) T).referencesClassExact())) {
+ if (this.equals(T)) {
+ return true;
+ }
+ if (Repository.instanceOf(((ObjectType) this).getClassName(), ((ObjectType) T)
+ .getClassName())) {
+ return true;
+ }
+ }
+ /* If T is an interface type, this must implement interface T.
+ */
+ if ((T instanceof ObjectType) && (((ObjectType) T).referencesInterfaceExact())) {
+ if (Repository.implementationOf(((ObjectType) this).getClassName(),
+ ((ObjectType) T).getClassName())) {
+ return true;
+ }
+ }
+ }
+ /* If this is an interface type, then:
+ */
+ if ((this instanceof ObjectType) && (((ObjectType) this).referencesInterfaceExact())) {
+ /* If T is a class type, then T must be Object (paragraph 2.4.7).
+ */
+ if ((T instanceof ObjectType) && (((ObjectType) T).referencesClassExact())) {
+ if (T.equals(Type.OBJECT)) {
+ return true;
+ }
+ }
+ /* If T is an interface type, then T must be the same interface
+ * as this or a superinterface of this (paragraph 2.13.2).
+ */
+ if ((T instanceof ObjectType) && (((ObjectType) T).referencesInterfaceExact())) {
+ if (this.equals(T)) {
+ return true;
+ }
+ if (Repository.implementationOf(((ObjectType) this).getClassName(),
+ ((ObjectType) T).getClassName())) {
+ return true;
+ }
+ }
+ }
+ /* If this is an array type, namely, the type SC[], that is, an
+ * array of components of type SC, then:
+ */
+ if (this instanceof ArrayType) {
+ /* If T is a class type, then T must be Object (paragraph 2.4.7).
+ */
+ if ((T instanceof ObjectType) && (((ObjectType) T).referencesClassExact())) {
+ if (T.equals(Type.OBJECT)) {
+ return true;
+ }
+ }
+ /* If T is an array type TC[], that is, an array of components
+ * of type TC, then one of the following must be true:
+ */
+ if (T instanceof ArrayType) {
+ /* TC and SC are the same primitive type (paragraph 2.4.1).
+ */
+ Type sc = ((ArrayType) this).getElementType();
+ Type tc = ((ArrayType) T).getElementType();
+ if (sc instanceof BasicType && tc instanceof BasicType && sc.equals(tc)) {
+ return true;
+ }
+ /* TC and SC are reference types (paragraph 2.4.6), and type SC is
+ * assignable to TC by these runtime rules.
+ */
+ if (tc instanceof ReferenceType && sc instanceof ReferenceType
+ && ((ReferenceType) sc).isAssignmentCompatibleWith(tc)) {
+ return true;
+ }
+ }
+ /* If T is an interface type, T must be one of the interfaces implemented by arrays (paragraph 2.15). */
+ // TODO: Check if this is still valid or find a way to dynamically find out which
+ // interfaces arrays implement. However, as of the JVM specification edition 2, there
+ // are at least two different pages where assignment compatibility is defined and
+ // on one of them "interfaces implemented by arrays" is exchanged with "'Cloneable' or
+ // 'java.io.Serializable'"
+ if ((T instanceof ObjectType) && (((ObjectType) T).referencesInterfaceExact())) {
+ for (int ii = 0; ii < Constants.INTERFACES_IMPLEMENTED_BY_ARRAYS.length; ii++) {
+ if (T.equals(new ObjectType(Constants.INTERFACES_IMPLEMENTED_BY_ARRAYS[ii]))) {
+ return true;
+ }
+ }
+ }
+ }
+ return false; // default.
+ }
+
+
+ /**
+ * This commutative operation returns the first common superclass (narrowest ReferenceType
+ * referencing a class, not an interface).
+ * If one of the types is a superclass of the other, the former is returned.
+ * If "this" is Type.NULL, then t is returned.
+ * If t is Type.NULL, then "this" is returned.
+ * If "this" equals t ['this.equals(t)'] "this" is returned.
+ * If "this" or t is an ArrayType, then Type.OBJECT is returned;
+ * unless their dimensions match. Then an ArrayType of the same
+ * number of dimensions is returned, with its basic type being the
+ * first common super class of the basic types of "this" and t.
+ * If "this" or t is a ReferenceType referencing an interface, then Type.OBJECT is returned.
+ * If not all of the two classes' superclasses cannot be found, "null" is returned.
+ * See the JVM specification edition 2, "paragraph 4.9.2 The Bytecode Verifier".
+ *
+ * @throws ClassNotFoundException on failure to find superclasses of this
+ * type, or the type passed as a parameter
+ */
+ public ReferenceType getFirstCommonSuperclass( ReferenceType t ) throws ClassNotFoundException {
+ if (this.equals(Type.NULL)) {
+ return t;
+ }
+ if (t.equals(Type.NULL)) {
+ return this;
+ }
+ if (this.equals(t)) {
+ return this;
+ /*
+ * TODO: Above sounds a little arbitrary. On the other hand, there is
+ * no object referenced by Type.NULL so we can also say all the objects
+ * referenced by Type.NULL were derived from java.lang.Object.
+ * However, the Java Language's "instanceof" operator proves us wrong:
+ * "null" is not referring to an instance of java.lang.Object :)
+ */
+ }
+ /* This code is from a bug report by Konstantin Shagin */
+ if ((this instanceof ArrayType) && (t instanceof ArrayType)) {
+ ArrayType arrType1 = (ArrayType) this;
+ ArrayType arrType2 = (ArrayType) t;
+ if ((arrType1.getDimensions() == arrType2.getDimensions())
+ && arrType1.getBasicType() instanceof ObjectType
+ && arrType2.getBasicType() instanceof ObjectType) {
+ return new ArrayType(((ObjectType) arrType1.getBasicType())
+ .getFirstCommonSuperclass((ObjectType) arrType2.getBasicType()), arrType1
+ .getDimensions());
+ }
+ }
+ if ((this instanceof ArrayType) || (t instanceof ArrayType)) {
+ return Type.OBJECT;
+ // TODO: Is there a proof of OBJECT being the direct ancestor of every ArrayType?
+ }
+ if (((this instanceof ObjectType) && ((ObjectType) this).referencesInterface())
+ || ((t instanceof ObjectType) && ((ObjectType) t).referencesInterface())) {
+ return Type.OBJECT;
+ // TODO: The above line is correct comparing to the vmspec2. But one could
+ // make class file verification a bit stronger here by using the notion of
+ // superinterfaces or even castability or assignment compatibility.
+ }
+ // this and t are ObjectTypes, see above.
+ ObjectType thiz = (ObjectType) this;
+ ObjectType other = (ObjectType) t;
+ JavaClass[] thiz_sups = Repository.getSuperClasses(thiz.getClassName());
+ JavaClass[] other_sups = Repository.getSuperClasses(other.getClassName());
+ if ((thiz_sups == null) || (other_sups == null)) {
+ return null;
+ }
+ // Waaahh...
+ JavaClass[] this_sups = new JavaClass[thiz_sups.length + 1];
+ JavaClass[] t_sups = new JavaClass[other_sups.length + 1];
+ System.arraycopy(thiz_sups, 0, this_sups, 1, thiz_sups.length);
+ System.arraycopy(other_sups, 0, t_sups, 1, other_sups.length);
+ this_sups[0] = Repository.lookupClass(thiz.getClassName());
+ t_sups[0] = Repository.lookupClass(other.getClassName());
+ for (int i = 0; i < t_sups.length; i++) {
+ for (int j = 0; j < this_sups.length; j++) {
+ if (this_sups[j].equals(t_sups[i])) {
+ return new ObjectType(this_sups[j].getClassName());
+ }
+ }
+ }
+ // Huh? Did you ask for Type.OBJECT's superclass??
+ return null;
+ }
+
+
+ /**
+ * This commutative operation returns the first common superclass (narrowest ReferenceType
+ * referencing a class, not an interface).
+ * If one of the types is a superclass of the other, the former is returned.
+ * If "this" is Type.NULL, then t is returned.
+ * If t is Type.NULL, then "this" is returned.
+ * If "this" equals t ['this.equals(t)'] "this" is returned.
+ * If "this" or t is an ArrayType, then Type.OBJECT is returned.
+ * If "this" or t is a ReferenceType referencing an interface, then Type.OBJECT is returned.
+ * If not all of the two classes' superclasses cannot be found, "null" is returned.
+ * See the JVM specification edition 2, "paragraph 4.9.2 The Bytecode Verifier".
+ *
+ * @deprecated use getFirstCommonSuperclass(ReferenceType t) which has
+ * slightly changed semantics.
+ * @throws ClassNotFoundException on failure to find superclasses of this
+ * type, or the type passed as a parameter
+ */
+ public ReferenceType firstCommonSuperclass( ReferenceType t ) throws ClassNotFoundException {
+ if (this.equals(Type.NULL)) {
+ return t;
+ }
+ if (t.equals(Type.NULL)) {
+ return this;
+ }
+ if (this.equals(t)) {
+ return this;
+ /*
+ * TODO: Above sounds a little arbitrary. On the other hand, there is
+ * no object referenced by Type.NULL so we can also say all the objects
+ * referenced by Type.NULL were derived from java.lang.Object.
+ * However, the Java Language's "instanceof" operator proves us wrong:
+ * "null" is not referring to an instance of java.lang.Object :)
+ */
+ }
+ if ((this instanceof ArrayType) || (t instanceof ArrayType)) {
+ return Type.OBJECT;
+ // TODO: Is there a proof of OBJECT being the direct ancestor of every ArrayType?
+ }
+ if (((this instanceof ObjectType) && ((ObjectType) this).referencesInterface())
+ || ((t instanceof ObjectType) && ((ObjectType) t).referencesInterface())) {
+ return Type.OBJECT;
+ // TODO: The above line is correct comparing to the vmspec2. But one could
+ // make class file verification a bit stronger here by using the notion of
+ // superinterfaces or even castability or assignment compatibility.
+ }
+ // this and t are ObjectTypes, see above.
+ ObjectType thiz = (ObjectType) this;
+ ObjectType other = (ObjectType) t;
+ JavaClass[] thiz_sups = Repository.getSuperClasses(thiz.getClassName());
+ JavaClass[] other_sups = Repository.getSuperClasses(other.getClassName());
+ if ((thiz_sups == null) || (other_sups == null)) {
+ return null;
+ }
+ // Waaahh...
+ JavaClass[] this_sups = new JavaClass[thiz_sups.length + 1];
+ JavaClass[] t_sups = new JavaClass[other_sups.length + 1];
+ System.arraycopy(thiz_sups, 0, this_sups, 1, thiz_sups.length);
+ System.arraycopy(other_sups, 0, t_sups, 1, other_sups.length);
+ this_sups[0] = Repository.lookupClass(thiz.getClassName());
+ t_sups[0] = Repository.lookupClass(other.getClassName());
+ for (int i = 0; i < t_sups.length; i++) {
+ for (int j = 0; j < this_sups.length; j++) {
+ if (this_sups[j].equals(t_sups[i])) {
+ return new ObjectType(this_sups[j].getClassName());
+ }
+ }
+ }
+ // Huh? Did you ask for Type.OBJECT's superclass??
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnInstruction.java
index bbdc89ac..9caf2c30 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnInstruction.java
@@ -1,79 +1,79 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.ExceptionConstants;
-
-/**
- * Super class for the xRETURN family of instructions.
- *
- * @version $Id: ReturnInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class ReturnInstruction extends Instruction implements ExceptionThrower,
- TypedInstruction, StackConsumer {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- ReturnInstruction() {
- }
-
-
- /**
- * @param opcode of instruction
- */
- protected ReturnInstruction(short opcode) {
- super(opcode, (short) 1);
- }
-
-
- public Type getType() {
- switch (opcode) {
- case Constants.IRETURN:
- return Type.INT;
- case Constants.LRETURN:
- return Type.LONG;
- case Constants.FRETURN:
- return Type.FLOAT;
- case Constants.DRETURN:
- return Type.DOUBLE;
- case Constants.ARETURN:
- return Type.OBJECT;
- case Constants.RETURN:
- return Type.VOID;
- default: // Never reached
- throw new ClassGenException("Unknown type " + opcode);
- }
- }
-
-
- public Class[] getExceptions() {
- return new Class[] {
- ExceptionConstants.ILLEGAL_MONITOR_STATE
- };
- }
-
-
- /** @return type associated with the instruction
- */
- public Type getType( ConstantPoolGen cp ) {
- return getType();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.ExceptionConstants;
+
+/**
+ * Super class for the xRETURN family of instructions.
+ *
+ * @version $Id: ReturnInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class ReturnInstruction extends Instruction implements ExceptionThrower,
+ TypedInstruction, StackConsumer {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ ReturnInstruction() {
+ }
+
+
+ /**
+ * @param opcode of instruction
+ */
+ protected ReturnInstruction(short opcode) {
+ super(opcode, (short) 1);
+ }
+
+
+ public Type getType() {
+ switch (opcode) {
+ case Constants.IRETURN:
+ return Type.INT;
+ case Constants.LRETURN:
+ return Type.LONG;
+ case Constants.FRETURN:
+ return Type.FLOAT;
+ case Constants.DRETURN:
+ return Type.DOUBLE;
+ case Constants.ARETURN:
+ return Type.OBJECT;
+ case Constants.RETURN:
+ return Type.VOID;
+ default: // Never reached
+ throw new ClassGenException("Unknown type " + opcode);
+ }
+ }
+
+
+ public Class[] getExceptions() {
+ return new Class[] {
+ ExceptionConstants.ILLEGAL_MONITOR_STATE
+ };
+ }
+
+
+ /** @return type associated with the instruction
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return getType();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnaddressType.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnaddressType.java
index 085f6c71..275fd693 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnaddressType.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/ReturnaddressType.java
@@ -1,82 +1,82 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import org.apache.bcel5_2_0.Constants;
-
-/**
- * Returnaddress, the type JSR or JSR_W instructions push upon the stack.
- *
- * see vmspec2 paragraph 3.3.3
- * @version $Id: ReturnaddressType.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author Enver Haase
- */
-public class ReturnaddressType extends Type {
-
- public static final ReturnaddressType NO_TARGET = new ReturnaddressType();
- private InstructionHandle returnTarget;
-
-
- /**
- * A Returnaddress [that doesn't know where to return to].
- */
- private ReturnaddressType() {
- super(Constants.T_ADDRESS, "");
- }
-
-
- /**
- * Creates a ReturnaddressType object with a target.
- */
- public ReturnaddressType(InstructionHandle returnTarget) {
- super(Constants.T_ADDRESS, "");
- this.returnTarget = returnTarget;
- }
-
-
- /** @return a hash code value for the object.
- */
- public int hashCode() {
- if (returnTarget == null) {
- return 0;
- }
- return returnTarget.hashCode();
- }
-
-
- /**
- * Returns if the two Returnaddresses refer to the same target.
- */
- public boolean equals( Object rat ) {
- if (!(rat instanceof ReturnaddressType)) {
- return false;
- }
- ReturnaddressType that = (ReturnaddressType) rat;
- if (this.returnTarget == null || that.returnTarget == null) {
- return that.returnTarget == this.returnTarget;
- }
- return that.returnTarget.equals(this.returnTarget);
- }
-
-
- /**
- * @return the target of this ReturnaddressType
- */
- public InstructionHandle getTarget() {
- return returnTarget;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import org.apache.bcel5_2_0.Constants;
+
+/**
+ * Returnaddress, the type JSR or JSR_W instructions push upon the stack.
+ *
+ * see vmspec2 paragraph 3.3.3
+ * @version $Id: ReturnaddressType.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author Enver Haase
+ */
+public class ReturnaddressType extends Type {
+
+ public static final ReturnaddressType NO_TARGET = new ReturnaddressType();
+ private InstructionHandle returnTarget;
+
+
+ /**
+ * A Returnaddress [that doesn't know where to return to].
+ */
+ private ReturnaddressType() {
+ super(Constants.T_ADDRESS, "");
+ }
+
+
+ /**
+ * Creates a ReturnaddressType object with a target.
+ */
+ public ReturnaddressType(InstructionHandle returnTarget) {
+ super(Constants.T_ADDRESS, "");
+ this.returnTarget = returnTarget;
+ }
+
+
+ /** @return a hash code value for the object.
+ */
+ public int hashCode() {
+ if (returnTarget == null) {
+ return 0;
+ }
+ return returnTarget.hashCode();
+ }
+
+
+ /**
+ * Returns if the two Returnaddresses refer to the same target.
+ */
+ public boolean equals( Object rat ) {
+ if (!(rat instanceof ReturnaddressType)) {
+ return false;
+ }
+ ReturnaddressType that = (ReturnaddressType) rat;
+ if (this.returnTarget == null || that.returnTarget == null) {
+ return that.returnTarget == this.returnTarget;
+ }
+ return that.returnTarget.equals(this.returnTarget);
+ }
+
+
+ /**
+ * @return the target of this ReturnaddressType
+ */
+ public InstructionHandle getTarget() {
+ return returnTarget;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SALOAD.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SALOAD.java
index e978805e..0af2b5ca 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SALOAD.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SALOAD.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * SALOAD - Load short from array
- * Stack: ..., arrayref, index -> ..., value
- *
- * @version $Id: SALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class SALOAD extends ArrayInstruction implements StackProducer {
-
- public SALOAD() {
- super(org.apache.bcel5_2_0.Constants.SALOAD);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackProducer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitSALOAD(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * SALOAD - Load short from array
+ * Stack: ..., arrayref, index -> ..., value
+ *
+ * @version $Id: SALOAD.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class SALOAD extends ArrayInstruction implements StackProducer {
+
+ public SALOAD() {
+ super(org.apache.bcel5_2_0.Constants.SALOAD);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackProducer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitSALOAD(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SASTORE.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SASTORE.java
index a3c6a1bd..e193d33d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SASTORE.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SASTORE.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * SASTORE - Store into short array
- * Stack: ..., arrayref, index, value -> ...
- *
- * @version $Id: SASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class SASTORE extends ArrayInstruction implements StackConsumer {
-
- public SASTORE() {
- super(org.apache.bcel5_2_0.Constants.SASTORE);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitExceptionThrower(this);
- v.visitTypedInstruction(this);
- v.visitArrayInstruction(this);
- v.visitSASTORE(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * SASTORE - Store into short array
+ * Stack: ..., arrayref, index, value -> ...
+ *
+ * @version $Id: SASTORE.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class SASTORE extends ArrayInstruction implements StackConsumer {
+
+ public SASTORE() {
+ super(org.apache.bcel5_2_0.Constants.SASTORE);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitExceptionThrower(this);
+ v.visitTypedInstruction(this);
+ v.visitArrayInstruction(this);
+ v.visitSASTORE(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SIPUSH.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SIPUSH.java
index 117f69a1..a62425f9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SIPUSH.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SIPUSH.java
@@ -1,104 +1,104 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * SIPUSH - Push short
- *
- * Stack: ... -> ..., value
- *
- * @version $Id: SIPUSH.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class SIPUSH extends Instruction implements ConstantPushInstruction {
-
- private short b;
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- SIPUSH() {
- }
-
-
- public SIPUSH(short b) {
- super(org.apache.bcel5_2_0.Constants.SIPUSH, (short) 3);
- this.b = b;
- }
-
-
- /**
- * Dump instruction as short code to stream out.
- */
- public void dump( DataOutputStream out ) throws IOException {
- super.dump(out);
- out.writeShort(b);
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- return super.toString(verbose) + " " + b;
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- length = 3;
- b = bytes.readShort();
- }
-
-
- public Number getValue() {
- return new Integer(b);
- }
-
-
- /** @return Type.SHORT
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.SHORT;
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitPushInstruction(this);
- v.visitStackProducer(this);
- v.visitTypedInstruction(this);
- v.visitConstantPushInstruction(this);
- v.visitSIPUSH(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * SIPUSH - Push short
+ *
+ * Stack: ... -> ..., value
+ *
+ * @version $Id: SIPUSH.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class SIPUSH extends Instruction implements ConstantPushInstruction {
+
+ private short b;
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ SIPUSH() {
+ }
+
+
+ public SIPUSH(short b) {
+ super(org.apache.bcel5_2_0.Constants.SIPUSH, (short) 3);
+ this.b = b;
+ }
+
+
+ /**
+ * Dump instruction as short code to stream out.
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ super.dump(out);
+ out.writeShort(b);
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ return super.toString(verbose) + " " + b;
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ length = 3;
+ b = bytes.readShort();
+ }
+
+
+ public Number getValue() {
+ return new Integer(b);
+ }
+
+
+ /** @return Type.SHORT
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.SHORT;
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitPushInstruction(this);
+ v.visitStackProducer(this);
+ v.visitTypedInstruction(this);
+ v.visitConstantPushInstruction(this);
+ v.visitSIPUSH(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWAP.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWAP.java
index 34d0287c..f598c0d9 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWAP.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWAP.java
@@ -1,47 +1,47 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * SWAP - Swa top operand stack word
- * Stack: ..., word2, word1 -> ..., word1, word2
- *
- * @version $Id: SWAP.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class SWAP extends StackInstruction implements StackConsumer, StackProducer {
-
- public SWAP() {
- super(org.apache.bcel5_2_0.Constants.SWAP);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitStackProducer(this);
- v.visitStackInstruction(this);
- v.visitSWAP(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * SWAP - Swa top operand stack word
+ * Stack: ..., word2, word1 -> ..., word1, word2
+ *
+ * @version $Id: SWAP.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class SWAP extends StackInstruction implements StackConsumer, StackProducer {
+
+ public SWAP() {
+ super(org.apache.bcel5_2_0.Constants.SWAP);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitStackProducer(this);
+ v.visitStackInstruction(this);
+ v.visitSWAP(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWITCH.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWITCH.java
index d74508e3..5c410e55 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWITCH.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/SWITCH.java
@@ -1,153 +1,153 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * SWITCH - Branch depending on int value, generates either LOOKUPSWITCH or
- * TABLESWITCH instruction, depending on whether the match values (int[]) can be
- * sorted with no gaps between the numbers.
- *
- * @version $Id: SWITCH.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class SWITCH implements CompoundInstruction {
-
- private int[] match;
- private InstructionHandle[] targets;
- private Select instruction;
- private int match_length;
-
-
- /**
- * Template for switch() constructs. If the match array can be
- * sorted in ascending order with gaps no larger than max_gap
- * between the numbers, a TABLESWITCH instruction is generated, and
- * a LOOKUPSWITCH otherwise. The former may be more efficient, but
- * needs more space.
- *
- * Note, that the key array always will be sorted, though we leave
- * the original arrays unaltered.
- *
- * @param match array of match values (case 2: ... case 7: ..., etc.)
- * @param targets the instructions to be branched to for each case
- * @param target the default target
- * @param max_gap maximum gap that may between case branches
- */
- public SWITCH(int[] match, InstructionHandle[] targets, InstructionHandle target, int max_gap) {
- this.match = (int[]) match.clone();
- this.targets = (InstructionHandle[]) targets.clone();
- if ((match_length = match.length) < 2) {
- instruction = new TABLESWITCH(match, targets, target);
- } else {
- sort(0, match_length - 1);
- if (matchIsOrdered(max_gap)) {
- fillup(max_gap, target);
- instruction = new TABLESWITCH(this.match, this.targets, target);
- } else {
- instruction = new LOOKUPSWITCH(this.match, this.targets, target);
- }
- }
- }
-
-
- public SWITCH(int[] match, InstructionHandle[] targets, InstructionHandle target) {
- this(match, targets, target, 1);
- }
-
-
- private final void fillup( int max_gap, InstructionHandle target ) {
- int max_size = match_length + match_length * max_gap;
- int[] m_vec = new int[max_size];
- InstructionHandle[] t_vec = new InstructionHandle[max_size];
- int count = 1;
- m_vec[0] = match[0];
- t_vec[0] = targets[0];
- for (int i = 1; i < match_length; i++) {
- int prev = match[i - 1];
- int gap = match[i] - prev;
- for (int j = 1; j < gap; j++) {
- m_vec[count] = prev + j;
- t_vec[count] = target;
- count++;
- }
- m_vec[count] = match[i];
- t_vec[count] = targets[i];
- count++;
- }
- match = new int[count];
- targets = new InstructionHandle[count];
- System.arraycopy(m_vec, 0, match, 0, count);
- System.arraycopy(t_vec, 0, targets, 0, count);
- }
-
-
- /**
- * Sort match and targets array with QuickSort.
- */
- private final void sort( int l, int r ) {
- int i = l, j = r;
- int h, m = match[(l + r) / 2];
- InstructionHandle h2;
- do {
- while (match[i] < m) {
- i++;
- }
- while (m < match[j]) {
- j--;
- }
- if (i <= j) {
- h = match[i];
- match[i] = match[j];
- match[j] = h; // Swap elements
- h2 = targets[i];
- targets[i] = targets[j];
- targets[j] = h2; // Swap instructions, too
- i++;
- j--;
- }
- } while (i <= j);
- if (l < j) {
- sort(l, j);
- }
- if (i < r) {
- sort(i, r);
- }
- }
-
-
- /**
- * @return match is sorted in ascending order with no gap bigger than max_gap?
- */
- private final boolean matchIsOrdered( int max_gap ) {
- for (int i = 1; i < match_length; i++) {
- if (match[i] - match[i - 1] > max_gap) {
- return false;
- }
- }
- return true;
- }
-
-
- public final InstructionList getInstructionList() {
- return new InstructionList(instruction);
- }
-
-
- public final Instruction getInstruction() {
- return instruction;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * SWITCH - Branch depending on int value, generates either LOOKUPSWITCH or
+ * TABLESWITCH instruction, depending on whether the match values (int[]) can be
+ * sorted with no gaps between the numbers.
+ *
+ * @version $Id: SWITCH.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class SWITCH implements CompoundInstruction {
+
+ private int[] match;
+ private InstructionHandle[] targets;
+ private Select instruction;
+ private int match_length;
+
+
+ /**
+ * Template for switch() constructs. If the match array can be
+ * sorted in ascending order with gaps no larger than max_gap
+ * between the numbers, a TABLESWITCH instruction is generated, and
+ * a LOOKUPSWITCH otherwise. The former may be more efficient, but
+ * needs more space.
+ *
+ * Note, that the key array always will be sorted, though we leave
+ * the original arrays unaltered.
+ *
+ * @param match array of match values (case 2: ... case 7: ..., etc.)
+ * @param targets the instructions to be branched to for each case
+ * @param target the default target
+ * @param max_gap maximum gap that may between case branches
+ */
+ public SWITCH(int[] match, InstructionHandle[] targets, InstructionHandle target, int max_gap) {
+ this.match = (int[]) match.clone();
+ this.targets = (InstructionHandle[]) targets.clone();
+ if ((match_length = match.length) < 2) {
+ instruction = new TABLESWITCH(match, targets, target);
+ } else {
+ sort(0, match_length - 1);
+ if (matchIsOrdered(max_gap)) {
+ fillup(max_gap, target);
+ instruction = new TABLESWITCH(this.match, this.targets, target);
+ } else {
+ instruction = new LOOKUPSWITCH(this.match, this.targets, target);
+ }
+ }
+ }
+
+
+ public SWITCH(int[] match, InstructionHandle[] targets, InstructionHandle target) {
+ this(match, targets, target, 1);
+ }
+
+
+ private final void fillup( int max_gap, InstructionHandle target ) {
+ int max_size = match_length + match_length * max_gap;
+ int[] m_vec = new int[max_size];
+ InstructionHandle[] t_vec = new InstructionHandle[max_size];
+ int count = 1;
+ m_vec[0] = match[0];
+ t_vec[0] = targets[0];
+ for (int i = 1; i < match_length; i++) {
+ int prev = match[i - 1];
+ int gap = match[i] - prev;
+ for (int j = 1; j < gap; j++) {
+ m_vec[count] = prev + j;
+ t_vec[count] = target;
+ count++;
+ }
+ m_vec[count] = match[i];
+ t_vec[count] = targets[i];
+ count++;
+ }
+ match = new int[count];
+ targets = new InstructionHandle[count];
+ System.arraycopy(m_vec, 0, match, 0, count);
+ System.arraycopy(t_vec, 0, targets, 0, count);
+ }
+
+
+ /**
+ * Sort match and targets array with QuickSort.
+ */
+ private final void sort( int l, int r ) {
+ int i = l, j = r;
+ int h, m = match[(l + r) / 2];
+ InstructionHandle h2;
+ do {
+ while (match[i] < m) {
+ i++;
+ }
+ while (m < match[j]) {
+ j--;
+ }
+ if (i <= j) {
+ h = match[i];
+ match[i] = match[j];
+ match[j] = h; // Swap elements
+ h2 = targets[i];
+ targets[i] = targets[j];
+ targets[j] = h2; // Swap instructions, too
+ i++;
+ j--;
+ }
+ } while (i <= j);
+ if (l < j) {
+ sort(l, j);
+ }
+ if (i < r) {
+ sort(i, r);
+ }
+ }
+
+
+ /**
+ * @return match is sorted in ascending order with no gap bigger than max_gap?
+ */
+ private final boolean matchIsOrdered( int max_gap ) {
+ for (int i = 1; i < match_length; i++) {
+ if (match[i] - match[i - 1] > max_gap) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ public final InstructionList getInstructionList() {
+ return new InstructionList(instruction);
+ }
+
+
+ public final Instruction getInstruction() {
+ return instruction;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Select.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Select.java
index 6e43d274..819b5a1f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Select.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Select.java
@@ -1,237 +1,237 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * Select - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.
- *
- * We use our super's target
property as the default target.
- *
- * @version $Id: Select.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see LOOKUPSWITCH
- * @see TABLESWITCH
- * @see InstructionList
- */
-public abstract class Select extends BranchInstruction implements VariableLengthInstruction,
- StackProducer {
-
- protected int[] match; // matches, i.e., case 1: ...
- protected int[] indices; // target offsets
- protected InstructionHandle[] targets; // target objects in instruction list
- protected int fixed_length; // fixed length defined by subclasses
- protected int match_length; // number of cases
- protected int padding = 0; // number of pad bytes for alignment
-
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- Select() {
- }
-
-
- /**
- * (Match, target) pairs for switch.
- * `Match' and `targets' must have the same length of course.
- *
- * @param match array of matching values
- * @param targets instruction targets
- * @param defaultTarget default instruction target
- */
- Select(short opcode, int[] match, InstructionHandle[] targets, InstructionHandle defaultTarget) {
- super(opcode, defaultTarget);
- this.targets = targets;
- for (int i = 0; i < targets.length; i++) {
- notifyTarget(null, targets[i], this);
- }
- this.match = match;
- if ((match_length = match.length) != targets.length) {
- throw new ClassGenException("Match and target array have not the same length");
- }
- indices = new int[match_length];
- }
-
-
- /**
- * Since this is a variable length instruction, it may shift the following
- * instructions which then need to update their position.
- *
- * Called by InstructionList.setPositions when setting the position for every
- * instruction. In the presence of variable length instructions `setPositions'
- * performs multiple passes over the instruction list to calculate the
- * correct (byte) positions and offsets by calling this function.
- *
- * @param offset additional offset caused by preceding (variable length) instructions
- * @param max_offset the maximum offset that may be caused by these instructions
- * @return additional offset caused by possible change of this instruction's length
- */
- protected int updatePosition( int offset, int max_offset ) {
- position += offset; // Additional offset caused by preceding SWITCHs, GOTOs, etc.
- short old_length = length;
- /* Alignment on 4-byte-boundary, + 1, because of tag byte.
- */
- padding = (4 - ((position + 1) % 4)) % 4;
- length = (short) (fixed_length + padding); // Update length
- return length - old_length;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- out.writeByte(opcode);
- for (int i = 0; i < padding; i++) {
- out.writeByte(0);
- }
- index = getTargetOffset(); // Write default target offset
- out.writeInt(index);
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- padding = (4 - (bytes.getIndex() % 4)) % 4; // Compute number of pad bytes
- for (int i = 0; i < padding; i++) {
- bytes.readByte();
- }
- // Default branch target common for both cases (TABLESWITCH, LOOKUPSWITCH)
- index = bytes.readInt();
- }
-
-
- /**
- * @return mnemonic for instruction
- */
- public String toString( boolean verbose ) {
- StringBuilder buf = new StringBuilder(super.toString(verbose));
- if (verbose) {
- for (int i = 0; i < match_length; i++) {
- String s = "null";
- if (targets[i] != null) {
- s = targets[i].getInstruction().toString();
- }
- buf.append("(").append(match[i]).append(", ").append(s).append(" = {").append(
- indices[i]).append("})");
- }
- } else {
- buf.append(" ...");
- }
- return buf.toString();
- }
-
-
- /**
- * Set branch target for `i'th case
- */
- public void setTarget( int i, InstructionHandle target ) {
- notifyTarget(targets[i], target, this);
- targets[i] = target;
- }
-
-
- /**
- * @param old_ih old target
- * @param new_ih new target
- */
- public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
- boolean targeted = false;
- if (target == old_ih) {
- targeted = true;
- setTarget(new_ih);
- }
- for (int i = 0; i < targets.length; i++) {
- if (targets[i] == old_ih) {
- targeted = true;
- setTarget(i, new_ih);
- }
- }
- if (!targeted) {
- throw new ClassGenException("Not targeting " + old_ih);
- }
- }
-
-
- /**
- * @return true, if ih is target of this instruction
- */
- public boolean containsTarget( InstructionHandle ih ) {
- if (target == ih) {
- return true;
- }
- for (int i = 0; i < targets.length; i++) {
- if (targets[i] == ih) {
- return true;
- }
- }
- return false;
- }
-
-
- protected Object clone() throws CloneNotSupportedException {
- Select copy = (Select) super.clone();
- copy.match = (int[]) match.clone();
- copy.indices = (int[]) indices.clone();
- copy.targets = (InstructionHandle[]) targets.clone();
- return copy;
- }
-
-
- /**
- * Inform targets that they're not targeted anymore.
- */
- void dispose() {
- super.dispose();
- for (int i = 0; i < targets.length; i++) {
- targets[i].removeTargeter(this);
- }
- }
-
-
- /**
- * @return array of match indices
- */
- public int[] getMatchs() {
- return match;
- }
-
-
- /**
- * @return array of match target offsets
- */
- public int[] getIndices() {
- return indices;
- }
-
-
- /**
- * @return array of match targets
- */
- public InstructionHandle[] getTargets() {
- return targets;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * Select - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.
+ *
+ *
We use our super's target
property as the default target.
+ *
+ * @version $Id: Select.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see LOOKUPSWITCH
+ * @see TABLESWITCH
+ * @see InstructionList
+ */
+public abstract class Select extends BranchInstruction implements VariableLengthInstruction,
+ StackProducer {
+
+ protected int[] match; // matches, i.e., case 1: ...
+ protected int[] indices; // target offsets
+ protected InstructionHandle[] targets; // target objects in instruction list
+ protected int fixed_length; // fixed length defined by subclasses
+ protected int match_length; // number of cases
+ protected int padding = 0; // number of pad bytes for alignment
+
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ Select() {
+ }
+
+
+ /**
+ * (Match, target) pairs for switch.
+ * `Match' and `targets' must have the same length of course.
+ *
+ * @param match array of matching values
+ * @param targets instruction targets
+ * @param defaultTarget default instruction target
+ */
+ Select(short opcode, int[] match, InstructionHandle[] targets, InstructionHandle defaultTarget) {
+ super(opcode, defaultTarget);
+ this.targets = targets;
+ for (int i = 0; i < targets.length; i++) {
+ notifyTarget(null, targets[i], this);
+ }
+ this.match = match;
+ if ((match_length = match.length) != targets.length) {
+ throw new ClassGenException("Match and target array have not the same length");
+ }
+ indices = new int[match_length];
+ }
+
+
+ /**
+ * Since this is a variable length instruction, it may shift the following
+ * instructions which then need to update their position.
+ *
+ * Called by InstructionList.setPositions when setting the position for every
+ * instruction. In the presence of variable length instructions `setPositions'
+ * performs multiple passes over the instruction list to calculate the
+ * correct (byte) positions and offsets by calling this function.
+ *
+ * @param offset additional offset caused by preceding (variable length) instructions
+ * @param max_offset the maximum offset that may be caused by these instructions
+ * @return additional offset caused by possible change of this instruction's length
+ */
+ protected int updatePosition( int offset, int max_offset ) {
+ position += offset; // Additional offset caused by preceding SWITCHs, GOTOs, etc.
+ short old_length = length;
+ /* Alignment on 4-byte-boundary, + 1, because of tag byte.
+ */
+ padding = (4 - ((position + 1) % 4)) % 4;
+ length = (short) (fixed_length + padding); // Update length
+ return length - old_length;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ out.writeByte(opcode);
+ for (int i = 0; i < padding; i++) {
+ out.writeByte(0);
+ }
+ index = getTargetOffset(); // Write default target offset
+ out.writeInt(index);
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ padding = (4 - (bytes.getIndex() % 4)) % 4; // Compute number of pad bytes
+ for (int i = 0; i < padding; i++) {
+ bytes.readByte();
+ }
+ // Default branch target common for both cases (TABLESWITCH, LOOKUPSWITCH)
+ index = bytes.readInt();
+ }
+
+
+ /**
+ * @return mnemonic for instruction
+ */
+ public String toString( boolean verbose ) {
+ StringBuilder buf = new StringBuilder(super.toString(verbose));
+ if (verbose) {
+ for (int i = 0; i < match_length; i++) {
+ String s = "null";
+ if (targets[i] != null) {
+ s = targets[i].getInstruction().toString();
+ }
+ buf.append("(").append(match[i]).append(", ").append(s).append(" = {").append(
+ indices[i]).append("})");
+ }
+ } else {
+ buf.append(" ...");
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * Set branch target for `i'th case
+ */
+ public void setTarget( int i, InstructionHandle target ) {
+ notifyTarget(targets[i], target, this);
+ targets[i] = target;
+ }
+
+
+ /**
+ * @param old_ih old target
+ * @param new_ih new target
+ */
+ public void updateTarget( InstructionHandle old_ih, InstructionHandle new_ih ) {
+ boolean targeted = false;
+ if (target == old_ih) {
+ targeted = true;
+ setTarget(new_ih);
+ }
+ for (int i = 0; i < targets.length; i++) {
+ if (targets[i] == old_ih) {
+ targeted = true;
+ setTarget(i, new_ih);
+ }
+ }
+ if (!targeted) {
+ throw new ClassGenException("Not targeting " + old_ih);
+ }
+ }
+
+
+ /**
+ * @return true, if ih is target of this instruction
+ */
+ public boolean containsTarget( InstructionHandle ih ) {
+ if (target == ih) {
+ return true;
+ }
+ for (int i = 0; i < targets.length; i++) {
+ if (targets[i] == ih) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ protected Object clone() throws CloneNotSupportedException {
+ Select copy = (Select) super.clone();
+ copy.match = (int[]) match.clone();
+ copy.indices = (int[]) indices.clone();
+ copy.targets = (InstructionHandle[]) targets.clone();
+ return copy;
+ }
+
+
+ /**
+ * Inform targets that they're not targeted anymore.
+ */
+ void dispose() {
+ super.dispose();
+ for (int i = 0; i < targets.length; i++) {
+ targets[i].removeTargeter(this);
+ }
+ }
+
+
+ /**
+ * @return array of match indices
+ */
+ public int[] getMatchs() {
+ return match;
+ }
+
+
+ /**
+ * @return array of match target offsets
+ */
+ public int[] getIndices() {
+ return indices;
+ }
+
+
+ /**
+ * @return array of match targets
+ */
+ public InstructionHandle[] getTargets() {
+ return targets;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackConsumer.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackConsumer.java
index db487703..6be2f9c0 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackConsumer.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackConsumer.java
@@ -1,30 +1,30 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denote an instruction that may consume a value from the stack.
- *
- * @version $Id: StackConsumer.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface StackConsumer {
-
- /** @return how many words are consumed from stack
- */
- public int consumeStack( ConstantPoolGen cpg );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denote an instruction that may consume a value from the stack.
+ *
+ * @version $Id: StackConsumer.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface StackConsumer {
+
+ /** @return how many words are consumed from stack
+ */
+ public int consumeStack( ConstantPoolGen cpg );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackInstruction.java
index 393a11fe..4833d074 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackInstruction.java
@@ -1,48 +1,48 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Super class for stack operations like DUP and POP.
- *
- * @version $Id: StackInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class StackInstruction extends Instruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- StackInstruction() {
- }
-
-
- /**
- * @param opcode instruction opcode
- */
- protected StackInstruction(short opcode) {
- super(opcode, (short) 1);
- }
-
-
- /** @return Type.UNKNOWN
- */
- public Type getType( ConstantPoolGen cp ) {
- return Type.UNKNOWN;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Super class for stack operations like DUP and POP.
+ *
+ * @version $Id: StackInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class StackInstruction extends Instruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ StackInstruction() {
+ }
+
+
+ /**
+ * @param opcode instruction opcode
+ */
+ protected StackInstruction(short opcode) {
+ super(opcode, (short) 1);
+ }
+
+
+ /** @return Type.UNKNOWN
+ */
+ public Type getType( ConstantPoolGen cp ) {
+ return Type.UNKNOWN;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackProducer.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackProducer.java
index 5e549c16..c4c32a46 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackProducer.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StackProducer.java
@@ -1,31 +1,31 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denote an instruction that may produce a value on top of the stack
- * (this excludes DUP_X1, e.g.)
- *
- * @version $Id: StackProducer.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface StackProducer {
-
- /** @return how many words are produced on stack
- */
- public int produceStack( ConstantPoolGen cpg );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denote an instruction that may produce a value on top of the stack
+ * (this excludes DUP_X1, e.g.)
+ *
+ * @version $Id: StackProducer.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface StackProducer {
+
+ /** @return how many words are produced on stack
+ */
+ public int produceStack( ConstantPoolGen cpg );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StoreInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StoreInstruction.java
index bbb8849d..fc99efc5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StoreInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/StoreInstruction.java
@@ -1,63 +1,63 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes an unparameterized instruction to store a value into a local variable,
- * e.g. ISTORE.
- *
- * @version $Id: StoreInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public abstract class StoreInstruction extends LocalVariableInstruction implements PopInstruction {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- * tag and length are defined in readInstruction and initFromFile, respectively.
- */
- StoreInstruction(short canon_tag, short c_tag) {
- super(canon_tag, c_tag);
- }
-
-
- /**
- * @param opcode Instruction opcode
- * @param c_tag Instruction number for compact version, ASTORE_0, e.g.
- * @param n local variable index (unsigned short)
- */
- protected StoreInstruction(short opcode, short c_tag, int n) {
- super(opcode, c_tag, n);
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitStackConsumer(this);
- v.visitPopInstruction(this);
- v.visitTypedInstruction(this);
- v.visitLocalVariableInstruction(this);
- v.visitStoreInstruction(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes an unparameterized instruction to store a value into a local variable,
+ * e.g. ISTORE.
+ *
+ * @version $Id: StoreInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class StoreInstruction extends LocalVariableInstruction implements PopInstruction {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ * tag and length are defined in readInstruction and initFromFile, respectively.
+ */
+ StoreInstruction(short canon_tag, short c_tag) {
+ super(canon_tag, c_tag);
+ }
+
+
+ /**
+ * @param opcode Instruction opcode
+ * @param c_tag Instruction number for compact version, ASTORE_0, e.g.
+ * @param n local variable index (unsigned short)
+ */
+ protected StoreInstruction(short opcode, short c_tag, int n) {
+ super(opcode, c_tag, n);
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitStackConsumer(this);
+ v.visitPopInstruction(this);
+ v.visitTypedInstruction(this);
+ v.visitLocalVariableInstruction(this);
+ v.visitStoreInstruction(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TABLESWITCH.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TABLESWITCH.java
index 8db1620e..219b3a0c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TABLESWITCH.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TABLESWITCH.java
@@ -1,108 +1,108 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.bcel5_2_0.util.ByteSequence;
-
-/**
- * TABLESWITCH - Switch within given range of values, i.e., low..high
- *
- * @version $Id: TABLESWITCH.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see SWITCH
- */
-public class TABLESWITCH extends Select {
-
- /**
- * Empty constructor needed for the Class.newInstance() statement in
- * Instruction.readInstruction(). Not to be used otherwise.
- */
- TABLESWITCH() {
- }
-
-
- /**
- * @param match sorted array of match values, match[0] must be low value,
- * match[match_length - 1] high value
- * @param targets where to branch for matched values
- * @param defaultTarget default branch
- */
- public TABLESWITCH(int[] match, InstructionHandle[] targets, InstructionHandle defaultTarget) {
- super(org.apache.bcel5_2_0.Constants.TABLESWITCH, match, targets, defaultTarget);
- length = (short) (13 + match_length * 4); /* Alignment remainder assumed
- * 0 here, until dump time */
- fixed_length = length;
- }
-
-
- /**
- * Dump instruction as byte code to stream out.
- * @param out Output stream
- */
- public void dump( DataOutputStream out ) throws IOException {
- super.dump(out);
- int low = (match_length > 0) ? match[0] : 0;
- out.writeInt(low);
- int high = (match_length > 0) ? match[match_length - 1] : 0;
- out.writeInt(high);
- for (int i = 0; i < match_length; i++) {
- out.writeInt(indices[i] = getTargetOffset(targets[i]));
- }
- }
-
-
- /**
- * Read needed data (e.g. index) from file.
- */
- protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
- super.initFromFile(bytes, wide);
- int low = bytes.readInt();
- int high = bytes.readInt();
- match_length = high - low + 1;
- fixed_length = (short) (13 + match_length * 4);
- length = (short) (fixed_length + padding);
- match = new int[match_length];
- indices = new int[match_length];
- targets = new InstructionHandle[match_length];
- for (int i = low; i <= high; i++) {
- match[i - low] = i;
- }
- for (int i = 0; i < match_length; i++) {
- indices[i] = bytes.readInt();
- }
- }
-
-
- /**
- * Call corresponding visitor method(s). The order is:
- * Call visitor methods of implemented interfaces first, then
- * call methods according to the class hierarchy in descending order,
- * i.e., the most specific visitXXX() call comes last.
- *
- * @param v Visitor object
- */
- public void accept( Visitor v ) {
- v.visitVariableLengthInstruction(this);
- v.visitStackProducer(this);
- v.visitBranchInstruction(this);
- v.visitSelect(this);
- v.visitTABLESWITCH(this);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.bcel5_2_0.util.ByteSequence;
+
+/**
+ * TABLESWITCH - Switch within given range of values, i.e., low..high
+ *
+ * @version $Id: TABLESWITCH.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see SWITCH
+ */
+public class TABLESWITCH extends Select {
+
+ /**
+ * Empty constructor needed for the Class.newInstance() statement in
+ * Instruction.readInstruction(). Not to be used otherwise.
+ */
+ TABLESWITCH() {
+ }
+
+
+ /**
+ * @param match sorted array of match values, match[0] must be low value,
+ * match[match_length - 1] high value
+ * @param targets where to branch for matched values
+ * @param defaultTarget default branch
+ */
+ public TABLESWITCH(int[] match, InstructionHandle[] targets, InstructionHandle defaultTarget) {
+ super(org.apache.bcel5_2_0.Constants.TABLESWITCH, match, targets, defaultTarget);
+ length = (short) (13 + match_length * 4); /* Alignment remainder assumed
+ * 0 here, until dump time */
+ fixed_length = length;
+ }
+
+
+ /**
+ * Dump instruction as byte code to stream out.
+ * @param out Output stream
+ */
+ public void dump( DataOutputStream out ) throws IOException {
+ super.dump(out);
+ int low = (match_length > 0) ? match[0] : 0;
+ out.writeInt(low);
+ int high = (match_length > 0) ? match[match_length - 1] : 0;
+ out.writeInt(high);
+ for (int i = 0; i < match_length; i++) {
+ out.writeInt(indices[i] = getTargetOffset(targets[i]));
+ }
+ }
+
+
+ /**
+ * Read needed data (e.g. index) from file.
+ */
+ protected void initFromFile( ByteSequence bytes, boolean wide ) throws IOException {
+ super.initFromFile(bytes, wide);
+ int low = bytes.readInt();
+ int high = bytes.readInt();
+ match_length = high - low + 1;
+ fixed_length = (short) (13 + match_length * 4);
+ length = (short) (fixed_length + padding);
+ match = new int[match_length];
+ indices = new int[match_length];
+ targets = new InstructionHandle[match_length];
+ for (int i = low; i <= high; i++) {
+ match[i - low] = i;
+ }
+ for (int i = 0; i < match_length; i++) {
+ indices[i] = bytes.readInt();
+ }
+ }
+
+
+ /**
+ * Call corresponding visitor method(s). The order is:
+ * Call visitor methods of implemented interfaces first, then
+ * call methods according to the class hierarchy in descending order,
+ * i.e., the most specific visitXXX() call comes last.
+ *
+ * @param v Visitor object
+ */
+ public void accept( Visitor v ) {
+ v.visitVariableLengthInstruction(this);
+ v.visitStackProducer(this);
+ v.visitBranchInstruction(this);
+ v.visitSelect(this);
+ v.visitTABLESWITCH(this);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TargetLostException.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TargetLostException.java
index 0d737694..f965a12a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TargetLostException.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TargetLostException.java
@@ -1,67 +1,67 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Thrown by InstructionList.remove() when one or multiple disposed instruction
- * are still being referenced by a InstructionTargeter object. I.e. the
- * InstructionTargeter has to be notified that (one of) the InstructionHandle it
- * is referencing is being removed from the InstructionList and thus not valid anymore.
- *
- * Making this an exception instead of a return value forces the user to handle
- * these case explicitely in a try { ... } catch. The following code illustrates
- * how this may be done:
- *
- *
- * ...
- * try {
- * il.delete(start_ih, end_ih);
- * } catch(TargetLostException e) {
- * InstructionHandle[] targets = e.getTargets();
- * for(int i=0; i < targets.length; i++) {
- * InstructionTargeter[] targeters = targets[i].getTargeters();
- *
- * for(int j=0; j < targeters.length; j++)
- * targeters[j].updateTarget(targets[i], new_target);
- * }
- * }
- *
- *
- * @see InstructionHandle
- * @see InstructionList
- * @see InstructionTargeter
- * @version $Id: TargetLostException.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class TargetLostException extends Exception {
-
- private InstructionHandle[] targets;
-
-
- TargetLostException(InstructionHandle[] t, String mesg) {
- super(mesg);
- targets = t;
- }
-
-
- /**
- * @return list of instructions still being targeted.
- */
- public InstructionHandle[] getTargets() {
- return targets;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Thrown by InstructionList.remove() when one or multiple disposed instruction
+ * are still being referenced by a InstructionTargeter object. I.e. the
+ * InstructionTargeter has to be notified that (one of) the InstructionHandle it
+ * is referencing is being removed from the InstructionList and thus not valid anymore.
+ *
+ * Making this an exception instead of a return value forces the user to handle
+ * these case explicitely in a try { ... } catch. The following code illustrates
+ * how this may be done:
+ *
+ *
+ * ...
+ * try {
+ * il.delete(start_ih, end_ih);
+ * } catch(TargetLostException e) {
+ * InstructionHandle[] targets = e.getTargets();
+ * for(int i=0; i < targets.length; i++) {
+ * InstructionTargeter[] targeters = targets[i].getTargeters();
+ *
+ * for(int j=0; j < targeters.length; j++)
+ * targeters[j].updateTarget(targets[i], new_target);
+ * }
+ * }
+ *
+ *
+ * @see InstructionHandle
+ * @see InstructionList
+ * @see InstructionTargeter
+ * @version $Id: TargetLostException.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class TargetLostException extends Exception {
+
+ private InstructionHandle[] targets;
+
+
+ TargetLostException(InstructionHandle[] t, String mesg) {
+ super(mesg);
+ targets = t;
+ }
+
+
+ /**
+ * @return list of instructions still being targeted.
+ */
+ public InstructionHandle[] getTargets() {
+ return targets;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Type.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Type.java
index 0002af56..a17bc4c6 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Type.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Type.java
@@ -1,311 +1,311 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.ClassFormatException;
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Abstract super class for all possible java types, namely basic types
- * such as int, object types like String and array types, e.g. int[]
- *
- * @version $Id: Type.java 393344 2006-04-12 00:38:34Z tcurdt $
- * @author M. Dahm
- */
-public abstract class Type implements java.io.Serializable {
-
- protected byte type;
- protected String signature; // signature for the type
- /** Predefined constants
- */
- public static final BasicType VOID = new BasicType(Constants.T_VOID);
- public static final BasicType BOOLEAN = new BasicType(Constants.T_BOOLEAN);
- public static final BasicType INT = new BasicType(Constants.T_INT);
- public static final BasicType SHORT = new BasicType(Constants.T_SHORT);
- public static final BasicType BYTE = new BasicType(Constants.T_BYTE);
- public static final BasicType LONG = new BasicType(Constants.T_LONG);
- public static final BasicType DOUBLE = new BasicType(Constants.T_DOUBLE);
- public static final BasicType FLOAT = new BasicType(Constants.T_FLOAT);
- public static final BasicType CHAR = new BasicType(Constants.T_CHAR);
- public static final ObjectType OBJECT = new ObjectType("java.lang.Object");
- public static final ObjectType CLASS = new ObjectType("java.lang.Class");
- public static final ObjectType STRING = new ObjectType("java.lang.String");
- public static final ObjectType STRINGBUFFER = new ObjectType("java.lang.StringBuffer");
- public static final ObjectType THROWABLE = new ObjectType("java.lang.Throwable");
- public static final Type[] NO_ARGS = new Type[0];
- public static final ReferenceType NULL = new ReferenceType() {
- };
- public static final Type UNKNOWN = new Type(Constants.T_UNKNOWN, "") {
- };
-
-
- protected Type(byte t, String s) {
- type = t;
- signature = s;
- }
-
-
- /**
- * @return hashcode of Type
- */
- public int hashCode() {
- return type ^ signature.hashCode();
- }
-
-
- /**
- * @return whether the Types are equal
- */
- public boolean equals(Object o) {
- if (o instanceof Type) {
- Type t = (Type)o;
- return (type == t.type) && signature.equals(t.signature);
- }
- return false;
- }
-
-
- /**
- * @return signature for given type.
- */
- public String getSignature() {
- return signature;
- }
-
-
- /**
- * @return type as defined in Constants
- */
- public byte getType() {
- return type;
- }
-
-
- /**
- * @return stack size of this type (2 for long and double, 0 for void, 1 otherwise)
- */
- public int getSize() {
- switch (type) {
- case Constants.T_DOUBLE:
- case Constants.T_LONG:
- return 2;
- case Constants.T_VOID:
- return 0;
- default:
- return 1;
- }
- }
-
-
- /**
- * @return Type string, e.g. `int[]'
- */
- public String toString() {
- return ((this.equals(Type.NULL) || (type >= Constants.T_UNKNOWN))) ? signature : Utility
- .signatureToString(signature, false);
- }
-
-
- /**
- * Convert type to Java method signature, e.g. int[] f(java.lang.String x)
- * becomes (Ljava/lang/String;)[I
- *
- * @param return_type what the method returns
- * @param arg_types what are the argument types
- * @return method signature for given type(s).
- */
- public static String getMethodSignature( Type return_type, Type[] arg_types ) {
- StringBuilder buf = new StringBuilder("(");
- int length = (arg_types == null) ? 0 : arg_types.length;
- for (int i = 0; i < length; i++) {
- buf.append(arg_types[i].getSignature());
- }
- buf.append(')');
- buf.append(return_type.getSignature());
- return buf.toString();
- }
-
- private static ThreadLocal consumed_chars = new ThreadLocal() {
-
- protected Object initialValue() {
- return new Integer(0);
- }
- };//int consumed_chars=0; // Remember position in string, see getArgumentTypes
-
-
- private static int unwrap( ThreadLocal tl ) {
- return ((Integer) tl.get()).intValue();
- }
-
-
- private static void wrap( ThreadLocal tl, int value ) {
- tl.set(new Integer(value));
- }
-
-
- /**
- * Convert signature to a Type object.
- * @param signature signature string such as Ljava/lang/String;
- * @return type object
- */
- public static final Type getType( String signature ) throws StringIndexOutOfBoundsException {
- byte type = Utility.typeOfSignature(signature);
- if (type <= Constants.T_VOID) {
- //corrected concurrent private static field acess
- wrap(consumed_chars, 1);
- return BasicType.getType(type);
- } else if (type == Constants.T_ARRAY) {
- int dim = 0;
- do { // Count dimensions
- dim++;
- } while (signature.charAt(dim) == '[');
- // Recurse, but just once, if the signature is ok
- Type t = getType(signature.substring(dim));
- //corrected concurrent private static field acess
- // consumed_chars += dim; // update counter - is replaced by
- int _temp = unwrap(consumed_chars) + dim;
- wrap(consumed_chars, _temp);
- return new ArrayType(t, dim);
- } else { // type == T_REFERENCE
- int index = signature.indexOf(';'); // Look for closing `;'
- if (index < 0) {
- throw new ClassFormatException("Invalid signature: " + signature);
- }
- //corrected concurrent private static field acess
- wrap(consumed_chars, index + 1); // "Lblabla;" `L' and `;' are removed
- return new ObjectType(signature.substring(1, index).replace('/', '.'));
- }
- }
-
-
- /**
- * Convert return value of a method (signature) to a Type object.
- *
- * @param signature signature string such as (Ljava/lang/String;)V
- * @return return type
- */
- public static Type getReturnType( String signature ) {
- try {
- // Read return type after `)'
- int index = signature.lastIndexOf(')') + 1;
- return getType(signature.substring(index));
- } catch (StringIndexOutOfBoundsException e) { // Should never occur
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- }
-
-
- /**
- * Convert arguments of a method (signature) to an array of Type objects.
- * @param signature signature string such as (Ljava/lang/String;)V
- * @return array of argument types
- */
- public static Type[] getArgumentTypes( String signature ) {
- List vec = new ArrayList();
- int index;
- Type[] types;
- try { // Read all declarations between for `(' and `)'
- if (signature.charAt(0) != '(') {
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- index = 1; // current string position
- while (signature.charAt(index) != ')') {
- vec.add(getType(signature.substring(index)));
- //corrected concurrent private static field acess
- index += unwrap(consumed_chars); // update position
- }
- } catch (StringIndexOutOfBoundsException e) { // Should never occur
- throw new ClassFormatException("Invalid method signature: " + signature);
- }
- types = new Type[vec.size()];
- vec.toArray(types);
- return types;
- }
-
-
- /** Convert runtime java.lang.Class to BCEL Type object.
- * @param cl Java class
- * @return corresponding Type object
- */
- public static Type getType( java.lang.Class cl ) {
- if (cl == null) {
- throw new IllegalArgumentException("Class must not be null");
- }
- /* That's an amzingly easy case, because getName() returns
- * the signature. That's what we would have liked anyway.
- */
- if (cl.isArray()) {
- return getType(cl.getName());
- } else if (cl.isPrimitive()) {
- if (cl == Integer.TYPE) {
- return INT;
- } else if (cl == Void.TYPE) {
- return VOID;
- } else if (cl == Double.TYPE) {
- return DOUBLE;
- } else if (cl == Float.TYPE) {
- return FLOAT;
- } else if (cl == Boolean.TYPE) {
- return BOOLEAN;
- } else if (cl == Byte.TYPE) {
- return BYTE;
- } else if (cl == Short.TYPE) {
- return SHORT;
- } else if (cl == Byte.TYPE) {
- return BYTE;
- } else if (cl == Long.TYPE) {
- return LONG;
- } else if (cl == Character.TYPE) {
- return CHAR;
- } else {
- throw new IllegalStateException("Ooops, what primitive type is " + cl);
- }
- } else { // "Real" class
- return new ObjectType(cl.getName());
- }
- }
-
-
- /**
- * Convert runtime java.lang.Class[] to BCEL Type objects.
- * @param classes an array of runtime class objects
- * @return array of corresponding Type objects
- */
- public static Type[] getTypes( java.lang.Class[] classes ) {
- Type[] ret = new Type[classes.length];
- for (int i = 0; i < ret.length; i++) {
- ret[i] = getType(classes[i]);
- }
- return ret;
- }
-
-
- public static String getSignature( java.lang.reflect.Method meth ) {
- StringBuilder sb = new StringBuilder("(");
- Class[] params = meth.getParameterTypes(); // avoid clone
- for (int j = 0; j < params.length; j++) {
- sb.append(getType(params[j]).getSignature());
- }
- sb.append(")");
- sb.append(getType(meth.getReturnType()).getSignature());
- return sb.toString();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.ClassFormatException;
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Abstract super class for all possible java types, namely basic types
+ * such as int, object types like String and array types, e.g. int[]
+ *
+ * @version $Id: Type.java 393344 2006-04-12 00:38:34Z tcurdt $
+ * @author M. Dahm
+ */
+public abstract class Type implements java.io.Serializable {
+
+ protected byte type;
+ protected String signature; // signature for the type
+ /** Predefined constants
+ */
+ public static final BasicType VOID = new BasicType(Constants.T_VOID);
+ public static final BasicType BOOLEAN = new BasicType(Constants.T_BOOLEAN);
+ public static final BasicType INT = new BasicType(Constants.T_INT);
+ public static final BasicType SHORT = new BasicType(Constants.T_SHORT);
+ public static final BasicType BYTE = new BasicType(Constants.T_BYTE);
+ public static final BasicType LONG = new BasicType(Constants.T_LONG);
+ public static final BasicType DOUBLE = new BasicType(Constants.T_DOUBLE);
+ public static final BasicType FLOAT = new BasicType(Constants.T_FLOAT);
+ public static final BasicType CHAR = new BasicType(Constants.T_CHAR);
+ public static final ObjectType OBJECT = new ObjectType("java.lang.Object");
+ public static final ObjectType CLASS = new ObjectType("java.lang.Class");
+ public static final ObjectType STRING = new ObjectType("java.lang.String");
+ public static final ObjectType STRINGBUFFER = new ObjectType("java.lang.StringBuffer");
+ public static final ObjectType THROWABLE = new ObjectType("java.lang.Throwable");
+ public static final Type[] NO_ARGS = new Type[0];
+ public static final ReferenceType NULL = new ReferenceType() {
+ };
+ public static final Type UNKNOWN = new Type(Constants.T_UNKNOWN, "") {
+ };
+
+
+ protected Type(byte t, String s) {
+ type = t;
+ signature = s;
+ }
+
+
+ /**
+ * @return hashcode of Type
+ */
+ public int hashCode() {
+ return type ^ signature.hashCode();
+ }
+
+
+ /**
+ * @return whether the Types are equal
+ */
+ public boolean equals(Object o) {
+ if (o instanceof Type) {
+ Type t = (Type)o;
+ return (type == t.type) && signature.equals(t.signature);
+ }
+ return false;
+ }
+
+
+ /**
+ * @return signature for given type.
+ */
+ public String getSignature() {
+ return signature;
+ }
+
+
+ /**
+ * @return type as defined in Constants
+ */
+ public byte getType() {
+ return type;
+ }
+
+
+ /**
+ * @return stack size of this type (2 for long and double, 0 for void, 1 otherwise)
+ */
+ public int getSize() {
+ switch (type) {
+ case Constants.T_DOUBLE:
+ case Constants.T_LONG:
+ return 2;
+ case Constants.T_VOID:
+ return 0;
+ default:
+ return 1;
+ }
+ }
+
+
+ /**
+ * @return Type string, e.g. `int[]'
+ */
+ public String toString() {
+ return ((this.equals(Type.NULL) || (type >= Constants.T_UNKNOWN))) ? signature : Utility
+ .signatureToString(signature, false);
+ }
+
+
+ /**
+ * Convert type to Java method signature, e.g. int[] f(java.lang.String x)
+ * becomes (Ljava/lang/String;)[I
+ *
+ * @param return_type what the method returns
+ * @param arg_types what are the argument types
+ * @return method signature for given type(s).
+ */
+ public static String getMethodSignature( Type return_type, Type[] arg_types ) {
+ StringBuilder buf = new StringBuilder("(");
+ int length = (arg_types == null) ? 0 : arg_types.length;
+ for (int i = 0; i < length; i++) {
+ buf.append(arg_types[i].getSignature());
+ }
+ buf.append(')');
+ buf.append(return_type.getSignature());
+ return buf.toString();
+ }
+
+ private static ThreadLocal consumed_chars = new ThreadLocal() {
+
+ protected Object initialValue() {
+ return new Integer(0);
+ }
+ };//int consumed_chars=0; // Remember position in string, see getArgumentTypes
+
+
+ private static int unwrap( ThreadLocal tl ) {
+ return ((Integer) tl.get()).intValue();
+ }
+
+
+ private static void wrap( ThreadLocal tl, int value ) {
+ tl.set(new Integer(value));
+ }
+
+
+ /**
+ * Convert signature to a Type object.
+ * @param signature signature string such as Ljava/lang/String;
+ * @return type object
+ */
+ public static final Type getType( String signature ) throws StringIndexOutOfBoundsException {
+ byte type = Utility.typeOfSignature(signature);
+ if (type <= Constants.T_VOID) {
+ //corrected concurrent private static field acess
+ wrap(consumed_chars, 1);
+ return BasicType.getType(type);
+ } else if (type == Constants.T_ARRAY) {
+ int dim = 0;
+ do { // Count dimensions
+ dim++;
+ } while (signature.charAt(dim) == '[');
+ // Recurse, but just once, if the signature is ok
+ Type t = getType(signature.substring(dim));
+ //corrected concurrent private static field acess
+ // consumed_chars += dim; // update counter - is replaced by
+ int _temp = unwrap(consumed_chars) + dim;
+ wrap(consumed_chars, _temp);
+ return new ArrayType(t, dim);
+ } else { // type == T_REFERENCE
+ int index = signature.indexOf(';'); // Look for closing `;'
+ if (index < 0) {
+ throw new ClassFormatException("Invalid signature: " + signature);
+ }
+ //corrected concurrent private static field acess
+ wrap(consumed_chars, index + 1); // "Lblabla;" `L' and `;' are removed
+ return new ObjectType(signature.substring(1, index).replace('/', '.'));
+ }
+ }
+
+
+ /**
+ * Convert return value of a method (signature) to a Type object.
+ *
+ * @param signature signature string such as (Ljava/lang/String;)V
+ * @return return type
+ */
+ public static Type getReturnType( String signature ) {
+ try {
+ // Read return type after `)'
+ int index = signature.lastIndexOf(')') + 1;
+ return getType(signature.substring(index));
+ } catch (StringIndexOutOfBoundsException e) { // Should never occur
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ }
+
+
+ /**
+ * Convert arguments of a method (signature) to an array of Type objects.
+ * @param signature signature string such as (Ljava/lang/String;)V
+ * @return array of argument types
+ */
+ public static Type[] getArgumentTypes( String signature ) {
+ List vec = new ArrayList();
+ int index;
+ Type[] types;
+ try { // Read all declarations between for `(' and `)'
+ if (signature.charAt(0) != '(') {
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ index = 1; // current string position
+ while (signature.charAt(index) != ')') {
+ vec.add(getType(signature.substring(index)));
+ //corrected concurrent private static field acess
+ index += unwrap(consumed_chars); // update position
+ }
+ } catch (StringIndexOutOfBoundsException e) { // Should never occur
+ throw new ClassFormatException("Invalid method signature: " + signature);
+ }
+ types = new Type[vec.size()];
+ vec.toArray(types);
+ return types;
+ }
+
+
+ /** Convert runtime java.lang.Class to BCEL Type object.
+ * @param cl Java class
+ * @return corresponding Type object
+ */
+ public static Type getType( java.lang.Class cl ) {
+ if (cl == null) {
+ throw new IllegalArgumentException("Class must not be null");
+ }
+ /* That's an amzingly easy case, because getName() returns
+ * the signature. That's what we would have liked anyway.
+ */
+ if (cl.isArray()) {
+ return getType(cl.getName());
+ } else if (cl.isPrimitive()) {
+ if (cl == Integer.TYPE) {
+ return INT;
+ } else if (cl == Void.TYPE) {
+ return VOID;
+ } else if (cl == Double.TYPE) {
+ return DOUBLE;
+ } else if (cl == Float.TYPE) {
+ return FLOAT;
+ } else if (cl == Boolean.TYPE) {
+ return BOOLEAN;
+ } else if (cl == Byte.TYPE) {
+ return BYTE;
+ } else if (cl == Short.TYPE) {
+ return SHORT;
+ } else if (cl == Byte.TYPE) {
+ return BYTE;
+ } else if (cl == Long.TYPE) {
+ return LONG;
+ } else if (cl == Character.TYPE) {
+ return CHAR;
+ } else {
+ throw new IllegalStateException("Ooops, what primitive type is " + cl);
+ }
+ } else { // "Real" class
+ return new ObjectType(cl.getName());
+ }
+ }
+
+
+ /**
+ * Convert runtime java.lang.Class[] to BCEL Type objects.
+ * @param classes an array of runtime class objects
+ * @return array of corresponding Type objects
+ */
+ public static Type[] getTypes( java.lang.Class[] classes ) {
+ Type[] ret = new Type[classes.length];
+ for (int i = 0; i < ret.length; i++) {
+ ret[i] = getType(classes[i]);
+ }
+ return ret;
+ }
+
+
+ public static String getSignature( java.lang.reflect.Method meth ) {
+ StringBuilder sb = new StringBuilder("(");
+ Class[] params = meth.getParameterTypes(); // avoid clone
+ for (int j = 0; j < params.length; j++) {
+ sb.append(getType(params[j]).getSignature());
+ }
+ sb.append(")");
+ sb.append(getType(meth.getReturnType()).getSignature());
+ return sb.toString();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TypedInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TypedInstruction.java
index 9ae53842..29469a15 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TypedInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/TypedInstruction.java
@@ -1,29 +1,29 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Get the type associated with an instruction, int for ILOAD, or the type
- * of the field of a PUTFIELD instruction, e.g..
- *
- * @version $Id: TypedInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface TypedInstruction {
-
- public Type getType( ConstantPoolGen cpg );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Get the type associated with an instruction, int for ILOAD, or the type
+ * of the field of a PUTFIELD instruction, e.g..
+ *
+ * @version $Id: TypedInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface TypedInstruction {
+
+ public Type getType( ConstantPoolGen cpg );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/UnconditionalBranch.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/UnconditionalBranch.java
index a0f516e6..2c81f441 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/UnconditionalBranch.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/UnconditionalBranch.java
@@ -1,29 +1,29 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes an instruction to perform an unconditional branch, i.e., GOTO, JSR.
- *
- * @version $Id: UnconditionalBranch.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
-
- * @see GOTO
- * @see JSR
- */
-public interface UnconditionalBranch {
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes an instruction to perform an unconditional branch, i.e., GOTO, JSR.
+ *
+ * @version $Id: UnconditionalBranch.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+
+ * @see GOTO
+ * @see JSR
+ */
+public interface UnconditionalBranch {
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/VariableLengthInstruction.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/VariableLengthInstruction.java
index 4d4199e5..9f11887c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/VariableLengthInstruction.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/VariableLengthInstruction.java
@@ -1,32 +1,32 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Denotes an instruction to be a variable length instruction, such as
- * GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.
- *
- * @version $Id: VariableLengthInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
-
- * @see GOTO
- * @see JSR
- * @see LOOKUPSWITCH
- * @see TABLESWITCH
- */
-public interface VariableLengthInstruction {
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Denotes an instruction to be a variable length instruction, such as
+ * GOTO, JSR, LOOKUPSWITCH and TABLESWITCH.
+ *
+ * @version $Id: VariableLengthInstruction.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+
+ * @see GOTO
+ * @see JSR
+ * @see LOOKUPSWITCH
+ * @see TABLESWITCH
+ */
+public interface VariableLengthInstruction {
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Visitor.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Visitor.java
index 896b9267..84ba1660 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Visitor.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/Visitor.java
@@ -1,568 +1,568 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.generic;
-
-/**
- * Interface implementing the Visitor pattern programming style.
- * I.e., a class that implements this interface can handle all types of
- * instructions with the properly typed methods just by calling the accept()
- * method.
- *
- * @version $Id: Visitor.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public interface Visitor {
-
- public void visitStackInstruction( StackInstruction obj );
-
-
- public void visitLocalVariableInstruction( LocalVariableInstruction obj );
-
-
- public void visitBranchInstruction( BranchInstruction obj );
-
-
- public void visitLoadClass( LoadClass obj );
-
-
- public void visitFieldInstruction( FieldInstruction obj );
-
-
- public void visitIfInstruction( IfInstruction obj );
-
-
- public void visitConversionInstruction( ConversionInstruction obj );
-
-
- public void visitPopInstruction( PopInstruction obj );
-
-
- public void visitStoreInstruction( StoreInstruction obj );
-
-
- public void visitTypedInstruction( TypedInstruction obj );
-
-
- public void visitSelect( Select obj );
-
-
- public void visitJsrInstruction( JsrInstruction obj );
-
-
- public void visitGotoInstruction( GotoInstruction obj );
-
-
- public void visitUnconditionalBranch( UnconditionalBranch obj );
-
-
- public void visitPushInstruction( PushInstruction obj );
-
-
- public void visitArithmeticInstruction( ArithmeticInstruction obj );
-
-
- public void visitCPInstruction( CPInstruction obj );
-
-
- public void visitInvokeInstruction( InvokeInstruction obj );
-
-
- public void visitArrayInstruction( ArrayInstruction obj );
-
-
- public void visitAllocationInstruction( AllocationInstruction obj );
-
-
- public void visitReturnInstruction( ReturnInstruction obj );
-
-
- public void visitFieldOrMethod( FieldOrMethod obj );
-
-
- public void visitConstantPushInstruction( ConstantPushInstruction obj );
-
-
- public void visitExceptionThrower( ExceptionThrower obj );
-
-
- public void visitLoadInstruction( LoadInstruction obj );
-
-
- public void visitVariableLengthInstruction( VariableLengthInstruction obj );
-
-
- public void visitStackProducer( StackProducer obj );
-
-
- public void visitStackConsumer( StackConsumer obj );
-
-
- public void visitACONST_NULL( ACONST_NULL obj );
-
-
- public void visitGETSTATIC( GETSTATIC obj );
-
-
- public void visitIF_ICMPLT( IF_ICMPLT obj );
-
-
- public void visitMONITOREXIT( MONITOREXIT obj );
-
-
- public void visitIFLT( IFLT obj );
-
-
- public void visitLSTORE( LSTORE obj );
-
-
- public void visitPOP2( POP2 obj );
-
-
- public void visitBASTORE( BASTORE obj );
-
-
- public void visitISTORE( ISTORE obj );
-
-
- public void visitCHECKCAST( CHECKCAST obj );
-
-
- public void visitFCMPG( FCMPG obj );
-
-
- public void visitI2F( I2F obj );
-
-
- public void visitATHROW( ATHROW obj );
-
-
- public void visitDCMPL( DCMPL obj );
-
-
- public void visitARRAYLENGTH( ARRAYLENGTH obj );
-
-
- public void visitDUP( DUP obj );
-
-
- public void visitINVOKESTATIC( INVOKESTATIC obj );
-
-
- public void visitLCONST( LCONST obj );
-
-
- public void visitDREM( DREM obj );
-
-
- public void visitIFGE( IFGE obj );
-
-
- public void visitCALOAD( CALOAD obj );
-
-
- public void visitLASTORE( LASTORE obj );
-
-
- public void visitI2D( I2D obj );
-
-
- public void visitDADD( DADD obj );
-
-
- public void visitINVOKESPECIAL( INVOKESPECIAL obj );
-
-
- public void visitIAND( IAND obj );
-
-
- public void visitPUTFIELD( PUTFIELD obj );
-
-
- public void visitILOAD( ILOAD obj );
-
-
- public void visitDLOAD( DLOAD obj );
-
-
- public void visitDCONST( DCONST obj );
-
-
- public void visitNEW( NEW obj );
-
-
- public void visitIFNULL( IFNULL obj );
-
-
- public void visitLSUB( LSUB obj );
-
-
- public void visitL2I( L2I obj );
-
-
- public void visitISHR( ISHR obj );
-
-
- public void visitTABLESWITCH( TABLESWITCH obj );
-
-
- public void visitIINC( IINC obj );
-
-
- public void visitDRETURN( DRETURN obj );
-
-
- public void visitFSTORE( FSTORE obj );
-
-
- public void visitDASTORE( DASTORE obj );
-
-
- public void visitIALOAD( IALOAD obj );
-
-
- public void visitDDIV( DDIV obj );
-
-
- public void visitIF_ICMPGE( IF_ICMPGE obj );
-
-
- public void visitLAND( LAND obj );
-
-
- public void visitIDIV( IDIV obj );
-
-
- public void visitLOR( LOR obj );
-
-
- public void visitCASTORE( CASTORE obj );
-
-
- public void visitFREM( FREM obj );
-
-
- public void visitLDC( LDC obj );
-
-
- public void visitBIPUSH( BIPUSH obj );
-
-
- public void visitDSTORE( DSTORE obj );
-
-
- public void visitF2L( F2L obj );
-
-
- public void visitFMUL( FMUL obj );
-
-
- public void visitLLOAD( LLOAD obj );
-
-
- public void visitJSR( JSR obj );
-
-
- public void visitFSUB( FSUB obj );
-
-
- public void visitSASTORE( SASTORE obj );
-
-
- public void visitALOAD( ALOAD obj );
-
-
- public void visitDUP2_X2( DUP2_X2 obj );
-
-
- public void visitRETURN( RETURN obj );
-
-
- public void visitDALOAD( DALOAD obj );
-
-
- public void visitSIPUSH( SIPUSH obj );
-
-
- public void visitDSUB( DSUB obj );
-
-
- public void visitL2F( L2F obj );
-
-
- public void visitIF_ICMPGT( IF_ICMPGT obj );
-
-
- public void visitF2D( F2D obj );
-
-
- public void visitI2L( I2L obj );
-
-
- public void visitIF_ACMPNE( IF_ACMPNE obj );
-
-
- public void visitPOP( POP obj );
-
-
- public void visitI2S( I2S obj );
-
-
- public void visitIFEQ( IFEQ obj );
-
-
- public void visitSWAP( SWAP obj );
-
-
- public void visitIOR( IOR obj );
-
-
- public void visitIREM( IREM obj );
-
-
- public void visitIASTORE( IASTORE obj );
-
-
- public void visitNEWARRAY( NEWARRAY obj );
-
-
- public void visitINVOKEINTERFACE( INVOKEINTERFACE obj );
-
-
- public void visitINEG( INEG obj );
-
-
- public void visitLCMP( LCMP obj );
-
-
- public void visitJSR_W( JSR_W obj );
-
-
- public void visitMULTIANEWARRAY( MULTIANEWARRAY obj );
-
-
- public void visitDUP_X2( DUP_X2 obj );
-
-
- public void visitSALOAD( SALOAD obj );
-
-
- public void visitIFNONNULL( IFNONNULL obj );
-
-
- public void visitDMUL( DMUL obj );
-
-
- public void visitIFNE( IFNE obj );
-
-
- public void visitIF_ICMPLE( IF_ICMPLE obj );
-
-
- public void visitLDC2_W( LDC2_W obj );
-
-
- public void visitGETFIELD( GETFIELD obj );
-
-
- public void visitLADD( LADD obj );
-
-
- public void visitNOP( NOP obj );
-
-
- public void visitFALOAD( FALOAD obj );
-
-
- public void visitINSTANCEOF( INSTANCEOF obj );
-
-
- public void visitIFLE( IFLE obj );
-
-
- public void visitLXOR( LXOR obj );
-
-
- public void visitLRETURN( LRETURN obj );
-
-
- public void visitFCONST( FCONST obj );
-
-
- public void visitIUSHR( IUSHR obj );
-
-
- public void visitBALOAD( BALOAD obj );
-
-
- public void visitDUP2( DUP2 obj );
-
-
- public void visitIF_ACMPEQ( IF_ACMPEQ obj );
-
-
- public void visitIMPDEP1( IMPDEP1 obj );
-
-
- public void visitMONITORENTER( MONITORENTER obj );
-
-
- public void visitLSHL( LSHL obj );
-
-
- public void visitDCMPG( DCMPG obj );
-
-
- public void visitD2L( D2L obj );
-
-
- public void visitIMPDEP2( IMPDEP2 obj );
-
-
- public void visitL2D( L2D obj );
-
-
- public void visitRET( RET obj );
-
-
- public void visitIFGT( IFGT obj );
-
-
- public void visitIXOR( IXOR obj );
-
-
- public void visitINVOKEVIRTUAL( INVOKEVIRTUAL obj );
-
-
- public void visitFASTORE( FASTORE obj );
-
-
- public void visitIRETURN( IRETURN obj );
-
-
- public void visitIF_ICMPNE( IF_ICMPNE obj );
-
-
- public void visitFLOAD( FLOAD obj );
-
-
- public void visitLDIV( LDIV obj );
-
-
- public void visitPUTSTATIC( PUTSTATIC obj );
-
-
- public void visitAALOAD( AALOAD obj );
-
-
- public void visitD2I( D2I obj );
-
-
- public void visitIF_ICMPEQ( IF_ICMPEQ obj );
-
-
- public void visitAASTORE( AASTORE obj );
-
-
- public void visitARETURN( ARETURN obj );
-
-
- public void visitDUP2_X1( DUP2_X1 obj );
-
-
- public void visitFNEG( FNEG obj );
-
-
- public void visitGOTO_W( GOTO_W obj );
-
-
- public void visitD2F( D2F obj );
-
-
- public void visitGOTO( GOTO obj );
-
-
- public void visitISUB( ISUB obj );
-
-
- public void visitF2I( F2I obj );
-
-
- public void visitDNEG( DNEG obj );
-
-
- public void visitICONST( ICONST obj );
-
-
- public void visitFDIV( FDIV obj );
-
-
- public void visitI2B( I2B obj );
-
-
- public void visitLNEG( LNEG obj );
-
-
- public void visitLREM( LREM obj );
-
-
- public void visitIMUL( IMUL obj );
-
-
- public void visitIADD( IADD obj );
-
-
- public void visitLSHR( LSHR obj );
-
-
- public void visitLOOKUPSWITCH( LOOKUPSWITCH obj );
-
-
- public void visitDUP_X1( DUP_X1 obj );
-
-
- public void visitFCMPL( FCMPL obj );
-
-
- public void visitI2C( I2C obj );
-
-
- public void visitLMUL( LMUL obj );
-
-
- public void visitLUSHR( LUSHR obj );
-
-
- public void visitISHL( ISHL obj );
-
-
- public void visitLALOAD( LALOAD obj );
-
-
- public void visitASTORE( ASTORE obj );
-
-
- public void visitANEWARRAY( ANEWARRAY obj );
-
-
- public void visitFRETURN( FRETURN obj );
-
-
- public void visitFADD( FADD obj );
-
-
- public void visitBREAKPOINT( BREAKPOINT obj );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.generic;
+
+/**
+ * Interface implementing the Visitor pattern programming style.
+ * I.e., a class that implements this interface can handle all types of
+ * instructions with the properly typed methods just by calling the accept()
+ * method.
+ *
+ * @version $Id: Visitor.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public interface Visitor {
+
+ public void visitStackInstruction( StackInstruction obj );
+
+
+ public void visitLocalVariableInstruction( LocalVariableInstruction obj );
+
+
+ public void visitBranchInstruction( BranchInstruction obj );
+
+
+ public void visitLoadClass( LoadClass obj );
+
+
+ public void visitFieldInstruction( FieldInstruction obj );
+
+
+ public void visitIfInstruction( IfInstruction obj );
+
+
+ public void visitConversionInstruction( ConversionInstruction obj );
+
+
+ public void visitPopInstruction( PopInstruction obj );
+
+
+ public void visitStoreInstruction( StoreInstruction obj );
+
+
+ public void visitTypedInstruction( TypedInstruction obj );
+
+
+ public void visitSelect( Select obj );
+
+
+ public void visitJsrInstruction( JsrInstruction obj );
+
+
+ public void visitGotoInstruction( GotoInstruction obj );
+
+
+ public void visitUnconditionalBranch( UnconditionalBranch obj );
+
+
+ public void visitPushInstruction( PushInstruction obj );
+
+
+ public void visitArithmeticInstruction( ArithmeticInstruction obj );
+
+
+ public void visitCPInstruction( CPInstruction obj );
+
+
+ public void visitInvokeInstruction( InvokeInstruction obj );
+
+
+ public void visitArrayInstruction( ArrayInstruction obj );
+
+
+ public void visitAllocationInstruction( AllocationInstruction obj );
+
+
+ public void visitReturnInstruction( ReturnInstruction obj );
+
+
+ public void visitFieldOrMethod( FieldOrMethod obj );
+
+
+ public void visitConstantPushInstruction( ConstantPushInstruction obj );
+
+
+ public void visitExceptionThrower( ExceptionThrower obj );
+
+
+ public void visitLoadInstruction( LoadInstruction obj );
+
+
+ public void visitVariableLengthInstruction( VariableLengthInstruction obj );
+
+
+ public void visitStackProducer( StackProducer obj );
+
+
+ public void visitStackConsumer( StackConsumer obj );
+
+
+ public void visitACONST_NULL( ACONST_NULL obj );
+
+
+ public void visitGETSTATIC( GETSTATIC obj );
+
+
+ public void visitIF_ICMPLT( IF_ICMPLT obj );
+
+
+ public void visitMONITOREXIT( MONITOREXIT obj );
+
+
+ public void visitIFLT( IFLT obj );
+
+
+ public void visitLSTORE( LSTORE obj );
+
+
+ public void visitPOP2( POP2 obj );
+
+
+ public void visitBASTORE( BASTORE obj );
+
+
+ public void visitISTORE( ISTORE obj );
+
+
+ public void visitCHECKCAST( CHECKCAST obj );
+
+
+ public void visitFCMPG( FCMPG obj );
+
+
+ public void visitI2F( I2F obj );
+
+
+ public void visitATHROW( ATHROW obj );
+
+
+ public void visitDCMPL( DCMPL obj );
+
+
+ public void visitARRAYLENGTH( ARRAYLENGTH obj );
+
+
+ public void visitDUP( DUP obj );
+
+
+ public void visitINVOKESTATIC( INVOKESTATIC obj );
+
+
+ public void visitLCONST( LCONST obj );
+
+
+ public void visitDREM( DREM obj );
+
+
+ public void visitIFGE( IFGE obj );
+
+
+ public void visitCALOAD( CALOAD obj );
+
+
+ public void visitLASTORE( LASTORE obj );
+
+
+ public void visitI2D( I2D obj );
+
+
+ public void visitDADD( DADD obj );
+
+
+ public void visitINVOKESPECIAL( INVOKESPECIAL obj );
+
+
+ public void visitIAND( IAND obj );
+
+
+ public void visitPUTFIELD( PUTFIELD obj );
+
+
+ public void visitILOAD( ILOAD obj );
+
+
+ public void visitDLOAD( DLOAD obj );
+
+
+ public void visitDCONST( DCONST obj );
+
+
+ public void visitNEW( NEW obj );
+
+
+ public void visitIFNULL( IFNULL obj );
+
+
+ public void visitLSUB( LSUB obj );
+
+
+ public void visitL2I( L2I obj );
+
+
+ public void visitISHR( ISHR obj );
+
+
+ public void visitTABLESWITCH( TABLESWITCH obj );
+
+
+ public void visitIINC( IINC obj );
+
+
+ public void visitDRETURN( DRETURN obj );
+
+
+ public void visitFSTORE( FSTORE obj );
+
+
+ public void visitDASTORE( DASTORE obj );
+
+
+ public void visitIALOAD( IALOAD obj );
+
+
+ public void visitDDIV( DDIV obj );
+
+
+ public void visitIF_ICMPGE( IF_ICMPGE obj );
+
+
+ public void visitLAND( LAND obj );
+
+
+ public void visitIDIV( IDIV obj );
+
+
+ public void visitLOR( LOR obj );
+
+
+ public void visitCASTORE( CASTORE obj );
+
+
+ public void visitFREM( FREM obj );
+
+
+ public void visitLDC( LDC obj );
+
+
+ public void visitBIPUSH( BIPUSH obj );
+
+
+ public void visitDSTORE( DSTORE obj );
+
+
+ public void visitF2L( F2L obj );
+
+
+ public void visitFMUL( FMUL obj );
+
+
+ public void visitLLOAD( LLOAD obj );
+
+
+ public void visitJSR( JSR obj );
+
+
+ public void visitFSUB( FSUB obj );
+
+
+ public void visitSASTORE( SASTORE obj );
+
+
+ public void visitALOAD( ALOAD obj );
+
+
+ public void visitDUP2_X2( DUP2_X2 obj );
+
+
+ public void visitRETURN( RETURN obj );
+
+
+ public void visitDALOAD( DALOAD obj );
+
+
+ public void visitSIPUSH( SIPUSH obj );
+
+
+ public void visitDSUB( DSUB obj );
+
+
+ public void visitL2F( L2F obj );
+
+
+ public void visitIF_ICMPGT( IF_ICMPGT obj );
+
+
+ public void visitF2D( F2D obj );
+
+
+ public void visitI2L( I2L obj );
+
+
+ public void visitIF_ACMPNE( IF_ACMPNE obj );
+
+
+ public void visitPOP( POP obj );
+
+
+ public void visitI2S( I2S obj );
+
+
+ public void visitIFEQ( IFEQ obj );
+
+
+ public void visitSWAP( SWAP obj );
+
+
+ public void visitIOR( IOR obj );
+
+
+ public void visitIREM( IREM obj );
+
+
+ public void visitIASTORE( IASTORE obj );
+
+
+ public void visitNEWARRAY( NEWARRAY obj );
+
+
+ public void visitINVOKEINTERFACE( INVOKEINTERFACE obj );
+
+
+ public void visitINEG( INEG obj );
+
+
+ public void visitLCMP( LCMP obj );
+
+
+ public void visitJSR_W( JSR_W obj );
+
+
+ public void visitMULTIANEWARRAY( MULTIANEWARRAY obj );
+
+
+ public void visitDUP_X2( DUP_X2 obj );
+
+
+ public void visitSALOAD( SALOAD obj );
+
+
+ public void visitIFNONNULL( IFNONNULL obj );
+
+
+ public void visitDMUL( DMUL obj );
+
+
+ public void visitIFNE( IFNE obj );
+
+
+ public void visitIF_ICMPLE( IF_ICMPLE obj );
+
+
+ public void visitLDC2_W( LDC2_W obj );
+
+
+ public void visitGETFIELD( GETFIELD obj );
+
+
+ public void visitLADD( LADD obj );
+
+
+ public void visitNOP( NOP obj );
+
+
+ public void visitFALOAD( FALOAD obj );
+
+
+ public void visitINSTANCEOF( INSTANCEOF obj );
+
+
+ public void visitIFLE( IFLE obj );
+
+
+ public void visitLXOR( LXOR obj );
+
+
+ public void visitLRETURN( LRETURN obj );
+
+
+ public void visitFCONST( FCONST obj );
+
+
+ public void visitIUSHR( IUSHR obj );
+
+
+ public void visitBALOAD( BALOAD obj );
+
+
+ public void visitDUP2( DUP2 obj );
+
+
+ public void visitIF_ACMPEQ( IF_ACMPEQ obj );
+
+
+ public void visitIMPDEP1( IMPDEP1 obj );
+
+
+ public void visitMONITORENTER( MONITORENTER obj );
+
+
+ public void visitLSHL( LSHL obj );
+
+
+ public void visitDCMPG( DCMPG obj );
+
+
+ public void visitD2L( D2L obj );
+
+
+ public void visitIMPDEP2( IMPDEP2 obj );
+
+
+ public void visitL2D( L2D obj );
+
+
+ public void visitRET( RET obj );
+
+
+ public void visitIFGT( IFGT obj );
+
+
+ public void visitIXOR( IXOR obj );
+
+
+ public void visitINVOKEVIRTUAL( INVOKEVIRTUAL obj );
+
+
+ public void visitFASTORE( FASTORE obj );
+
+
+ public void visitIRETURN( IRETURN obj );
+
+
+ public void visitIF_ICMPNE( IF_ICMPNE obj );
+
+
+ public void visitFLOAD( FLOAD obj );
+
+
+ public void visitLDIV( LDIV obj );
+
+
+ public void visitPUTSTATIC( PUTSTATIC obj );
+
+
+ public void visitAALOAD( AALOAD obj );
+
+
+ public void visitD2I( D2I obj );
+
+
+ public void visitIF_ICMPEQ( IF_ICMPEQ obj );
+
+
+ public void visitAASTORE( AASTORE obj );
+
+
+ public void visitARETURN( ARETURN obj );
+
+
+ public void visitDUP2_X1( DUP2_X1 obj );
+
+
+ public void visitFNEG( FNEG obj );
+
+
+ public void visitGOTO_W( GOTO_W obj );
+
+
+ public void visitD2F( D2F obj );
+
+
+ public void visitGOTO( GOTO obj );
+
+
+ public void visitISUB( ISUB obj );
+
+
+ public void visitF2I( F2I obj );
+
+
+ public void visitDNEG( DNEG obj );
+
+
+ public void visitICONST( ICONST obj );
+
+
+ public void visitFDIV( FDIV obj );
+
+
+ public void visitI2B( I2B obj );
+
+
+ public void visitLNEG( LNEG obj );
+
+
+ public void visitLREM( LREM obj );
+
+
+ public void visitIMUL( IMUL obj );
+
+
+ public void visitIADD( IADD obj );
+
+
+ public void visitLSHR( LSHR obj );
+
+
+ public void visitLOOKUPSWITCH( LOOKUPSWITCH obj );
+
+
+ public void visitDUP_X1( DUP_X1 obj );
+
+
+ public void visitFCMPL( FCMPL obj );
+
+
+ public void visitI2C( I2C obj );
+
+
+ public void visitLMUL( LMUL obj );
+
+
+ public void visitLUSHR( LUSHR obj );
+
+
+ public void visitISHL( ISHL obj );
+
+
+ public void visitLALOAD( LALOAD obj );
+
+
+ public void visitASTORE( ASTORE obj );
+
+
+ public void visitANEWARRAY( ANEWARRAY obj );
+
+
+ public void visitFRETURN( FRETURN obj );
+
+
+ public void visitFADD( FADD obj );
+
+
+ public void visitBREAKPOINT( BREAKPOINT obj );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/package.html b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/package.html
index 201d573f..b841ea11 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/package.html
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/generic/package.html
@@ -1,16 +1,16 @@
-
-
-
-
-
-
-
-This package contains the "generic" part of the
-Byte Code Engineering
-Library, i.e., classes to dynamically modify class objects and
-byte code instructions.
-
-
-
+
+
+
+
+
+
+
+This package contains the "generic" part of the
+Byte Code Engineering
+Library, i.e., classes to dynamically modify class objects and
+byte code instructions.
+
+
+
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/package.html b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/package.html
index aaded505..58603348 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/package.html
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/package.html
@@ -1,17 +1,17 @@
-
-
-
-
-
-
-
-This package contains basic classes for the
-Byte Code Engineering Library
- and constants defined by the
-
- JVM specification.
-
-
-
+
+
+
+
+
+
+
+This package contains basic classes for the
+Byte Code Engineering Library
+ and constants defined by the
+
+ JVM specification.
+
+
+
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/AttributeHTML.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/AttributeHTML.java
index 5f4e5227..8af0b193 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/AttributeHTML.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/AttributeHTML.java
@@ -1,212 +1,212 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import org.apache.bcel5_2_0.classfile.Attribute;
-import org.apache.bcel5_2_0.classfile.Code;
-import org.apache.bcel5_2_0.classfile.CodeException;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.ConstantUtf8;
-import org.apache.bcel5_2_0.classfile.ConstantValue;
-import org.apache.bcel5_2_0.classfile.ExceptionTable;
-import org.apache.bcel5_2_0.classfile.InnerClass;
-import org.apache.bcel5_2_0.classfile.InnerClasses;
-import org.apache.bcel5_2_0.classfile.LineNumber;
-import org.apache.bcel5_2_0.classfile.LineNumberTable;
-import org.apache.bcel5_2_0.classfile.LocalVariable;
-import org.apache.bcel5_2_0.classfile.LocalVariableTable;
-import org.apache.bcel5_2_0.classfile.SourceFile;
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Convert found attributes into HTML file.
- *
- * @version $Id: AttributeHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- *
- */
-final class AttributeHTML implements org.apache.bcel5_2_0.Constants {
-
- private String class_name; // name of current class
- private PrintWriter file; // file to write to
- private int attr_count = 0;
- private ConstantHTML constant_html;
- private ConstantPool constant_pool;
-
-
- AttributeHTML(String dir, String class_name, ConstantPool constant_pool,
- ConstantHTML constant_html) throws IOException {
- this.class_name = class_name;
- this.constant_pool = constant_pool;
- this.constant_html = constant_html;
- file = new PrintWriter(new FileOutputStream(dir + class_name + "_attributes.html"));
- file.println("");
- }
-
-
- private final String codeLink( int link, int method_number ) {
- return "" + link + "";
- }
-
-
- final void close() {
- file.println("
");
- file.close();
- }
-
-
- final void writeAttribute( Attribute attribute, String anchor ) throws IOException {
- writeAttribute(attribute, anchor, 0);
- }
-
-
- final void writeAttribute( Attribute attribute, String anchor, int method_number )
- throws IOException {
- byte tag = attribute.getTag();
- int index;
- if (tag == ATTR_UNKNOWN) {
- return;
- }
- attr_count++; // Increment number of attributes found so far
- if (attr_count % 2 == 0) {
- file.print("");
- } else {
- file.print(" |
");
- }
- file.println("");
- /* Handle different attributes
- */
- switch (tag) {
- case ATTR_CODE:
- Code c = (Code) attribute;
- // Some directly printable values
- file.print("- Maximum stack size = " + c.getMaxStack()
- + "
\n- Number of local variables = " + c.getMaxLocals()
- + "
\n- Byte code
\n");
- // Get handled exceptions and list them
- CodeException[] ce = c.getExceptionTable();
- int len = ce.length;
- if (len > 0) {
- file.print("Exceptions handled ");
- for (int i = 0; i < len; i++) {
- int catch_type = ce[i].getCatchType(); // Index in constant pool
- file.print("- ");
- if (catch_type != 0) {
- file.print(constant_html.referenceConstant(catch_type)); // Create Link to _cp.html
- } else {
- file.print("Any Exception");
- }
- file.print("
(Ranging from lines "
- + codeLink(ce[i].getStartPC(), method_number) + " to "
- + codeLink(ce[i].getEndPC(), method_number) + ", handled at line "
- + codeLink(ce[i].getHandlerPC(), method_number) + ") ");
- }
- file.print(" ");
- }
- break;
- case ATTR_CONSTANT_VALUE:
- index = ((ConstantValue) attribute).getConstantValueIndex();
- // Reference _cp.html
- file.print("\n");
- break;
- case ATTR_SOURCE_FILE:
- index = ((SourceFile) attribute).getSourceFileIndex();
- // Reference _cp.html
- file.print("\n");
- break;
- case ATTR_EXCEPTIONS:
- // List thrown exceptions
- int[] indices = ((ExceptionTable) attribute).getExceptionIndexTable();
- file.print("\n");
- break;
- case ATTR_LINE_NUMBER_TABLE:
- LineNumber[] line_numbers = ((LineNumberTable) attribute).getLineNumberTable();
- // List line number pairs
- file.print("");
- for (int i = 0; i < line_numbers.length; i++) {
- file.print("(" + line_numbers[i].getStartPC() + ", "
- + line_numbers[i].getLineNumber() + ")");
- if (i < line_numbers.length - 1) {
- file.print(", "); // breakable
- }
- }
- break;
- case ATTR_LOCAL_VARIABLE_TABLE:
- LocalVariable[] vars = ((LocalVariableTable) attribute).getLocalVariableTable();
- // List name, range and type
- file.print(" ");
- for (int i = 0; i < vars.length; i++) {
- index = vars[i].getSignatureIndex();
- String signature = ((ConstantUtf8) constant_pool.getConstant(index,
- CONSTANT_Utf8)).getBytes();
- signature = Utility.signatureToString(signature, false);
- int start = vars[i].getStartPC();
- int end = (start + vars[i].getLength());
- file.println("- " + Class2HTML.referenceType(signature) + " "
- + vars[i].getName() + " in slot %" + vars[i].getIndex()
- + "
Valid from lines " + ""
- + start + " to " + "" + end + " ");
- }
- file.print(" \n");
- break;
- case ATTR_INNER_CLASSES:
- InnerClass[] classes = ((InnerClasses) attribute).getInnerClasses();
- // List inner classes
- file.print("");
- for (int i = 0; i < classes.length; i++) {
- String name, access;
- index = classes[i].getInnerNameIndex();
- if (index > 0) {
- name = ((ConstantUtf8) constant_pool.getConstant(index, CONSTANT_Utf8))
- .getBytes();
- } else {
- name = "<anonymous>";
- }
- access = Utility.accessToString(classes[i].getInnerAccessFlags());
- file.print("- " + access + " "
- + constant_html.referenceConstant(classes[i].getInnerClassIndex())
- + " in class "
- + constant_html.referenceConstant(classes[i].getOuterClassIndex())
- + " named " + name + "
\n");
- }
- file.print(" \n");
- break;
- default: // Such as Unknown attribute or Deprecated
- file.print("" + attribute.toString());
- }
- file.println(" |
");
- file.flush();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.bcel5_2_0.classfile.Attribute;
+import org.apache.bcel5_2_0.classfile.Code;
+import org.apache.bcel5_2_0.classfile.CodeException;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.ConstantUtf8;
+import org.apache.bcel5_2_0.classfile.ConstantValue;
+import org.apache.bcel5_2_0.classfile.ExceptionTable;
+import org.apache.bcel5_2_0.classfile.InnerClass;
+import org.apache.bcel5_2_0.classfile.InnerClasses;
+import org.apache.bcel5_2_0.classfile.LineNumber;
+import org.apache.bcel5_2_0.classfile.LineNumberTable;
+import org.apache.bcel5_2_0.classfile.LocalVariable;
+import org.apache.bcel5_2_0.classfile.LocalVariableTable;
+import org.apache.bcel5_2_0.classfile.SourceFile;
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Convert found attributes into HTML file.
+ *
+ * @version $Id: AttributeHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ *
+ */
+final class AttributeHTML implements org.apache.bcel5_2_0.Constants {
+
+ private String class_name; // name of current class
+ private PrintWriter file; // file to write to
+ private int attr_count = 0;
+ private ConstantHTML constant_html;
+ private ConstantPool constant_pool;
+
+
+ AttributeHTML(String dir, String class_name, ConstantPool constant_pool,
+ ConstantHTML constant_html) throws IOException {
+ this.class_name = class_name;
+ this.constant_pool = constant_pool;
+ this.constant_html = constant_html;
+ file = new PrintWriter(new FileOutputStream(dir + class_name + "_attributes.html"));
+ file.println("");
+ }
+
+
+ private final String codeLink( int link, int method_number ) {
+ return "" + link + "";
+ }
+
+
+ final void close() {
+ file.println("
");
+ file.close();
+ }
+
+
+ final void writeAttribute( Attribute attribute, String anchor ) throws IOException {
+ writeAttribute(attribute, anchor, 0);
+ }
+
+
+ final void writeAttribute( Attribute attribute, String anchor, int method_number )
+ throws IOException {
+ byte tag = attribute.getTag();
+ int index;
+ if (tag == ATTR_UNKNOWN) {
+ return;
+ }
+ attr_count++; // Increment number of attributes found so far
+ if (attr_count % 2 == 0) {
+ file.print("");
+ } else {
+ file.print(" |
");
+ }
+ file.println("");
+ /* Handle different attributes
+ */
+ switch (tag) {
+ case ATTR_CODE:
+ Code c = (Code) attribute;
+ // Some directly printable values
+ file.print("- Maximum stack size = " + c.getMaxStack()
+ + "
\n- Number of local variables = " + c.getMaxLocals()
+ + "
\n- Byte code
\n");
+ // Get handled exceptions and list them
+ CodeException[] ce = c.getExceptionTable();
+ int len = ce.length;
+ if (len > 0) {
+ file.print("Exceptions handled ");
+ for (int i = 0; i < len; i++) {
+ int catch_type = ce[i].getCatchType(); // Index in constant pool
+ file.print("- ");
+ if (catch_type != 0) {
+ file.print(constant_html.referenceConstant(catch_type)); // Create Link to _cp.html
+ } else {
+ file.print("Any Exception");
+ }
+ file.print("
(Ranging from lines "
+ + codeLink(ce[i].getStartPC(), method_number) + " to "
+ + codeLink(ce[i].getEndPC(), method_number) + ", handled at line "
+ + codeLink(ce[i].getHandlerPC(), method_number) + ") ");
+ }
+ file.print(" ");
+ }
+ break;
+ case ATTR_CONSTANT_VALUE:
+ index = ((ConstantValue) attribute).getConstantValueIndex();
+ // Reference _cp.html
+ file.print("\n");
+ break;
+ case ATTR_SOURCE_FILE:
+ index = ((SourceFile) attribute).getSourceFileIndex();
+ // Reference _cp.html
+ file.print("\n");
+ break;
+ case ATTR_EXCEPTIONS:
+ // List thrown exceptions
+ int[] indices = ((ExceptionTable) attribute).getExceptionIndexTable();
+ file.print("\n");
+ break;
+ case ATTR_LINE_NUMBER_TABLE:
+ LineNumber[] line_numbers = ((LineNumberTable) attribute).getLineNumberTable();
+ // List line number pairs
+ file.print("");
+ for (int i = 0; i < line_numbers.length; i++) {
+ file.print("(" + line_numbers[i].getStartPC() + ", "
+ + line_numbers[i].getLineNumber() + ")");
+ if (i < line_numbers.length - 1) {
+ file.print(", "); // breakable
+ }
+ }
+ break;
+ case ATTR_LOCAL_VARIABLE_TABLE:
+ LocalVariable[] vars = ((LocalVariableTable) attribute).getLocalVariableTable();
+ // List name, range and type
+ file.print(" ");
+ for (int i = 0; i < vars.length; i++) {
+ index = vars[i].getSignatureIndex();
+ String signature = ((ConstantUtf8) constant_pool.getConstant(index,
+ CONSTANT_Utf8)).getBytes();
+ signature = Utility.signatureToString(signature, false);
+ int start = vars[i].getStartPC();
+ int end = (start + vars[i].getLength());
+ file.println("- " + Class2HTML.referenceType(signature) + " "
+ + vars[i].getName() + " in slot %" + vars[i].getIndex()
+ + "
Valid from lines " + ""
+ + start + " to " + "" + end + " ");
+ }
+ file.print(" \n");
+ break;
+ case ATTR_INNER_CLASSES:
+ InnerClass[] classes = ((InnerClasses) attribute).getInnerClasses();
+ // List inner classes
+ file.print("");
+ for (int i = 0; i < classes.length; i++) {
+ String name, access;
+ index = classes[i].getInnerNameIndex();
+ if (index > 0) {
+ name = ((ConstantUtf8) constant_pool.getConstant(index, CONSTANT_Utf8))
+ .getBytes();
+ } else {
+ name = "<anonymous>";
+ }
+ access = Utility.accessToString(classes[i].getInnerAccessFlags());
+ file.print("- " + access + " "
+ + constant_html.referenceConstant(classes[i].getInnerClassIndex())
+ + " in class "
+ + constant_html.referenceConstant(classes[i].getOuterClassIndex())
+ + " named " + name + "
\n");
+ }
+ file.print(" \n");
+ break;
+ default: // Such as Unknown attribute or Deprecated
+ file.print("" + attribute.toString());
+ }
+ file.println(" |
");
+ file.flush();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELComparator.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELComparator.java
index cdf7715f..273b286b 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELComparator.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELComparator.java
@@ -1,45 +1,45 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-/**
- * Used for BCEL comparison strategy
- *
- * @author M. Dahm
- * @version $Id: BCELComparator.java 410087 2006-05-29 12:12:19Z tcurdt $
- * @since 5.2
- */
-public interface BCELComparator {
-
- /**
- * Compare two objects and return what THIS.equals(THAT) should return
- *
- * @param THIS
- * @param THAT
- * @return true if and only if THIS equals THAT
- */
- public boolean equals( Object THIS, Object THAT );
-
-
- /**
- * Return hashcode for THIS.hashCode()
- *
- * @param THIS
- * @return hashcode for THIS.hashCode()
- */
- public int hashCode( Object THIS );
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+/**
+ * Used for BCEL comparison strategy
+ *
+ * @author M. Dahm
+ * @version $Id: BCELComparator.java 410087 2006-05-29 12:12:19Z tcurdt $
+ * @since 5.2
+ */
+public interface BCELComparator {
+
+ /**
+ * Compare two objects and return what THIS.equals(THAT) should return
+ *
+ * @param THIS
+ * @param THAT
+ * @return true if and only if THIS equals THAT
+ */
+ public boolean equals( Object THIS, Object THAT );
+
+
+ /**
+ * Return hashcode for THIS.hashCode()
+ *
+ * @param THIS
+ * @return hashcode for THIS.hashCode()
+ */
+ public int hashCode( Object THIS );
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELFactory.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELFactory.java
index 5dfddca2..a4037b20 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELFactory.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELFactory.java
@@ -1,327 +1,327 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.Utility;
-import org.apache.bcel5_2_0.generic.AllocationInstruction;
-import org.apache.bcel5_2_0.generic.ArrayInstruction;
-import org.apache.bcel5_2_0.generic.ArrayType;
-import org.apache.bcel5_2_0.generic.BranchHandle;
-import org.apache.bcel5_2_0.generic.BranchInstruction;
-import org.apache.bcel5_2_0.generic.CHECKCAST;
-import org.apache.bcel5_2_0.generic.CPInstruction;
-import org.apache.bcel5_2_0.generic.CodeExceptionGen;
-import org.apache.bcel5_2_0.generic.ConstantPoolGen;
-import org.apache.bcel5_2_0.generic.ConstantPushInstruction;
-import org.apache.bcel5_2_0.generic.EmptyVisitor;
-import org.apache.bcel5_2_0.generic.FieldInstruction;
-import org.apache.bcel5_2_0.generic.IINC;
-import org.apache.bcel5_2_0.generic.INSTANCEOF;
-import org.apache.bcel5_2_0.generic.Instruction;
-import org.apache.bcel5_2_0.generic.InstructionConstants;
-import org.apache.bcel5_2_0.generic.InstructionHandle;
-import org.apache.bcel5_2_0.generic.InvokeInstruction;
-import org.apache.bcel5_2_0.generic.LDC;
-import org.apache.bcel5_2_0.generic.LDC2_W;
-import org.apache.bcel5_2_0.generic.LocalVariableInstruction;
-import org.apache.bcel5_2_0.generic.MULTIANEWARRAY;
-import org.apache.bcel5_2_0.generic.MethodGen;
-import org.apache.bcel5_2_0.generic.NEWARRAY;
-import org.apache.bcel5_2_0.generic.ObjectType;
-import org.apache.bcel5_2_0.generic.RET;
-import org.apache.bcel5_2_0.generic.ReturnInstruction;
-import org.apache.bcel5_2_0.generic.Select;
-import org.apache.bcel5_2_0.generic.Type;
-
-/**
- * Factory creates il.append() statements, and sets instruction targets.
- * A helper class for BCELifier.
- *
- * @see BCELifier
- * @version $Id: BCELFactory.java 410087 2006-05-29 12:12:19Z tcurdt $
- * @author M. Dahm
- */
-class BCELFactory extends EmptyVisitor {
-
- private MethodGen _mg;
- private PrintWriter _out;
- private ConstantPoolGen _cp;
-
-
- BCELFactory(MethodGen mg, PrintWriter out) {
- _mg = mg;
- _cp = mg.getConstantPool();
- _out = out;
- }
-
- private Map branch_map = new HashMap(); // Map
-
-
- public void start() {
- if (!_mg.isAbstract() && !_mg.isNative()) {
- for (InstructionHandle ih = _mg.getInstructionList().getStart(); ih != null; ih = ih
- .getNext()) {
- Instruction i = ih.getInstruction();
- if (i instanceof BranchInstruction) {
- branch_map.put(i, ih); // memorize container
- }
- if (ih.hasTargeters()) {
- if (i instanceof BranchInstruction) {
- _out.println(" InstructionHandle ih_" + ih.getPosition() + ";");
- } else {
- _out.print(" InstructionHandle ih_" + ih.getPosition() + " = ");
- }
- } else {
- _out.print(" ");
- }
- if (!visitInstruction(i)) {
- i.accept(this);
- }
- }
- updateBranchTargets();
- updateExceptionHandlers();
- }
- }
-
-
- private boolean visitInstruction( Instruction i ) {
- short opcode = i.getOpcode();
- if ((InstructionConstants.INSTRUCTIONS[opcode] != null)
- && !(i instanceof ConstantPushInstruction) && !(i instanceof ReturnInstruction)) { // Handled below
- _out.println("il.append(InstructionConstants."
- + i.getName().toUpperCase(Locale.ENGLISH) + ");");
- return true;
- }
- return false;
- }
-
-
- public void visitLocalVariableInstruction( LocalVariableInstruction i ) {
- short opcode = i.getOpcode();
- Type type = i.getType(_cp);
- if (opcode == Constants.IINC) {
- _out.println("il.append(new IINC(" + i.getIndex() + ", " + ((IINC) i).getIncrement()
- + "));");
- } else {
- String kind = (opcode < Constants.ISTORE) ? "Load" : "Store";
- _out.println("il.append(_factory.create" + kind + "(" + BCELifier.printType(type)
- + ", " + i.getIndex() + "));");
- }
- }
-
-
- public void visitArrayInstruction( ArrayInstruction i ) {
- short opcode = i.getOpcode();
- Type type = i.getType(_cp);
- String kind = (opcode < Constants.IASTORE) ? "Load" : "Store";
- _out.println("il.append(_factory.createArray" + kind + "(" + BCELifier.printType(type)
- + "));");
- }
-
-
- public void visitFieldInstruction( FieldInstruction i ) {
- short opcode = i.getOpcode();
- String class_name = i.getClassName(_cp);
- String field_name = i.getFieldName(_cp);
- Type type = i.getFieldType(_cp);
- _out.println("il.append(_factory.createFieldAccess(\"" + class_name + "\", \"" + field_name
- + "\", " + BCELifier.printType(type) + ", " + "Constants."
- + Constants.OPCODE_NAMES[opcode].toUpperCase(Locale.ENGLISH) + "));");
- }
-
-
- public void visitInvokeInstruction( InvokeInstruction i ) {
- short opcode = i.getOpcode();
- String class_name = i.getClassName(_cp);
- String method_name = i.getMethodName(_cp);
- Type type = i.getReturnType(_cp);
- Type[] arg_types = i.getArgumentTypes(_cp);
- _out.println("il.append(_factory.createInvoke(\"" + class_name + "\", \"" + method_name
- + "\", " + BCELifier.printType(type) + ", "
- + BCELifier.printArgumentTypes(arg_types) + ", " + "Constants."
- + Constants.OPCODE_NAMES[opcode].toUpperCase(Locale.ENGLISH) + "));");
- }
-
-
- public void visitAllocationInstruction( AllocationInstruction i ) {
- Type type;
- if (i instanceof CPInstruction) {
- type = ((CPInstruction) i).getType(_cp);
- } else {
- type = ((NEWARRAY) i).getType();
- }
- short opcode = ((Instruction) i).getOpcode();
- int dim = 1;
- switch (opcode) {
- case Constants.NEW:
- _out.println("il.append(_factory.createNew(\"" + ((ObjectType) type).getClassName()
- + "\"));");
- break;
- case Constants.MULTIANEWARRAY:
- dim = ((MULTIANEWARRAY) i).getDimensions();
- case Constants.ANEWARRAY:
- case Constants.NEWARRAY:
- if (type instanceof ArrayType) {
- type = ((ArrayType) type).getBasicType();
- }
- _out.println("il.append(_factory.createNewArray(" + BCELifier.printType(type)
- + ", (short) " + dim + "));");
- break;
- default:
- throw new RuntimeException("Oops: " + opcode);
- }
- }
-
-
- private void createConstant( Object value ) {
- String embed = value.toString();
- if (value instanceof String) {
- embed = '"' + Utility.convertString(value.toString()) + '"';
- } else if (value instanceof Character) {
- embed = "(char)0x" + Integer.toHexString(((Character) value).charValue());
- }
- _out.println("il.append(new PUSH(_cp, " + embed + "));");
- }
-
-
- public void visitLDC( LDC i ) {
- createConstant(i.getValue(_cp));
- }
-
-
- public void visitLDC2_W( LDC2_W i ) {
- createConstant(i.getValue(_cp));
- }
-
-
- public void visitConstantPushInstruction( ConstantPushInstruction i ) {
- createConstant(i.getValue());
- }
-
-
- public void visitINSTANCEOF( INSTANCEOF i ) {
- Type type = i.getType(_cp);
- _out.println("il.append(new INSTANCEOF(_cp.addClass(" + BCELifier.printType(type) + ")));");
- }
-
-
- public void visitCHECKCAST( CHECKCAST i ) {
- Type type = i.getType(_cp);
- _out.println("il.append(_factory.createCheckCast(" + BCELifier.printType(type) + "));");
- }
-
-
- public void visitReturnInstruction( ReturnInstruction i ) {
- Type type = i.getType(_cp);
- _out.println("il.append(_factory.createReturn(" + BCELifier.printType(type) + "));");
- }
-
- // Memorize BranchInstructions that need an update
- private List branches = new ArrayList();
-
-
- public void visitBranchInstruction( BranchInstruction bi ) {
- BranchHandle bh = (BranchHandle) branch_map.get(bi);
- int pos = bh.getPosition();
- String name = bi.getName() + "_" + pos;
- if (bi instanceof Select) {
- Select s = (Select) bi;
- branches.add(bi);
- StringBuilder args = new StringBuilder("new int[] { ");
- int[] matchs = s.getMatchs();
- for (int i = 0; i < matchs.length; i++) {
- args.append(matchs[i]);
- if (i < matchs.length - 1) {
- args.append(", ");
- }
- }
- args.append(" }");
- _out.print("Select " + name + " = new " + bi.getName().toUpperCase(Locale.ENGLISH)
- + "(" + args + ", new InstructionHandle[] { ");
- for (int i = 0; i < matchs.length; i++) {
- _out.print("null");
- if (i < matchs.length - 1) {
- _out.print(", ");
- }
- }
- _out.println(" }, null);");
- } else {
- int t_pos = bh.getTarget().getPosition();
- String target;
- if (pos > t_pos) {
- target = "ih_" + t_pos;
- } else {
- branches.add(bi);
- target = "null";
- }
- _out.println(" BranchInstruction " + name + " = _factory.createBranchInstruction("
- + "Constants." + bi.getName().toUpperCase(Locale.ENGLISH) + ", " + target
- + ");");
- }
- if (bh.hasTargeters()) {
- _out.println(" ih_" + pos + " = il.append(" + name + ");");
- } else {
- _out.println(" il.append(" + name + ");");
- }
- }
-
-
- public void visitRET( RET i ) {
- _out.println("il.append(new RET(" + i.getIndex() + ")));");
- }
-
-
- private void updateBranchTargets() {
- for (Iterator i = branches.iterator(); i.hasNext();) {
- BranchInstruction bi = (BranchInstruction) i.next();
- BranchHandle bh = (BranchHandle) branch_map.get(bi);
- int pos = bh.getPosition();
- String name = bi.getName() + "_" + pos;
- int t_pos = bh.getTarget().getPosition();
- _out.println(" " + name + ".setTarget(ih_" + t_pos + ");");
- if (bi instanceof Select) {
- InstructionHandle[] ihs = ((Select) bi).getTargets();
- for (int j = 0; j < ihs.length; j++) {
- t_pos = ihs[j].getPosition();
- _out.println(" " + name + ".setTarget(" + j + ", ih_" + t_pos + ");");
- }
- }
- }
- }
-
-
- private void updateExceptionHandlers() {
- CodeExceptionGen[] handlers = _mg.getExceptionHandlers();
- for (int i = 0; i < handlers.length; i++) {
- CodeExceptionGen h = handlers[i];
- String type = (h.getCatchType() == null) ? "null" : BCELifier.printType(h
- .getCatchType());
- _out.println(" method.addExceptionHandler(" + "ih_" + h.getStartPC().getPosition()
- + ", " + "ih_" + h.getEndPC().getPosition() + ", " + "ih_"
- + h.getHandlerPC().getPosition() + ", " + type + ");");
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.Utility;
+import org.apache.bcel5_2_0.generic.AllocationInstruction;
+import org.apache.bcel5_2_0.generic.ArrayInstruction;
+import org.apache.bcel5_2_0.generic.ArrayType;
+import org.apache.bcel5_2_0.generic.BranchHandle;
+import org.apache.bcel5_2_0.generic.BranchInstruction;
+import org.apache.bcel5_2_0.generic.CHECKCAST;
+import org.apache.bcel5_2_0.generic.CPInstruction;
+import org.apache.bcel5_2_0.generic.CodeExceptionGen;
+import org.apache.bcel5_2_0.generic.ConstantPoolGen;
+import org.apache.bcel5_2_0.generic.ConstantPushInstruction;
+import org.apache.bcel5_2_0.generic.EmptyVisitor;
+import org.apache.bcel5_2_0.generic.FieldInstruction;
+import org.apache.bcel5_2_0.generic.IINC;
+import org.apache.bcel5_2_0.generic.INSTANCEOF;
+import org.apache.bcel5_2_0.generic.Instruction;
+import org.apache.bcel5_2_0.generic.InstructionConstants;
+import org.apache.bcel5_2_0.generic.InstructionHandle;
+import org.apache.bcel5_2_0.generic.InvokeInstruction;
+import org.apache.bcel5_2_0.generic.LDC;
+import org.apache.bcel5_2_0.generic.LDC2_W;
+import org.apache.bcel5_2_0.generic.LocalVariableInstruction;
+import org.apache.bcel5_2_0.generic.MULTIANEWARRAY;
+import org.apache.bcel5_2_0.generic.MethodGen;
+import org.apache.bcel5_2_0.generic.NEWARRAY;
+import org.apache.bcel5_2_0.generic.ObjectType;
+import org.apache.bcel5_2_0.generic.RET;
+import org.apache.bcel5_2_0.generic.ReturnInstruction;
+import org.apache.bcel5_2_0.generic.Select;
+import org.apache.bcel5_2_0.generic.Type;
+
+/**
+ * Factory creates il.append() statements, and sets instruction targets.
+ * A helper class for BCELifier.
+ *
+ * @see BCELifier
+ * @version $Id: BCELFactory.java 410087 2006-05-29 12:12:19Z tcurdt $
+ * @author M. Dahm
+ */
+class BCELFactory extends EmptyVisitor {
+
+ private MethodGen _mg;
+ private PrintWriter _out;
+ private ConstantPoolGen _cp;
+
+
+ BCELFactory(MethodGen mg, PrintWriter out) {
+ _mg = mg;
+ _cp = mg.getConstantPool();
+ _out = out;
+ }
+
+ private Map branch_map = new HashMap(); // Map
+
+
+ public void start() {
+ if (!_mg.isAbstract() && !_mg.isNative()) {
+ for (InstructionHandle ih = _mg.getInstructionList().getStart(); ih != null; ih = ih
+ .getNext()) {
+ Instruction i = ih.getInstruction();
+ if (i instanceof BranchInstruction) {
+ branch_map.put(i, ih); // memorize container
+ }
+ if (ih.hasTargeters()) {
+ if (i instanceof BranchInstruction) {
+ _out.println(" InstructionHandle ih_" + ih.getPosition() + ";");
+ } else {
+ _out.print(" InstructionHandle ih_" + ih.getPosition() + " = ");
+ }
+ } else {
+ _out.print(" ");
+ }
+ if (!visitInstruction(i)) {
+ i.accept(this);
+ }
+ }
+ updateBranchTargets();
+ updateExceptionHandlers();
+ }
+ }
+
+
+ private boolean visitInstruction( Instruction i ) {
+ short opcode = i.getOpcode();
+ if ((InstructionConstants.INSTRUCTIONS[opcode] != null)
+ && !(i instanceof ConstantPushInstruction) && !(i instanceof ReturnInstruction)) { // Handled below
+ _out.println("il.append(InstructionConstants."
+ + i.getName().toUpperCase(Locale.ENGLISH) + ");");
+ return true;
+ }
+ return false;
+ }
+
+
+ public void visitLocalVariableInstruction( LocalVariableInstruction i ) {
+ short opcode = i.getOpcode();
+ Type type = i.getType(_cp);
+ if (opcode == Constants.IINC) {
+ _out.println("il.append(new IINC(" + i.getIndex() + ", " + ((IINC) i).getIncrement()
+ + "));");
+ } else {
+ String kind = (opcode < Constants.ISTORE) ? "Load" : "Store";
+ _out.println("il.append(_factory.create" + kind + "(" + BCELifier.printType(type)
+ + ", " + i.getIndex() + "));");
+ }
+ }
+
+
+ public void visitArrayInstruction( ArrayInstruction i ) {
+ short opcode = i.getOpcode();
+ Type type = i.getType(_cp);
+ String kind = (opcode < Constants.IASTORE) ? "Load" : "Store";
+ _out.println("il.append(_factory.createArray" + kind + "(" + BCELifier.printType(type)
+ + "));");
+ }
+
+
+ public void visitFieldInstruction( FieldInstruction i ) {
+ short opcode = i.getOpcode();
+ String class_name = i.getClassName(_cp);
+ String field_name = i.getFieldName(_cp);
+ Type type = i.getFieldType(_cp);
+ _out.println("il.append(_factory.createFieldAccess(\"" + class_name + "\", \"" + field_name
+ + "\", " + BCELifier.printType(type) + ", " + "Constants."
+ + Constants.OPCODE_NAMES[opcode].toUpperCase(Locale.ENGLISH) + "));");
+ }
+
+
+ public void visitInvokeInstruction( InvokeInstruction i ) {
+ short opcode = i.getOpcode();
+ String class_name = i.getClassName(_cp);
+ String method_name = i.getMethodName(_cp);
+ Type type = i.getReturnType(_cp);
+ Type[] arg_types = i.getArgumentTypes(_cp);
+ _out.println("il.append(_factory.createInvoke(\"" + class_name + "\", \"" + method_name
+ + "\", " + BCELifier.printType(type) + ", "
+ + BCELifier.printArgumentTypes(arg_types) + ", " + "Constants."
+ + Constants.OPCODE_NAMES[opcode].toUpperCase(Locale.ENGLISH) + "));");
+ }
+
+
+ public void visitAllocationInstruction( AllocationInstruction i ) {
+ Type type;
+ if (i instanceof CPInstruction) {
+ type = ((CPInstruction) i).getType(_cp);
+ } else {
+ type = ((NEWARRAY) i).getType();
+ }
+ short opcode = ((Instruction) i).getOpcode();
+ int dim = 1;
+ switch (opcode) {
+ case Constants.NEW:
+ _out.println("il.append(_factory.createNew(\"" + ((ObjectType) type).getClassName()
+ + "\"));");
+ break;
+ case Constants.MULTIANEWARRAY:
+ dim = ((MULTIANEWARRAY) i).getDimensions();
+ case Constants.ANEWARRAY:
+ case Constants.NEWARRAY:
+ if (type instanceof ArrayType) {
+ type = ((ArrayType) type).getBasicType();
+ }
+ _out.println("il.append(_factory.createNewArray(" + BCELifier.printType(type)
+ + ", (short) " + dim + "));");
+ break;
+ default:
+ throw new RuntimeException("Oops: " + opcode);
+ }
+ }
+
+
+ private void createConstant( Object value ) {
+ String embed = value.toString();
+ if (value instanceof String) {
+ embed = '"' + Utility.convertString(value.toString()) + '"';
+ } else if (value instanceof Character) {
+ embed = "(char)0x" + Integer.toHexString(((Character) value).charValue());
+ }
+ _out.println("il.append(new PUSH(_cp, " + embed + "));");
+ }
+
+
+ public void visitLDC( LDC i ) {
+ createConstant(i.getValue(_cp));
+ }
+
+
+ public void visitLDC2_W( LDC2_W i ) {
+ createConstant(i.getValue(_cp));
+ }
+
+
+ public void visitConstantPushInstruction( ConstantPushInstruction i ) {
+ createConstant(i.getValue());
+ }
+
+
+ public void visitINSTANCEOF( INSTANCEOF i ) {
+ Type type = i.getType(_cp);
+ _out.println("il.append(new INSTANCEOF(_cp.addClass(" + BCELifier.printType(type) + ")));");
+ }
+
+
+ public void visitCHECKCAST( CHECKCAST i ) {
+ Type type = i.getType(_cp);
+ _out.println("il.append(_factory.createCheckCast(" + BCELifier.printType(type) + "));");
+ }
+
+
+ public void visitReturnInstruction( ReturnInstruction i ) {
+ Type type = i.getType(_cp);
+ _out.println("il.append(_factory.createReturn(" + BCELifier.printType(type) + "));");
+ }
+
+ // Memorize BranchInstructions that need an update
+ private List branches = new ArrayList();
+
+
+ public void visitBranchInstruction( BranchInstruction bi ) {
+ BranchHandle bh = (BranchHandle) branch_map.get(bi);
+ int pos = bh.getPosition();
+ String name = bi.getName() + "_" + pos;
+ if (bi instanceof Select) {
+ Select s = (Select) bi;
+ branches.add(bi);
+ StringBuilder args = new StringBuilder("new int[] { ");
+ int[] matchs = s.getMatchs();
+ for (int i = 0; i < matchs.length; i++) {
+ args.append(matchs[i]);
+ if (i < matchs.length - 1) {
+ args.append(", ");
+ }
+ }
+ args.append(" }");
+ _out.print("Select " + name + " = new " + bi.getName().toUpperCase(Locale.ENGLISH)
+ + "(" + args + ", new InstructionHandle[] { ");
+ for (int i = 0; i < matchs.length; i++) {
+ _out.print("null");
+ if (i < matchs.length - 1) {
+ _out.print(", ");
+ }
+ }
+ _out.println(" }, null);");
+ } else {
+ int t_pos = bh.getTarget().getPosition();
+ String target;
+ if (pos > t_pos) {
+ target = "ih_" + t_pos;
+ } else {
+ branches.add(bi);
+ target = "null";
+ }
+ _out.println(" BranchInstruction " + name + " = _factory.createBranchInstruction("
+ + "Constants." + bi.getName().toUpperCase(Locale.ENGLISH) + ", " + target
+ + ");");
+ }
+ if (bh.hasTargeters()) {
+ _out.println(" ih_" + pos + " = il.append(" + name + ");");
+ } else {
+ _out.println(" il.append(" + name + ");");
+ }
+ }
+
+
+ public void visitRET( RET i ) {
+ _out.println("il.append(new RET(" + i.getIndex() + ")));");
+ }
+
+
+ private void updateBranchTargets() {
+ for (Iterator i = branches.iterator(); i.hasNext();) {
+ BranchInstruction bi = (BranchInstruction) i.next();
+ BranchHandle bh = (BranchHandle) branch_map.get(bi);
+ int pos = bh.getPosition();
+ String name = bi.getName() + "_" + pos;
+ int t_pos = bh.getTarget().getPosition();
+ _out.println(" " + name + ".setTarget(ih_" + t_pos + ");");
+ if (bi instanceof Select) {
+ InstructionHandle[] ihs = ((Select) bi).getTargets();
+ for (int j = 0; j < ihs.length; j++) {
+ t_pos = ihs[j].getPosition();
+ _out.println(" " + name + ".setTarget(" + j + ", ih_" + t_pos + ");");
+ }
+ }
+ }
+ }
+
+
+ private void updateExceptionHandlers() {
+ CodeExceptionGen[] handlers = _mg.getExceptionHandlers();
+ for (int i = 0; i < handlers.length; i++) {
+ CodeExceptionGen h = handlers[i];
+ String type = (h.getCatchType() == null) ? "null" : BCELifier.printType(h
+ .getCatchType());
+ _out.println(" method.addExceptionHandler(" + "ih_" + h.getStartPC().getPosition()
+ + ", " + "ih_" + h.getEndPC().getPosition() + ", " + "ih_"
+ + h.getHandlerPC().getPosition() + ", " + type + ");");
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELifier.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELifier.java
index 59a82233..287b8731 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELifier.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/BCELifier.java
@@ -1,269 +1,269 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.util.Locale;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.Repository;
-import org.apache.bcel5_2_0.classfile.ClassParser;
-import org.apache.bcel5_2_0.classfile.ConstantValue;
-import org.apache.bcel5_2_0.classfile.Field;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-import org.apache.bcel5_2_0.classfile.Method;
-import org.apache.bcel5_2_0.classfile.Utility;
-import org.apache.bcel5_2_0.generic.ArrayType;
-import org.apache.bcel5_2_0.generic.ConstantPoolGen;
-import org.apache.bcel5_2_0.generic.MethodGen;
-import org.apache.bcel5_2_0.generic.Type;
-
-/**
- * This class takes a given JavaClass object and converts it to a
- * Java program that creates that very class using BCEL. This
- * gives new users of BCEL a useful example showing how things
- * are done with BCEL. It does not cover all features of BCEL,
- * but tries to mimic hand-written code as close as possible.
- *
- * @version $Id: BCELifier.java 394939 2006-04-18 13:23:49Z tcurdt $
- * @author M. Dahm
- */
-public class BCELifier extends org.apache.bcel5_2_0.classfile.EmptyVisitor {
-
- private static final int FLAG_FOR_UNKNOWN = -1;
- private static final int FLAG_FOR_CLASS = 0;
- private static final int FLAG_FOR_METHOD = 1;
- private JavaClass _clazz;
- private PrintWriter _out;
- private ConstantPoolGen _cp;
-
-
- /** @param clazz Java class to "decompile"
- * @param out where to output Java program
- */
- public BCELifier(JavaClass clazz, OutputStream out) {
- _clazz = clazz;
- _out = new PrintWriter(out);
- _cp = new ConstantPoolGen(_clazz.getConstantPool());
- }
-
-
- /** Start Java code generation
- */
- public void start() {
- visitJavaClass(_clazz);
- _out.flush();
- }
-
-
- public void visitJavaClass( JavaClass clazz ) {
- String class_name = clazz.getClassName();
- String super_name = clazz.getSuperclassName();
- String package_name = clazz.getPackageName();
- String inter = Utility.printArray(clazz.getInterfaceNames(), false, true);
- if (!"".equals(package_name)) {
- class_name = class_name.substring(package_name.length() + 1);
- _out.println("package " + package_name + ";");
- _out.println();
- }
- _out.println("import org.apache.bcel.generic.*;");
- _out.println("import org.apache.bcel.classfile.*;");
- _out.println("import org.apache.bcel.*;");
- _out.println("import java.io.*;");
- _out.println();
- _out.println("public class " + class_name + "Creator implements Constants {");
- _out.println(" private InstructionFactory _factory;");
- _out.println(" private ConstantPoolGen _cp;");
- _out.println(" private ClassGen _cg;");
- _out.println();
- _out.println(" public " + class_name + "Creator() {");
- _out.println(" _cg = new ClassGen(\""
- + (("".equals(package_name)) ? class_name : package_name + "." + class_name)
- + "\", \"" + super_name + "\", " + "\"" + clazz.getSourceFileName() + "\", "
- + printFlags(clazz.getAccessFlags(), FLAG_FOR_CLASS) + ", " + "new String[] { "
- + inter + " });");
- _out.println();
- _out.println(" _cp = _cg.getConstantPool();");
- _out.println(" _factory = new InstructionFactory(_cg, _cp);");
- _out.println(" }");
- _out.println();
- printCreate();
- Field[] fields = clazz.getFields();
- if (fields.length > 0) {
- _out.println(" private void createFields() {");
- _out.println(" FieldGen field;");
- for (int i = 0; i < fields.length; i++) {
- fields[i].accept(this);
- }
- _out.println(" }");
- _out.println();
- }
- Method[] methods = clazz.getMethods();
- for (int i = 0; i < methods.length; i++) {
- _out.println(" private void createMethod_" + i + "() {");
- methods[i].accept(this);
- _out.println(" }");
- _out.println();
- }
- printMain();
- _out.println("}");
- }
-
-
- private void printCreate() {
- _out.println(" public void create(OutputStream out) throws IOException {");
- Field[] fields = _clazz.getFields();
- if (fields.length > 0) {
- _out.println(" createFields();");
- }
- Method[] methods = _clazz.getMethods();
- for (int i = 0; i < methods.length; i++) {
- _out.println(" createMethod_" + i + "();");
- }
- _out.println(" _cg.getJavaClass().dump(out);");
- _out.println(" }");
- _out.println();
- }
-
-
- private void printMain() {
- String class_name = _clazz.getClassName();
- _out.println(" public static void main(String[] args) throws Exception {");
- _out.println(" " + class_name + "Creator creator = new " + class_name + "Creator();");
- _out.println(" creator.create(new FileOutputStream(\"" + class_name + ".class\"));");
- _out.println(" }");
- }
-
-
- public void visitField( Field field ) {
- _out.println();
- _out.println(" field = new FieldGen(" + printFlags(field.getAccessFlags()) + ", "
- + printType(field.getSignature()) + ", \"" + field.getName() + "\", _cp);");
- ConstantValue cv = field.getConstantValue();
- if (cv != null) {
- String value = cv.toString();
- _out.println(" field.setInitValue(" + value + ")");
- }
- _out.println(" _cg.addField(field.getField());");
- }
-
-
- public void visitMethod( Method method ) {
- MethodGen mg = new MethodGen(method, _clazz.getClassName(), _cp);
- Type result_type = mg.getReturnType();
- Type[] arg_types = mg.getArgumentTypes();
- _out.println(" InstructionList il = new InstructionList();");
- _out.println(" MethodGen method = new MethodGen("
- + printFlags(method.getAccessFlags(), FLAG_FOR_METHOD) + ", "
- + printType(result_type) + ", " + printArgumentTypes(arg_types) + ", "
- + "new String[] { " + Utility.printArray(mg.getArgumentNames(), false, true)
- + " }, \"" + method.getName() + "\", \"" + _clazz.getClassName() + "\", il, _cp);");
- _out.println();
- BCELFactory factory = new BCELFactory(mg, _out);
- factory.start();
- _out.println(" method.setMaxStack();");
- _out.println(" method.setMaxLocals();");
- _out.println(" _cg.addMethod(method.getMethod());");
- _out.println(" il.dispose();");
- }
-
-
- static String printFlags( int flags ) {
- return printFlags(flags, FLAG_FOR_UNKNOWN);
- }
-
-
- static String printFlags( int flags, int reason ) {
- if (flags == 0) {
- return "0";
- }
- StringBuilder buf = new StringBuilder();
- for (int i = 0, pow = 1; pow <= Constants.MAX_ACC_FLAG; i++) {
- if ((flags & pow) != 0) {
- if ((pow == Constants.ACC_SYNCHRONIZED) && (reason == FLAG_FOR_CLASS)) {
- buf.append("ACC_SUPER | ");
- } else if ((pow == Constants.ACC_VOLATILE) && (reason == FLAG_FOR_METHOD)) {
- buf.append("ACC_BRIDGE | ");
- } else if ((pow == Constants.ACC_TRANSIENT) && (reason == FLAG_FOR_METHOD)) {
- buf.append("ACC_VARARGS | ");
- } else {
- buf.append("ACC_")
- .append(Constants.ACCESS_NAMES[i].toUpperCase(Locale.ENGLISH)).append(
- " | ");
- }
- }
- pow <<= 1;
- }
- String str = buf.toString();
- return str.substring(0, str.length() - 3);
- }
-
-
- static String printArgumentTypes( Type[] arg_types ) {
- if (arg_types.length == 0) {
- return "Type.NO_ARGS";
- }
- StringBuilder args = new StringBuilder();
- for (int i = 0; i < arg_types.length; i++) {
- args.append(printType(arg_types[i]));
- if (i < arg_types.length - 1) {
- args.append(", ");
- }
- }
- return "new Type[] { " + args.toString() + " }";
- }
-
-
- static String printType( Type type ) {
- return printType(type.getSignature());
- }
-
-
- static String printType( String signature ) {
- Type type = Type.getType(signature);
- byte t = type.getType();
- if (t <= Constants.T_VOID) {
- return "Type." + Constants.TYPE_NAMES[t].toUpperCase(Locale.ENGLISH);
- } else if (type.toString().equals("java.lang.String")) {
- return "Type.STRING";
- } else if (type.toString().equals("java.lang.Object")) {
- return "Type.OBJECT";
- } else if (type.toString().equals("java.lang.StringBuffer")) {
- return "Type.STRINGBUFFER";
- } else if (type instanceof ArrayType) {
- ArrayType at = (ArrayType) type;
- return "new ArrayType(" + printType(at.getBasicType()) + ", " + at.getDimensions()
- + ")";
- } else {
- return "new ObjectType(\"" + Utility.signatureToString(signature, false) + "\")";
- }
- }
-
-
- /** Default main method
- */
- public static void main( String[] argv ) throws Exception {
- JavaClass java_class;
- String name = argv[0];
- if ((java_class = Repository.lookupClass(name)) == null) {
- java_class = new ClassParser(name).parse(); // May throw IOException
- }
- BCELifier bcelifier = new BCELifier(java_class, System.out);
- bcelifier.start();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.util.Locale;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.Repository;
+import org.apache.bcel5_2_0.classfile.ClassParser;
+import org.apache.bcel5_2_0.classfile.ConstantValue;
+import org.apache.bcel5_2_0.classfile.Field;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+import org.apache.bcel5_2_0.classfile.Method;
+import org.apache.bcel5_2_0.classfile.Utility;
+import org.apache.bcel5_2_0.generic.ArrayType;
+import org.apache.bcel5_2_0.generic.ConstantPoolGen;
+import org.apache.bcel5_2_0.generic.MethodGen;
+import org.apache.bcel5_2_0.generic.Type;
+
+/**
+ * This class takes a given JavaClass object and converts it to a
+ * Java program that creates that very class using BCEL. This
+ * gives new users of BCEL a useful example showing how things
+ * are done with BCEL. It does not cover all features of BCEL,
+ * but tries to mimic hand-written code as close as possible.
+ *
+ * @version $Id: BCELifier.java 394939 2006-04-18 13:23:49Z tcurdt $
+ * @author M. Dahm
+ */
+public class BCELifier extends org.apache.bcel5_2_0.classfile.EmptyVisitor {
+
+ private static final int FLAG_FOR_UNKNOWN = -1;
+ private static final int FLAG_FOR_CLASS = 0;
+ private static final int FLAG_FOR_METHOD = 1;
+ private JavaClass _clazz;
+ private PrintWriter _out;
+ private ConstantPoolGen _cp;
+
+
+ /** @param clazz Java class to "decompile"
+ * @param out where to output Java program
+ */
+ public BCELifier(JavaClass clazz, OutputStream out) {
+ _clazz = clazz;
+ _out = new PrintWriter(out);
+ _cp = new ConstantPoolGen(_clazz.getConstantPool());
+ }
+
+
+ /** Start Java code generation
+ */
+ public void start() {
+ visitJavaClass(_clazz);
+ _out.flush();
+ }
+
+
+ public void visitJavaClass( JavaClass clazz ) {
+ String class_name = clazz.getClassName();
+ String super_name = clazz.getSuperclassName();
+ String package_name = clazz.getPackageName();
+ String inter = Utility.printArray(clazz.getInterfaceNames(), false, true);
+ if (!"".equals(package_name)) {
+ class_name = class_name.substring(package_name.length() + 1);
+ _out.println("package " + package_name + ";");
+ _out.println();
+ }
+ _out.println("import org.apache.bcel.generic.*;");
+ _out.println("import org.apache.bcel.classfile.*;");
+ _out.println("import org.apache.bcel.*;");
+ _out.println("import java.io.*;");
+ _out.println();
+ _out.println("public class " + class_name + "Creator implements Constants {");
+ _out.println(" private InstructionFactory _factory;");
+ _out.println(" private ConstantPoolGen _cp;");
+ _out.println(" private ClassGen _cg;");
+ _out.println();
+ _out.println(" public " + class_name + "Creator() {");
+ _out.println(" _cg = new ClassGen(\""
+ + (("".equals(package_name)) ? class_name : package_name + "." + class_name)
+ + "\", \"" + super_name + "\", " + "\"" + clazz.getSourceFileName() + "\", "
+ + printFlags(clazz.getAccessFlags(), FLAG_FOR_CLASS) + ", " + "new String[] { "
+ + inter + " });");
+ _out.println();
+ _out.println(" _cp = _cg.getConstantPool();");
+ _out.println(" _factory = new InstructionFactory(_cg, _cp);");
+ _out.println(" }");
+ _out.println();
+ printCreate();
+ Field[] fields = clazz.getFields();
+ if (fields.length > 0) {
+ _out.println(" private void createFields() {");
+ _out.println(" FieldGen field;");
+ for (int i = 0; i < fields.length; i++) {
+ fields[i].accept(this);
+ }
+ _out.println(" }");
+ _out.println();
+ }
+ Method[] methods = clazz.getMethods();
+ for (int i = 0; i < methods.length; i++) {
+ _out.println(" private void createMethod_" + i + "() {");
+ methods[i].accept(this);
+ _out.println(" }");
+ _out.println();
+ }
+ printMain();
+ _out.println("}");
+ }
+
+
+ private void printCreate() {
+ _out.println(" public void create(OutputStream out) throws IOException {");
+ Field[] fields = _clazz.getFields();
+ if (fields.length > 0) {
+ _out.println(" createFields();");
+ }
+ Method[] methods = _clazz.getMethods();
+ for (int i = 0; i < methods.length; i++) {
+ _out.println(" createMethod_" + i + "();");
+ }
+ _out.println(" _cg.getJavaClass().dump(out);");
+ _out.println(" }");
+ _out.println();
+ }
+
+
+ private void printMain() {
+ String class_name = _clazz.getClassName();
+ _out.println(" public static void main(String[] args) throws Exception {");
+ _out.println(" " + class_name + "Creator creator = new " + class_name + "Creator();");
+ _out.println(" creator.create(new FileOutputStream(\"" + class_name + ".class\"));");
+ _out.println(" }");
+ }
+
+
+ public void visitField( Field field ) {
+ _out.println();
+ _out.println(" field = new FieldGen(" + printFlags(field.getAccessFlags()) + ", "
+ + printType(field.getSignature()) + ", \"" + field.getName() + "\", _cp);");
+ ConstantValue cv = field.getConstantValue();
+ if (cv != null) {
+ String value = cv.toString();
+ _out.println(" field.setInitValue(" + value + ")");
+ }
+ _out.println(" _cg.addField(field.getField());");
+ }
+
+
+ public void visitMethod( Method method ) {
+ MethodGen mg = new MethodGen(method, _clazz.getClassName(), _cp);
+ Type result_type = mg.getReturnType();
+ Type[] arg_types = mg.getArgumentTypes();
+ _out.println(" InstructionList il = new InstructionList();");
+ _out.println(" MethodGen method = new MethodGen("
+ + printFlags(method.getAccessFlags(), FLAG_FOR_METHOD) + ", "
+ + printType(result_type) + ", " + printArgumentTypes(arg_types) + ", "
+ + "new String[] { " + Utility.printArray(mg.getArgumentNames(), false, true)
+ + " }, \"" + method.getName() + "\", \"" + _clazz.getClassName() + "\", il, _cp);");
+ _out.println();
+ BCELFactory factory = new BCELFactory(mg, _out);
+ factory.start();
+ _out.println(" method.setMaxStack();");
+ _out.println(" method.setMaxLocals();");
+ _out.println(" _cg.addMethod(method.getMethod());");
+ _out.println(" il.dispose();");
+ }
+
+
+ static String printFlags( int flags ) {
+ return printFlags(flags, FLAG_FOR_UNKNOWN);
+ }
+
+
+ static String printFlags( int flags, int reason ) {
+ if (flags == 0) {
+ return "0";
+ }
+ StringBuilder buf = new StringBuilder();
+ for (int i = 0, pow = 1; pow <= Constants.MAX_ACC_FLAG; i++) {
+ if ((flags & pow) != 0) {
+ if ((pow == Constants.ACC_SYNCHRONIZED) && (reason == FLAG_FOR_CLASS)) {
+ buf.append("ACC_SUPER | ");
+ } else if ((pow == Constants.ACC_VOLATILE) && (reason == FLAG_FOR_METHOD)) {
+ buf.append("ACC_BRIDGE | ");
+ } else if ((pow == Constants.ACC_TRANSIENT) && (reason == FLAG_FOR_METHOD)) {
+ buf.append("ACC_VARARGS | ");
+ } else {
+ buf.append("ACC_")
+ .append(Constants.ACCESS_NAMES[i].toUpperCase(Locale.ENGLISH)).append(
+ " | ");
+ }
+ }
+ pow <<= 1;
+ }
+ String str = buf.toString();
+ return str.substring(0, str.length() - 3);
+ }
+
+
+ static String printArgumentTypes( Type[] arg_types ) {
+ if (arg_types.length == 0) {
+ return "Type.NO_ARGS";
+ }
+ StringBuilder args = new StringBuilder();
+ for (int i = 0; i < arg_types.length; i++) {
+ args.append(printType(arg_types[i]));
+ if (i < arg_types.length - 1) {
+ args.append(", ");
+ }
+ }
+ return "new Type[] { " + args.toString() + " }";
+ }
+
+
+ static String printType( Type type ) {
+ return printType(type.getSignature());
+ }
+
+
+ static String printType( String signature ) {
+ Type type = Type.getType(signature);
+ byte t = type.getType();
+ if (t <= Constants.T_VOID) {
+ return "Type." + Constants.TYPE_NAMES[t].toUpperCase(Locale.ENGLISH);
+ } else if (type.toString().equals("java.lang.String")) {
+ return "Type.STRING";
+ } else if (type.toString().equals("java.lang.Object")) {
+ return "Type.OBJECT";
+ } else if (type.toString().equals("java.lang.StringBuffer")) {
+ return "Type.STRINGBUFFER";
+ } else if (type instanceof ArrayType) {
+ ArrayType at = (ArrayType) type;
+ return "new ArrayType(" + printType(at.getBasicType()) + ", " + at.getDimensions()
+ + ")";
+ } else {
+ return "new ObjectType(\"" + Utility.signatureToString(signature, false) + "\")";
+ }
+ }
+
+
+ /** Default main method
+ */
+ public static void main( String[] argv ) throws Exception {
+ JavaClass java_class;
+ String name = argv[0];
+ if ((java_class = Repository.lookupClass(name)) == null) {
+ java_class = new ClassParser(name).parse(); // May throw IOException
+ }
+ BCELifier bcelifier = new BCELifier(java_class, System.out);
+ bcelifier.start();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ByteSequence.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ByteSequence.java
index 802469b4..fb8abef4 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ByteSequence.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ByteSequence.java
@@ -1,68 +1,68 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-
-/**
- * Utility class that implements a sequence of bytes which can be read
- * via the `readByte()' method. This is used to implement a wrapper for the
- * Java byte code stream to gain some more readability.
- *
- * @version $Id: ByteSequence.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public final class ByteSequence extends DataInputStream {
-
- private ByteArrayStream byte_stream;
-
-
- public ByteSequence(byte[] bytes) {
- super(new ByteArrayStream(bytes));
- byte_stream = (ByteArrayStream) in;
- }
-
-
- public final int getIndex() {
- return byte_stream.getPosition();
- }
-
-
- final void unreadByte() {
- byte_stream.unreadByte();
- }
-
- private static final class ByteArrayStream extends ByteArrayInputStream {
-
- ByteArrayStream(byte[] bytes) {
- super(bytes);
- }
-
-
- final int getPosition() {
- return pos;
- } // is protected in ByteArrayInputStream
-
-
- final void unreadByte() {
- if (pos > 0) {
- pos--;
- }
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+
+/**
+ * Utility class that implements a sequence of bytes which can be read
+ * via the `readByte()' method. This is used to implement a wrapper for the
+ * Java byte code stream to gain some more readability.
+ *
+ * @version $Id: ByteSequence.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public final class ByteSequence extends DataInputStream {
+
+ private ByteArrayStream byte_stream;
+
+
+ public ByteSequence(byte[] bytes) {
+ super(new ByteArrayStream(bytes));
+ byte_stream = (ByteArrayStream) in;
+ }
+
+
+ public final int getIndex() {
+ return byte_stream.getPosition();
+ }
+
+
+ final void unreadByte() {
+ byte_stream.unreadByte();
+ }
+
+ private static final class ByteArrayStream extends ByteArrayInputStream {
+
+ ByteArrayStream(byte[] bytes) {
+ super(bytes);
+ }
+
+
+ final int getPosition() {
+ return pos;
+ } // is protected in ByteArrayInputStream
+
+
+ final void unreadByte() {
+ if (pos > 0) {
+ pos--;
+ }
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Class2HTML.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Class2HTML.java
index 319cb223..d1f161df 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Class2HTML.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Class2HTML.java
@@ -1,232 +1,232 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.Attribute;
-import org.apache.bcel5_2_0.classfile.ClassParser;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-import org.apache.bcel5_2_0.classfile.Method;
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Read class file(s) and convert them into HTML files.
- *
- * Given a JavaClass object "class" that is in package "package" five files
- * will be created in the specified directory.
- *
- *
- * - "package"."class".html as the main file which defines the frames for
- * the following subfiles.
- *
- "package"."class"_attributes.html contains all (known) attributes found in the file
- *
- "package"."class"_cp.html contains the constant pool
- *
- "package"."class"_code.html contains the byte code
- *
- "package"."class"_methods.html contains references to all methods and fields of the class
- *
- *
- * All subfiles reference each other appropiately, e.g. clicking on a
- * method in the Method's frame will jump to the appropiate method in
- * the Code frame.
- *
- * @version $Id: Class2HTML.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class Class2HTML implements Constants {
-
- private JavaClass java_class; // current class object
- private String dir;
- private static String class_package; // name of package, unclean to make it static, but ...
- private static String class_name; // name of current class, dito
- private static ConstantPool constant_pool;
-
-
- /**
- * Write contents of the given JavaClass into HTML files.
- *
- * @param java_class The class to write
- * @param dir The directory to put the files in
- */
- public Class2HTML(JavaClass java_class, String dir) throws IOException {
- Method[] methods = java_class.getMethods();
- this.java_class = java_class;
- this.dir = dir;
- class_name = java_class.getClassName(); // Remember full name
- constant_pool = java_class.getConstantPool();
- // Get package name by tacking off everything after the last `.'
- int index = class_name.lastIndexOf('.');
- if (index > -1) {
- class_package = class_name.substring(0, index);
- } else {
- class_package = ""; // default package
- }
- ConstantHTML constant_html = new ConstantHTML(dir, class_name, class_package, methods,
- constant_pool);
- /* Attributes can't be written in one step, so we just open a file
- * which will be written consequently.
- */
- AttributeHTML attribute_html = new AttributeHTML(dir, class_name, constant_pool,
- constant_html);
- MethodHTML method_html = new MethodHTML(dir, class_name, methods, java_class.getFields(),
- constant_html, attribute_html);
- // Write main file (with frames, yuk)
- writeMainHTML(attribute_html);
- new CodeHTML(dir, class_name, methods, constant_pool, constant_html);
- attribute_html.close();
- }
-
-
- public static void main( String argv[] ) {
- String[] file_name = new String[argv.length];
- int files = 0;
- ClassParser parser = null;
- JavaClass java_class = null;
- String zip_file = null;
- char sep = System.getProperty("file.separator").toCharArray()[0];
- String dir = "." + sep; // Where to store HTML files
- try {
- /* Parse command line arguments.
- */
- for (int i = 0; i < argv.length; i++) {
- if (argv[i].charAt(0) == '-') { // command line switch
- if (argv[i].equals("-d")) { // Specify target directory, default
- dir = argv[++i];
- if (!dir.endsWith("" + sep)) {
- dir = dir + sep;
- }
- new File(dir).mkdirs(); // Create target directory if necessary
- } else if (argv[i].equals("-zip")) {
- zip_file = argv[++i];
- } else {
- System.out.println("Unknown option " + argv[i]);
- }
- } else {
- file_name[files++] = argv[i];
- }
- }
- if (files == 0) {
- System.err.println("Class2HTML: No input files specified.");
- } else { // Loop through files ...
- for (int i = 0; i < files; i++) {
- System.out.print("Processing " + file_name[i] + "...");
- if (zip_file == null) {
- parser = new ClassParser(file_name[i]); // Create parser object from file
- } else {
- parser = new ClassParser(zip_file, file_name[i]); // Create parser object from zip file
- }
- java_class = parser.parse();
- new Class2HTML(java_class, dir);
- System.out.println("Done.");
- }
- }
- } catch (Exception e) {
- System.out.println(e);
- e.printStackTrace(System.out);
- }
- }
-
-
- /**
- * Utility method that converts a class reference in the constant pool,
- * i.e., an index to a string.
- */
- static String referenceClass( int index ) {
- String str = constant_pool.getConstantString(index, CONSTANT_Class);
- str = Utility.compactClassName(str);
- str = Utility.compactClassName(str, class_package + ".", true);
- return "" + str
- + "";
- }
-
-
- static final String referenceType( String type ) {
- String short_type = Utility.compactClassName(type);
- short_type = Utility.compactClassName(short_type, class_package + ".", true);
- int index = type.indexOf('['); // Type is an array?
- String base_type = type;
- if (index > -1) {
- base_type = type.substring(0, index); // Tack of the `['
- }
- // test for basic type
- if (base_type.equals("int") || base_type.equals("short") || base_type.equals("boolean")
- || base_type.equals("void") || base_type.equals("char") || base_type.equals("byte")
- || base_type.equals("long") || base_type.equals("double")
- || base_type.equals("float")) {
- return "" + type + "";
- } else {
- return "" + short_type + "";
- }
- }
-
-
- static String toHTML( String str ) {
- StringBuilder buf = new StringBuilder();
- try { // Filter any characters HTML doesn't like such as < and > in particular
- for (int i = 0; i < str.length(); i++) {
- char ch;
- switch (ch = str.charAt(i)) {
- case '<':
- buf.append("<");
- break;
- case '>':
- buf.append(">");
- break;
- case '\n':
- buf.append("\\n");
- break;
- case '\r':
- buf.append("\\r");
- break;
- default:
- buf.append(ch);
- }
- }
- } catch (StringIndexOutOfBoundsException e) {
- } // Never occurs
- return buf.toString();
- }
-
-
- private void writeMainHTML( AttributeHTML attribute_html ) throws IOException {
- PrintWriter file = new PrintWriter(new FileOutputStream(dir + class_name + ".html"));
- Attribute[] attributes = java_class.getAttributes();
- file.println("\n" + "Documentation for " + class_name + ""
- + "\n" + "");
- file.close();
- for (int i = 0; i < attributes.length; i++) {
- attribute_html.writeAttribute(attributes[i], "class" + i);
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.Attribute;
+import org.apache.bcel5_2_0.classfile.ClassParser;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+import org.apache.bcel5_2_0.classfile.Method;
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Read class file(s) and convert them into HTML files.
+ *
+ * Given a JavaClass object "class" that is in package "package" five files
+ * will be created in the specified directory.
+ *
+ *
+ * - "package"."class".html as the main file which defines the frames for
+ * the following subfiles.
+ *
- "package"."class"_attributes.html contains all (known) attributes found in the file
+ *
- "package"."class"_cp.html contains the constant pool
+ *
- "package"."class"_code.html contains the byte code
+ *
- "package"."class"_methods.html contains references to all methods and fields of the class
+ *
+ *
+ * All subfiles reference each other appropiately, e.g. clicking on a
+ * method in the Method's frame will jump to the appropiate method in
+ * the Code frame.
+ *
+ * @version $Id: Class2HTML.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class Class2HTML implements Constants {
+
+ private JavaClass java_class; // current class object
+ private String dir;
+ private static String class_package; // name of package, unclean to make it static, but ...
+ private static String class_name; // name of current class, dito
+ private static ConstantPool constant_pool;
+
+
+ /**
+ * Write contents of the given JavaClass into HTML files.
+ *
+ * @param java_class The class to write
+ * @param dir The directory to put the files in
+ */
+ public Class2HTML(JavaClass java_class, String dir) throws IOException {
+ Method[] methods = java_class.getMethods();
+ this.java_class = java_class;
+ this.dir = dir;
+ class_name = java_class.getClassName(); // Remember full name
+ constant_pool = java_class.getConstantPool();
+ // Get package name by tacking off everything after the last `.'
+ int index = class_name.lastIndexOf('.');
+ if (index > -1) {
+ class_package = class_name.substring(0, index);
+ } else {
+ class_package = ""; // default package
+ }
+ ConstantHTML constant_html = new ConstantHTML(dir, class_name, class_package, methods,
+ constant_pool);
+ /* Attributes can't be written in one step, so we just open a file
+ * which will be written consequently.
+ */
+ AttributeHTML attribute_html = new AttributeHTML(dir, class_name, constant_pool,
+ constant_html);
+ MethodHTML method_html = new MethodHTML(dir, class_name, methods, java_class.getFields(),
+ constant_html, attribute_html);
+ // Write main file (with frames, yuk)
+ writeMainHTML(attribute_html);
+ new CodeHTML(dir, class_name, methods, constant_pool, constant_html);
+ attribute_html.close();
+ }
+
+
+ public static void main( String argv[] ) {
+ String[] file_name = new String[argv.length];
+ int files = 0;
+ ClassParser parser = null;
+ JavaClass java_class = null;
+ String zip_file = null;
+ char sep = System.getProperty("file.separator").toCharArray()[0];
+ String dir = "." + sep; // Where to store HTML files
+ try {
+ /* Parse command line arguments.
+ */
+ for (int i = 0; i < argv.length; i++) {
+ if (argv[i].charAt(0) == '-') { // command line switch
+ if (argv[i].equals("-d")) { // Specify target directory, default
+ dir = argv[++i];
+ if (!dir.endsWith("" + sep)) {
+ dir = dir + sep;
+ }
+ new File(dir).mkdirs(); // Create target directory if necessary
+ } else if (argv[i].equals("-zip")) {
+ zip_file = argv[++i];
+ } else {
+ System.out.println("Unknown option " + argv[i]);
+ }
+ } else {
+ file_name[files++] = argv[i];
+ }
+ }
+ if (files == 0) {
+ System.err.println("Class2HTML: No input files specified.");
+ } else { // Loop through files ...
+ for (int i = 0; i < files; i++) {
+ System.out.print("Processing " + file_name[i] + "...");
+ if (zip_file == null) {
+ parser = new ClassParser(file_name[i]); // Create parser object from file
+ } else {
+ parser = new ClassParser(zip_file, file_name[i]); // Create parser object from zip file
+ }
+ java_class = parser.parse();
+ new Class2HTML(java_class, dir);
+ System.out.println("Done.");
+ }
+ }
+ } catch (Exception e) {
+ System.out.println(e);
+ e.printStackTrace(System.out);
+ }
+ }
+
+
+ /**
+ * Utility method that converts a class reference in the constant pool,
+ * i.e., an index to a string.
+ */
+ static String referenceClass( int index ) {
+ String str = constant_pool.getConstantString(index, CONSTANT_Class);
+ str = Utility.compactClassName(str);
+ str = Utility.compactClassName(str, class_package + ".", true);
+ return "" + str
+ + "";
+ }
+
+
+ static final String referenceType( String type ) {
+ String short_type = Utility.compactClassName(type);
+ short_type = Utility.compactClassName(short_type, class_package + ".", true);
+ int index = type.indexOf('['); // Type is an array?
+ String base_type = type;
+ if (index > -1) {
+ base_type = type.substring(0, index); // Tack of the `['
+ }
+ // test for basic type
+ if (base_type.equals("int") || base_type.equals("short") || base_type.equals("boolean")
+ || base_type.equals("void") || base_type.equals("char") || base_type.equals("byte")
+ || base_type.equals("long") || base_type.equals("double")
+ || base_type.equals("float")) {
+ return "" + type + "";
+ } else {
+ return "" + short_type + "";
+ }
+ }
+
+
+ static String toHTML( String str ) {
+ StringBuilder buf = new StringBuilder();
+ try { // Filter any characters HTML doesn't like such as < and > in particular
+ for (int i = 0; i < str.length(); i++) {
+ char ch;
+ switch (ch = str.charAt(i)) {
+ case '<':
+ buf.append("<");
+ break;
+ case '>':
+ buf.append(">");
+ break;
+ case '\n':
+ buf.append("\\n");
+ break;
+ case '\r':
+ buf.append("\\r");
+ break;
+ default:
+ buf.append(ch);
+ }
+ }
+ } catch (StringIndexOutOfBoundsException e) {
+ } // Never occurs
+ return buf.toString();
+ }
+
+
+ private void writeMainHTML( AttributeHTML attribute_html ) throws IOException {
+ PrintWriter file = new PrintWriter(new FileOutputStream(dir + class_name + ".html"));
+ Attribute[] attributes = java_class.getAttributes();
+ file.println("\n" + "Documentation for " + class_name + ""
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "");
+ file.close();
+ for (int i = 0; i < attributes.length; i++) {
+ attribute_html.writeAttribute(attributes[i], "class" + i);
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoader.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoader.java
index 686d4f8e..eb02383a 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoader.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoader.java
@@ -1,185 +1,185 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.ByteArrayInputStream;
-import java.util.Hashtable;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.classfile.ClassParser;
-import org.apache.bcel5_2_0.classfile.ConstantClass;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.ConstantUtf8;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Drop in replacement for the standard class loader of the JVM. You can use it
- * in conjunction with the JavaWrapper to dynamically modify/create classes
- * as they're requested.
- *
- * This class loader recognizes special requests in a distinct
- * format, i.e., when the name of the requested class contains with
- * "$$BCEL$$" it calls the createClass() method with that name
- * (everything bevor the $$BCEL$$ is considered to be the package
- * name. You can subclass the class loader and override that
- * method. "Normal" classes class can be modified by overriding the
- * modifyClass() method which is called just before defineClass().
- *
- * There may be a number of packages where you have to use the
- * default class loader (which may also be faster). You can define the
- * set of packages where to use the system class loader in the
- * constructor. The default value contains "java.", "sun.",
- * "javax."
- *
- * @version $Id: ClassLoader.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see JavaWrapper
- * @see ClassPath
- */
-public class ClassLoader extends java.lang.ClassLoader {
-
- public static final String[] DEFAULT_IGNORED_PACKAGES = {
- "java.", "javax.", "sun."
- };
- private Hashtable classes = new Hashtable(); // Hashtable is synchronized thus thread-safe
- private String[] ignored_packages;
- private Repository repository = SyntheticRepository.getInstance();
-
-
- /** Ignored packages are by default ( "java.", "sun.",
- * "javax."), i.e. loaded by system class loader
- */
- public ClassLoader() {
- this(DEFAULT_IGNORED_PACKAGES);
- }
-
-
- /** @param deferTo delegate class loader to use for ignored packages
- */
- public ClassLoader(java.lang.ClassLoader deferTo) {
- super(deferTo);
- this.ignored_packages = DEFAULT_IGNORED_PACKAGES;
- this.repository = new ClassLoaderRepository(deferTo);
- }
-
-
- /** @param ignored_packages classes contained in these packages will be loaded
- * with the system class loader
- */
- public ClassLoader(String[] ignored_packages) {
- this.ignored_packages = ignored_packages;
- }
-
-
- /** @param ignored_packages classes contained in these packages will be loaded
- * with the system class loader
- * @param deferTo delegate class loader to use for ignored packages
- */
- public ClassLoader(java.lang.ClassLoader deferTo, String[] ignored_packages) {
- this(ignored_packages);
- this.repository = new ClassLoaderRepository(deferTo);
- }
-
-
- protected Class loadClass( String class_name, boolean resolve ) throws ClassNotFoundException {
- Class cl = null;
- /* First try: lookup hash table.
- */
- if ((cl = (Class) classes.get(class_name)) == null) {
- /* Second try: Load system class using system class loader. You better
- * don't mess around with them.
- */
- for (int i = 0; i < ignored_packages.length; i++) {
- if (class_name.startsWith(ignored_packages[i])) {
- cl = getParent().loadClass(class_name);
- break;
- }
- }
- if (cl == null) {
- JavaClass clazz = null;
- /* Third try: Special request?
- */
- if (class_name.indexOf("$$BCEL$$") >= 0) {
- clazz = createClass(class_name);
- } else { // Fourth try: Load classes via repository
- if ((clazz = repository.loadClass(class_name)) != null) {
- clazz = modifyClass(clazz);
- } else {
- throw new ClassNotFoundException(class_name);
- }
- }
- if (clazz != null) {
- byte[] bytes = clazz.getBytes();
- cl = defineClass(class_name, bytes, 0, bytes.length);
- } else {
- cl = Class.forName(class_name);
- }
- }
- if (resolve) {
- resolveClass(cl);
- }
- }
- classes.put(class_name, cl);
- return cl;
- }
-
-
- /** Override this method if you want to alter a class before it gets actually
- * loaded. Does nothing by default.
- */
- protected JavaClass modifyClass( JavaClass clazz ) {
- return clazz;
- }
-
-
- /**
- * Override this method to create you own classes on the fly. The
- * name contains the special token $$BCEL$$. Everything before that
- * token is consddered to be a package name. You can encode you own
- * arguments into the subsequent string. You must regard however not
- * to use any "illegal" characters, i.e., characters that may not
- * appear in a Java class name too
- *
- * The default implementation interprets the string as a encoded compressed
- * Java class, unpacks and decodes it with the Utility.decode() method, and
- * parses the resulting byte array and returns the resulting JavaClass object.
- *
- * @param class_name compressed byte code with "$$BCEL$$" in it
- */
- protected JavaClass createClass( String class_name ) {
- int index = class_name.indexOf("$$BCEL$$");
- String real_name = class_name.substring(index + 8);
- JavaClass clazz = null;
- try {
- byte[] bytes = Utility.decode(real_name, true);
- ClassParser parser = new ClassParser(new ByteArrayInputStream(bytes), "foo");
- clazz = parser.parse();
- } catch (Throwable e) {
- e.printStackTrace();
- return null;
- }
- // Adapt the class name to the passed value
- ConstantPool cp = clazz.getConstantPool();
- ConstantClass cl = (ConstantClass) cp.getConstant(clazz.getClassNameIndex(),
- Constants.CONSTANT_Class);
- ConstantUtf8 name = (ConstantUtf8) cp.getConstant(cl.getNameIndex(),
- Constants.CONSTANT_Utf8);
- name.setBytes(class_name.replace('.', '/'));
- return clazz;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.ByteArrayInputStream;
+import java.util.Hashtable;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.classfile.ClassParser;
+import org.apache.bcel5_2_0.classfile.ConstantClass;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.ConstantUtf8;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Drop in replacement for the standard class loader of the JVM. You can use it
+ * in conjunction with the JavaWrapper to dynamically modify/create classes
+ * as they're requested.
+ *
+ * This class loader recognizes special requests in a distinct
+ * format, i.e., when the name of the requested class contains with
+ * "$$BCEL$$" it calls the createClass() method with that name
+ * (everything bevor the $$BCEL$$ is considered to be the package
+ * name. You can subclass the class loader and override that
+ * method. "Normal" classes class can be modified by overriding the
+ * modifyClass() method which is called just before defineClass().
+ *
+ * There may be a number of packages where you have to use the
+ * default class loader (which may also be faster). You can define the
+ * set of packages where to use the system class loader in the
+ * constructor. The default value contains "java.", "sun.",
+ * "javax."
+ *
+ * @version $Id: ClassLoader.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see JavaWrapper
+ * @see ClassPath
+ */
+public class ClassLoader extends java.lang.ClassLoader {
+
+ public static final String[] DEFAULT_IGNORED_PACKAGES = {
+ "java.", "javax.", "sun."
+ };
+ private Hashtable classes = new Hashtable(); // Hashtable is synchronized thus thread-safe
+ private String[] ignored_packages;
+ private Repository repository = SyntheticRepository.getInstance();
+
+
+ /** Ignored packages are by default ( "java.", "sun.",
+ * "javax."), i.e. loaded by system class loader
+ */
+ public ClassLoader() {
+ this(DEFAULT_IGNORED_PACKAGES);
+ }
+
+
+ /** @param deferTo delegate class loader to use for ignored packages
+ */
+ public ClassLoader(java.lang.ClassLoader deferTo) {
+ super(deferTo);
+ this.ignored_packages = DEFAULT_IGNORED_PACKAGES;
+ this.repository = new ClassLoaderRepository(deferTo);
+ }
+
+
+ /** @param ignored_packages classes contained in these packages will be loaded
+ * with the system class loader
+ */
+ public ClassLoader(String[] ignored_packages) {
+ this.ignored_packages = ignored_packages;
+ }
+
+
+ /** @param ignored_packages classes contained in these packages will be loaded
+ * with the system class loader
+ * @param deferTo delegate class loader to use for ignored packages
+ */
+ public ClassLoader(java.lang.ClassLoader deferTo, String[] ignored_packages) {
+ this(ignored_packages);
+ this.repository = new ClassLoaderRepository(deferTo);
+ }
+
+
+ protected Class loadClass( String class_name, boolean resolve ) throws ClassNotFoundException {
+ Class cl = null;
+ /* First try: lookup hash table.
+ */
+ if ((cl = (Class) classes.get(class_name)) == null) {
+ /* Second try: Load system class using system class loader. You better
+ * don't mess around with them.
+ */
+ for (int i = 0; i < ignored_packages.length; i++) {
+ if (class_name.startsWith(ignored_packages[i])) {
+ cl = getParent().loadClass(class_name);
+ break;
+ }
+ }
+ if (cl == null) {
+ JavaClass clazz = null;
+ /* Third try: Special request?
+ */
+ if (class_name.indexOf("$$BCEL$$") >= 0) {
+ clazz = createClass(class_name);
+ } else { // Fourth try: Load classes via repository
+ if ((clazz = repository.loadClass(class_name)) != null) {
+ clazz = modifyClass(clazz);
+ } else {
+ throw new ClassNotFoundException(class_name);
+ }
+ }
+ if (clazz != null) {
+ byte[] bytes = clazz.getBytes();
+ cl = defineClass(class_name, bytes, 0, bytes.length);
+ } else {
+ cl = Class.forName(class_name);
+ }
+ }
+ if (resolve) {
+ resolveClass(cl);
+ }
+ }
+ classes.put(class_name, cl);
+ return cl;
+ }
+
+
+ /** Override this method if you want to alter a class before it gets actually
+ * loaded. Does nothing by default.
+ */
+ protected JavaClass modifyClass( JavaClass clazz ) {
+ return clazz;
+ }
+
+
+ /**
+ * Override this method to create you own classes on the fly. The
+ * name contains the special token $$BCEL$$. Everything before that
+ * token is consddered to be a package name. You can encode you own
+ * arguments into the subsequent string. You must regard however not
+ * to use any "illegal" characters, i.e., characters that may not
+ * appear in a Java class name too
+ *
+ * The default implementation interprets the string as a encoded compressed
+ * Java class, unpacks and decodes it with the Utility.decode() method, and
+ * parses the resulting byte array and returns the resulting JavaClass object.
+ *
+ * @param class_name compressed byte code with "$$BCEL$$" in it
+ */
+ protected JavaClass createClass( String class_name ) {
+ int index = class_name.indexOf("$$BCEL$$");
+ String real_name = class_name.substring(index + 8);
+ JavaClass clazz = null;
+ try {
+ byte[] bytes = Utility.decode(real_name, true);
+ ClassParser parser = new ClassParser(new ByteArrayInputStream(bytes), "foo");
+ clazz = parser.parse();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ return null;
+ }
+ // Adapt the class name to the passed value
+ ConstantPool cp = clazz.getConstantPool();
+ ConstantClass cl = (ConstantClass) cp.getConstant(clazz.getClassNameIndex(),
+ Constants.CONSTANT_Class);
+ ConstantUtf8 name = (ConstantUtf8) cp.getConstant(cl.getNameIndex(),
+ Constants.CONSTANT_Utf8);
+ name.setBytes(class_name.replace('.', '/'));
+ return clazz;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoaderRepository.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoaderRepository.java
index 577d2122..90cfb778 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoaderRepository.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassLoaderRepository.java
@@ -1,122 +1,122 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.classfile.ClassParser;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * The repository maintains information about which classes have
- * been loaded.
- *
- * It loads its data from the ClassLoader implementation
- * passed into its constructor.
- *
- * @see org.apache.bcel5_2_0.Repository
- *
- * @version $Id: ClassLoaderRepository.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @author David Dixon-Peugh
- */
-public class ClassLoaderRepository implements Repository {
-
- private java.lang.ClassLoader loader;
- private Map loadedClasses = new HashMap(); // CLASSNAME X JAVACLASS
-
-
- public ClassLoaderRepository(java.lang.ClassLoader loader) {
- this.loader = loader;
- }
-
-
- /**
- * Store a new JavaClass into this Repository.
- */
- public void storeClass( JavaClass clazz ) {
- loadedClasses.put(clazz.getClassName(), clazz);
- clazz.setRepository(this);
- }
-
-
- /**
- * Remove class from repository
- */
- public void removeClass( JavaClass clazz ) {
- loadedClasses.remove(clazz.getClassName());
- }
-
-
- /**
- * Find an already defined JavaClass.
- */
- public JavaClass findClass( String className ) {
- if (loadedClasses.containsKey(className)) {
- return (JavaClass) loadedClasses.get(className);
- } else {
- return null;
- }
- }
-
-
- /**
- * Lookup a JavaClass object from the Class Name provided.
- */
- public JavaClass loadClass( String className ) throws ClassNotFoundException {
- String classFile = className.replace('.', '/');
- JavaClass RC = findClass(className);
- if (RC != null) {
- return RC;
- }
- try {
- InputStream is = loader.getResourceAsStream(classFile + ".class");
- if (is == null) {
- throw new ClassNotFoundException(className + " not found.");
- }
- ClassParser parser = new ClassParser(is, className);
- RC = parser.parse();
- storeClass(RC);
- return RC;
- } catch (IOException e) {
- throw new ClassNotFoundException(e.toString());
- }
- }
-
-
- public JavaClass loadClass( Class clazz ) throws ClassNotFoundException {
- return loadClass(clazz.getName());
- }
-
-
- /** Clear all entries from cache.
- */
- public void clear() {
- loadedClasses.clear();
- }
-
-
- /*
- * @return null
- */
- public ClassPath getClassPath() {
- return null;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.classfile.ClassParser;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * The repository maintains information about which classes have
+ * been loaded.
+ *
+ * It loads its data from the ClassLoader implementation
+ * passed into its constructor.
+ *
+ * @see org.apache.bcel5_2_0.Repository
+ *
+ * @version $Id: ClassLoaderRepository.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @author David Dixon-Peugh
+ */
+public class ClassLoaderRepository implements Repository {
+
+ private java.lang.ClassLoader loader;
+ private Map loadedClasses = new HashMap(); // CLASSNAME X JAVACLASS
+
+
+ public ClassLoaderRepository(java.lang.ClassLoader loader) {
+ this.loader = loader;
+ }
+
+
+ /**
+ * Store a new JavaClass into this Repository.
+ */
+ public void storeClass( JavaClass clazz ) {
+ loadedClasses.put(clazz.getClassName(), clazz);
+ clazz.setRepository(this);
+ }
+
+
+ /**
+ * Remove class from repository
+ */
+ public void removeClass( JavaClass clazz ) {
+ loadedClasses.remove(clazz.getClassName());
+ }
+
+
+ /**
+ * Find an already defined JavaClass.
+ */
+ public JavaClass findClass( String className ) {
+ if (loadedClasses.containsKey(className)) {
+ return (JavaClass) loadedClasses.get(className);
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * Lookup a JavaClass object from the Class Name provided.
+ */
+ public JavaClass loadClass( String className ) throws ClassNotFoundException {
+ String classFile = className.replace('.', '/');
+ JavaClass RC = findClass(className);
+ if (RC != null) {
+ return RC;
+ }
+ try {
+ InputStream is = loader.getResourceAsStream(classFile + ".class");
+ if (is == null) {
+ throw new ClassNotFoundException(className + " not found.");
+ }
+ ClassParser parser = new ClassParser(is, className);
+ RC = parser.parse();
+ storeClass(RC);
+ return RC;
+ } catch (IOException e) {
+ throw new ClassNotFoundException(e.toString());
+ }
+ }
+
+
+ public JavaClass loadClass( Class clazz ) throws ClassNotFoundException {
+ return loadClass(clazz.getName());
+ }
+
+
+ /** Clear all entries from cache.
+ */
+ public void clear() {
+ loadedClasses.clear();
+ }
+
+
+ /*
+ * @return null
+ */
+ public ClassPath getClassPath() {
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassPath.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassPath.java
index 4eeca844..5f0903cb 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassPath.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassPath.java
@@ -1,396 +1,396 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.StringTokenizer;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-/**
- * Responsible for loading (class) files from the CLASSPATH. Inspired by
- * sun.tools.ClassPath.
- *
- * @version $Id: ClassPath.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ClassPath implements Serializable {
-
- public static final ClassPath SYSTEM_CLASS_PATH = new ClassPath();
- private PathEntry[] paths;
- private String class_path;
-
-
- /**
- * Search for classes in given path.
- */
- public ClassPath(String class_path) {
- this.class_path = class_path;
- List vec = new ArrayList();
- for (StringTokenizer tok = new StringTokenizer(class_path, System
- .getProperty("path.separator")); tok.hasMoreTokens();) {
- String path = tok.nextToken();
- if (!path.equals("")) {
- File file = new File(path);
- try {
- if (file.exists()) {
- if (file.isDirectory()) {
- vec.add(new Dir(path));
- } else {
- vec.add(new Zip(new ZipFile(file)));
- }
- }
- } catch (IOException e) {
- System.err.println("CLASSPATH component " + file + ": " + e);
- }
- }
- }
- paths = new PathEntry[vec.size()];
- vec.toArray(paths);
- }
-
-
- /**
- * Search for classes in CLASSPATH.
- * @deprecated Use SYSTEM_CLASS_PATH constant
- */
- public ClassPath() {
- this(getClassPath());
- }
-
-
- /** @return used class path string
- */
- public String toString() {
- return class_path;
- }
-
-
- public int hashCode() {
- return class_path.hashCode();
- }
-
-
- public boolean equals( Object o ) {
- if (o instanceof ClassPath) {
- return class_path.equals(((ClassPath) o).class_path);
- }
- return false;
- }
-
-
- private static final void getPathComponents( String path, List list ) {
- if (path != null) {
- StringTokenizer tok = new StringTokenizer(path, File.pathSeparator);
- while (tok.hasMoreTokens()) {
- String name = tok.nextToken();
- File file = new File(name);
- if (file.exists()) {
- list.add(name);
- }
- }
- }
- }
-
-
- /** Checks for class path components in the following properties:
- * "java.class.path", "sun.boot.class.path", "java.ext.dirs"
- *
- * @return class path as used by default by BCEL
- */
- public static final String getClassPath() {
- String class_path = System.getProperty("java.class.path");
- String boot_path = System.getProperty("sun.boot.class.path");
- String ext_path = System.getProperty("java.ext.dirs");
- List list = new ArrayList();
- getPathComponents(class_path, list);
- getPathComponents(boot_path, list);
- List dirs = new ArrayList();
- getPathComponents(ext_path, dirs);
- for (Iterator e = dirs.iterator(); e.hasNext();) {
- File ext_dir = new File((String) e.next());
- String[] extensions = ext_dir.list(new FilenameFilter() {
-
- public boolean accept( File dir, String name ) {
- name = name.toLowerCase(Locale.ENGLISH);
- return name.endsWith(".zip") || name.endsWith(".jar");
- }
- });
- if (extensions != null) {
- for (int i = 0; i < extensions.length; i++) {
- list.add(ext_dir.getPath() + File.separatorChar + extensions[i]);
- }
- }
- }
- StringBuilder buf = new StringBuilder();
- for (Iterator e = list.iterator(); e.hasNext();) {
- buf.append((String) e.next());
- if (e.hasNext()) {
- buf.append(File.pathSeparatorChar);
- }
- }
- return buf.toString().intern();
- }
-
-
- /**
- * @param name fully qualified class name, e.g. java.lang.String
- * @return input stream for class
- */
- public InputStream getInputStream( String name ) throws IOException {
- return getInputStream(name.replace('.', '/'), ".class");
- }
-
-
- /**
- * Return stream for class or resource on CLASSPATH.
- *
- * @param name fully qualified file name, e.g. java/lang/String
- * @param suffix file name ends with suff, e.g. .java
- * @return input stream for file on class path
- */
- public InputStream getInputStream( String name, String suffix ) throws IOException {
- InputStream is = null;
- try {
- is = getClass().getClassLoader().getResourceAsStream(name + suffix);
- } catch (Exception e) {
- }
- if (is != null) {
- return is;
- }
- return getClassFile(name, suffix).getInputStream();
- }
-
-
- /**
- * @param name fully qualified file name, e.g. java/lang/String
- * @param suffix file name ends with suff, e.g. .java
- * @return class file for the java class
- */
- public ClassFile getClassFile( String name, String suffix ) throws IOException {
- for (int i = 0; i < paths.length; i++) {
- ClassFile cf;
- if ((cf = paths[i].getClassFile(name, suffix)) != null) {
- return cf;
- }
- }
- throw new IOException("Couldn't find: " + name + suffix);
- }
-
-
- /**
- * @param name fully qualified class name, e.g. java.lang.String
- * @return input stream for class
- */
- public ClassFile getClassFile( String name ) throws IOException {
- return getClassFile(name, ".class");
- }
-
-
- /**
- * @param name fully qualified file name, e.g. java/lang/String
- * @param suffix file name ends with suffix, e.g. .java
- * @return byte array for file on class path
- */
- public byte[] getBytes( String name, String suffix ) throws IOException {
- DataInputStream dis = null;
- try {
- InputStream is = getInputStream(name, suffix);
- if (is == null) {
- throw new IOException("Couldn't find: " + name + suffix);
- }
- dis = new DataInputStream(is);
- byte[] bytes = new byte[is.available()];
- dis.readFully(bytes);
- return bytes;
- } finally {
- if (dis != null) {
- dis.close();
- }
- }
- }
-
-
- /**
- * @return byte array for class
- */
- public byte[] getBytes( String name ) throws IOException {
- return getBytes(name, ".class");
- }
-
-
- /**
- * @param name name of file to search for, e.g. java/lang/String.java
- * @return full (canonical) path for file
- */
- public String getPath( String name ) throws IOException {
- int index = name.lastIndexOf('.');
- String suffix = "";
- if (index > 0) {
- suffix = name.substring(index);
- name = name.substring(0, index);
- }
- return getPath(name, suffix);
- }
-
-
- /**
- * @param name name of file to search for, e.g. java/lang/String
- * @param suffix file name suffix, e.g. .java
- * @return full (canonical) path for file, if it exists
- */
- public String getPath( String name, String suffix ) throws IOException {
- return getClassFile(name, suffix).getPath();
- }
-
- private static abstract class PathEntry implements Serializable {
-
- abstract ClassFile getClassFile( String name, String suffix ) throws IOException;
- }
-
- /** Contains information about file/ZIP entry of the Java class.
- */
- public interface ClassFile {
-
- /** @return input stream for class file.
- */
- public abstract InputStream getInputStream() throws IOException;
-
-
- /** @return canonical path to class file.
- */
- public abstract String getPath();
-
-
- /** @return base path of found class, i.e. class is contained relative
- * to that path, which may either denote a directory, or zip file
- */
- public abstract String getBase();
-
-
- /** @return modification time of class file.
- */
- public abstract long getTime();
-
-
- /** @return size of class file.
- */
- public abstract long getSize();
- }
-
- private static class Dir extends PathEntry {
-
- private String dir;
-
-
- Dir(String d) {
- dir = d;
- }
-
-
- ClassFile getClassFile( String name, String suffix ) throws IOException {
- final File file = new File(dir + File.separatorChar
- + name.replace('.', File.separatorChar) + suffix);
- return file.exists() ? new ClassFile() {
-
- public InputStream getInputStream() throws IOException {
- return new FileInputStream(file);
- }
-
-
- public String getPath() {
- try {
- return file.getCanonicalPath();
- } catch (IOException e) {
- return null;
- }
- }
-
-
- public long getTime() {
- return file.lastModified();
- }
-
-
- public long getSize() {
- return file.length();
- }
-
-
- public String getBase() {
- return dir;
- }
- } : null;
- }
-
-
- public String toString() {
- return dir;
- }
- }
-
- private static class Zip extends PathEntry {
-
- private ZipFile zip;
-
-
- Zip(ZipFile z) {
- zip = z;
- }
-
-
- ClassFile getClassFile( String name, String suffix ) throws IOException {
- final ZipEntry entry = zip.getEntry(name.replace('.', '/') + suffix);
- return (entry != null) ? new ClassFile() {
-
- public InputStream getInputStream() throws IOException {
- return zip.getInputStream(entry);
- }
-
-
- public String getPath() {
- return entry.toString();
- }
-
-
- public long getTime() {
- return entry.getTime();
- }
-
-
- public long getSize() {
- return entry.getSize();
- }
-
-
- public String getBase() {
- return zip.getName();
- }
- } : null;
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.StringTokenizer;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+/**
+ * Responsible for loading (class) files from the CLASSPATH. Inspired by
+ * sun.tools.ClassPath.
+ *
+ * @version $Id: ClassPath.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ClassPath implements Serializable {
+
+ public static final ClassPath SYSTEM_CLASS_PATH = new ClassPath();
+ private PathEntry[] paths;
+ private String class_path;
+
+
+ /**
+ * Search for classes in given path.
+ */
+ public ClassPath(String class_path) {
+ this.class_path = class_path;
+ List vec = new ArrayList();
+ for (StringTokenizer tok = new StringTokenizer(class_path, System
+ .getProperty("path.separator")); tok.hasMoreTokens();) {
+ String path = tok.nextToken();
+ if (!path.equals("")) {
+ File file = new File(path);
+ try {
+ if (file.exists()) {
+ if (file.isDirectory()) {
+ vec.add(new Dir(path));
+ } else {
+ vec.add(new Zip(new ZipFile(file)));
+ }
+ }
+ } catch (IOException e) {
+ System.err.println("CLASSPATH component " + file + ": " + e);
+ }
+ }
+ }
+ paths = new PathEntry[vec.size()];
+ vec.toArray(paths);
+ }
+
+
+ /**
+ * Search for classes in CLASSPATH.
+ * @deprecated Use SYSTEM_CLASS_PATH constant
+ */
+ public ClassPath() {
+ this(getClassPath());
+ }
+
+
+ /** @return used class path string
+ */
+ public String toString() {
+ return class_path;
+ }
+
+
+ public int hashCode() {
+ return class_path.hashCode();
+ }
+
+
+ public boolean equals( Object o ) {
+ if (o instanceof ClassPath) {
+ return class_path.equals(((ClassPath) o).class_path);
+ }
+ return false;
+ }
+
+
+ private static final void getPathComponents( String path, List list ) {
+ if (path != null) {
+ StringTokenizer tok = new StringTokenizer(path, File.pathSeparator);
+ while (tok.hasMoreTokens()) {
+ String name = tok.nextToken();
+ File file = new File(name);
+ if (file.exists()) {
+ list.add(name);
+ }
+ }
+ }
+ }
+
+
+ /** Checks for class path components in the following properties:
+ * "java.class.path", "sun.boot.class.path", "java.ext.dirs"
+ *
+ * @return class path as used by default by BCEL
+ */
+ public static final String getClassPath() {
+ String class_path = System.getProperty("java.class.path");
+ String boot_path = System.getProperty("sun.boot.class.path");
+ String ext_path = System.getProperty("java.ext.dirs");
+ List list = new ArrayList();
+ getPathComponents(class_path, list);
+ getPathComponents(boot_path, list);
+ List dirs = new ArrayList();
+ getPathComponents(ext_path, dirs);
+ for (Iterator e = dirs.iterator(); e.hasNext();) {
+ File ext_dir = new File((String) e.next());
+ String[] extensions = ext_dir.list(new FilenameFilter() {
+
+ public boolean accept( File dir, String name ) {
+ name = name.toLowerCase(Locale.ENGLISH);
+ return name.endsWith(".zip") || name.endsWith(".jar");
+ }
+ });
+ if (extensions != null) {
+ for (int i = 0; i < extensions.length; i++) {
+ list.add(ext_dir.getPath() + File.separatorChar + extensions[i]);
+ }
+ }
+ }
+ StringBuilder buf = new StringBuilder();
+ for (Iterator e = list.iterator(); e.hasNext();) {
+ buf.append((String) e.next());
+ if (e.hasNext()) {
+ buf.append(File.pathSeparatorChar);
+ }
+ }
+ return buf.toString().intern();
+ }
+
+
+ /**
+ * @param name fully qualified class name, e.g. java.lang.String
+ * @return input stream for class
+ */
+ public InputStream getInputStream( String name ) throws IOException {
+ return getInputStream(name.replace('.', '/'), ".class");
+ }
+
+
+ /**
+ * Return stream for class or resource on CLASSPATH.
+ *
+ * @param name fully qualified file name, e.g. java/lang/String
+ * @param suffix file name ends with suff, e.g. .java
+ * @return input stream for file on class path
+ */
+ public InputStream getInputStream( String name, String suffix ) throws IOException {
+ InputStream is = null;
+ try {
+ is = getClass().getClassLoader().getResourceAsStream(name + suffix);
+ } catch (Exception e) {
+ }
+ if (is != null) {
+ return is;
+ }
+ return getClassFile(name, suffix).getInputStream();
+ }
+
+
+ /**
+ * @param name fully qualified file name, e.g. java/lang/String
+ * @param suffix file name ends with suff, e.g. .java
+ * @return class file for the java class
+ */
+ public ClassFile getClassFile( String name, String suffix ) throws IOException {
+ for (int i = 0; i < paths.length; i++) {
+ ClassFile cf;
+ if ((cf = paths[i].getClassFile(name, suffix)) != null) {
+ return cf;
+ }
+ }
+ throw new IOException("Couldn't find: " + name + suffix);
+ }
+
+
+ /**
+ * @param name fully qualified class name, e.g. java.lang.String
+ * @return input stream for class
+ */
+ public ClassFile getClassFile( String name ) throws IOException {
+ return getClassFile(name, ".class");
+ }
+
+
+ /**
+ * @param name fully qualified file name, e.g. java/lang/String
+ * @param suffix file name ends with suffix, e.g. .java
+ * @return byte array for file on class path
+ */
+ public byte[] getBytes( String name, String suffix ) throws IOException {
+ DataInputStream dis = null;
+ try {
+ InputStream is = getInputStream(name, suffix);
+ if (is == null) {
+ throw new IOException("Couldn't find: " + name + suffix);
+ }
+ dis = new DataInputStream(is);
+ byte[] bytes = new byte[is.available()];
+ dis.readFully(bytes);
+ return bytes;
+ } finally {
+ if (dis != null) {
+ dis.close();
+ }
+ }
+ }
+
+
+ /**
+ * @return byte array for class
+ */
+ public byte[] getBytes( String name ) throws IOException {
+ return getBytes(name, ".class");
+ }
+
+
+ /**
+ * @param name name of file to search for, e.g. java/lang/String.java
+ * @return full (canonical) path for file
+ */
+ public String getPath( String name ) throws IOException {
+ int index = name.lastIndexOf('.');
+ String suffix = "";
+ if (index > 0) {
+ suffix = name.substring(index);
+ name = name.substring(0, index);
+ }
+ return getPath(name, suffix);
+ }
+
+
+ /**
+ * @param name name of file to search for, e.g. java/lang/String
+ * @param suffix file name suffix, e.g. .java
+ * @return full (canonical) path for file, if it exists
+ */
+ public String getPath( String name, String suffix ) throws IOException {
+ return getClassFile(name, suffix).getPath();
+ }
+
+ private static abstract class PathEntry implements Serializable {
+
+ abstract ClassFile getClassFile( String name, String suffix ) throws IOException;
+ }
+
+ /** Contains information about file/ZIP entry of the Java class.
+ */
+ public interface ClassFile {
+
+ /** @return input stream for class file.
+ */
+ public abstract InputStream getInputStream() throws IOException;
+
+
+ /** @return canonical path to class file.
+ */
+ public abstract String getPath();
+
+
+ /** @return base path of found class, i.e. class is contained relative
+ * to that path, which may either denote a directory, or zip file
+ */
+ public abstract String getBase();
+
+
+ /** @return modification time of class file.
+ */
+ public abstract long getTime();
+
+
+ /** @return size of class file.
+ */
+ public abstract long getSize();
+ }
+
+ private static class Dir extends PathEntry {
+
+ private String dir;
+
+
+ Dir(String d) {
+ dir = d;
+ }
+
+
+ ClassFile getClassFile( String name, String suffix ) throws IOException {
+ final File file = new File(dir + File.separatorChar
+ + name.replace('.', File.separatorChar) + suffix);
+ return file.exists() ? new ClassFile() {
+
+ public InputStream getInputStream() throws IOException {
+ return new FileInputStream(file);
+ }
+
+
+ public String getPath() {
+ try {
+ return file.getCanonicalPath();
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+
+ public long getTime() {
+ return file.lastModified();
+ }
+
+
+ public long getSize() {
+ return file.length();
+ }
+
+
+ public String getBase() {
+ return dir;
+ }
+ } : null;
+ }
+
+
+ public String toString() {
+ return dir;
+ }
+ }
+
+ private static class Zip extends PathEntry {
+
+ private ZipFile zip;
+
+
+ Zip(ZipFile z) {
+ zip = z;
+ }
+
+
+ ClassFile getClassFile( String name, String suffix ) throws IOException {
+ final ZipEntry entry = zip.getEntry(name.replace('.', '/') + suffix);
+ return (entry != null) ? new ClassFile() {
+
+ public InputStream getInputStream() throws IOException {
+ return zip.getInputStream(entry);
+ }
+
+
+ public String getPath() {
+ return entry.toString();
+ }
+
+
+ public long getTime() {
+ return entry.getTime();
+ }
+
+
+ public long getSize() {
+ return entry.getSize();
+ }
+
+
+ public String getBase() {
+ return zip.getName();
+ }
+ } : null;
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassQueue.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassQueue.java
index 12f32446..7d83cb3c 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassQueue.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassQueue.java
@@ -1,53 +1,53 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.util.LinkedList;
-
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * Utility class implementing a (typesafe) queue of JavaClass
- * objects.
- *
- * @version $Id: ClassQueue.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- */
-public class ClassQueue implements java.io.Serializable {
-
- protected LinkedList vec = new LinkedList();
-
-
- public void enqueue( JavaClass clazz ) {
- vec.addLast(clazz);
- }
-
-
- public JavaClass dequeue() {
- return (JavaClass) vec.removeFirst();
- }
-
-
- public boolean empty() {
- return vec.isEmpty();
- }
-
-
- public String toString() {
- return vec.toString();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.util.LinkedList;
+
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * Utility class implementing a (typesafe) queue of JavaClass
+ * objects.
+ *
+ * @version $Id: ClassQueue.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ */
+public class ClassQueue implements java.io.Serializable {
+
+ protected LinkedList vec = new LinkedList();
+
+
+ public void enqueue( JavaClass clazz ) {
+ vec.addLast(clazz);
+ }
+
+
+ public JavaClass dequeue() {
+ return (JavaClass) vec.removeFirst();
+ }
+
+
+ public boolean empty() {
+ return vec.isEmpty();
+ }
+
+
+ public String toString() {
+ return vec.toString();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassSet.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassSet.java
index 4925e7b8..2157f536 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassSet.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassSet.java
@@ -1,70 +1,70 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * Utility class implementing a (typesafe) set of JavaClass objects.
- * Since JavaClass has no equals() method, the name of the class is
- * used for comparison.
- *
- * @version $Id: ClassSet.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see ClassStack
- */
-public class ClassSet implements java.io.Serializable {
-
- private Map _map = new HashMap();
-
-
- public boolean add( JavaClass clazz ) {
- boolean result = false;
- if (!_map.containsKey(clazz.getClassName())) {
- result = true;
- _map.put(clazz.getClassName(), clazz);
- }
- return result;
- }
-
-
- public void remove( JavaClass clazz ) {
- _map.remove(clazz.getClassName());
- }
-
-
- public boolean empty() {
- return _map.isEmpty();
- }
-
-
- public JavaClass[] toArray() {
- Collection values = _map.values();
- JavaClass[] classes = new JavaClass[values.size()];
- values.toArray(classes);
- return classes;
- }
-
-
- public String[] getClassNames() {
- return (String[]) _map.keySet().toArray(new String[_map.keySet().size()]);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * Utility class implementing a (typesafe) set of JavaClass objects.
+ * Since JavaClass has no equals() method, the name of the class is
+ * used for comparison.
+ *
+ * @version $Id: ClassSet.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see ClassStack
+ */
+public class ClassSet implements java.io.Serializable {
+
+ private Map _map = new HashMap();
+
+
+ public boolean add( JavaClass clazz ) {
+ boolean result = false;
+ if (!_map.containsKey(clazz.getClassName())) {
+ result = true;
+ _map.put(clazz.getClassName(), clazz);
+ }
+ return result;
+ }
+
+
+ public void remove( JavaClass clazz ) {
+ _map.remove(clazz.getClassName());
+ }
+
+
+ public boolean empty() {
+ return _map.isEmpty();
+ }
+
+
+ public JavaClass[] toArray() {
+ Collection values = _map.values();
+ JavaClass[] classes = new JavaClass[values.size()];
+ values.toArray(classes);
+ return classes;
+ }
+
+
+ public String[] getClassNames() {
+ return (String[]) _map.keySet().toArray(new String[_map.keySet().size()]);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassStack.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassStack.java
index 553014e9..c5ac8aae 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassStack.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassStack.java
@@ -1,53 +1,53 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.util.Stack;
-
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * Utility class implementing a (typesafe) stack of JavaClass objects.
- *
- * @version $Id: ClassStack.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Stack
- */
-public class ClassStack implements java.io.Serializable {
-
- private Stack stack = new Stack();
-
-
- public void push( JavaClass clazz ) {
- stack.push(clazz);
- }
-
-
- public JavaClass pop() {
- return (JavaClass) stack.pop();
- }
-
-
- public JavaClass top() {
- return (JavaClass) stack.peek();
- }
-
-
- public boolean empty() {
- return stack.empty();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.util.Stack;
+
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * Utility class implementing a (typesafe) stack of JavaClass objects.
+ *
+ * @version $Id: ClassStack.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Stack
+ */
+public class ClassStack implements java.io.Serializable {
+
+ private Stack stack = new Stack();
+
+
+ public void push( JavaClass clazz ) {
+ stack.push(clazz);
+ }
+
+
+ public JavaClass pop() {
+ return (JavaClass) stack.pop();
+ }
+
+
+ public JavaClass top() {
+ return (JavaClass) stack.peek();
+ }
+
+
+ public boolean empty() {
+ return stack.empty();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassVector.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassVector.java
index 237597f8..714c22e5 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassVector.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ClassVector.java
@@ -1,58 +1,58 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * Utility class implementing a (typesafe) collection of JavaClass
- * objects. Contains the most important methods of a Vector.
- *
- * @version $Id: ClassVector.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- *
- * @deprecated as of 5.1.1 - 7/17/2005
- */
-public class ClassVector implements java.io.Serializable {
-
- protected List vec = new ArrayList();
-
-
- public void addElement( JavaClass clazz ) {
- vec.add(clazz);
- }
-
-
- public JavaClass elementAt( int index ) {
- return (JavaClass) vec.get(index);
- }
-
-
- public void removeElementAt( int index ) {
- vec.remove(index);
- }
-
-
- public JavaClass[] toArray() {
- JavaClass[] classes = new JavaClass[vec.size()];
- vec.toArray(classes);
- return classes;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * Utility class implementing a (typesafe) collection of JavaClass
+ * objects. Contains the most important methods of a Vector.
+ *
+ * @version $Id: ClassVector.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ *
+ * @deprecated as of 5.1.1 - 7/17/2005
+ */
+public class ClassVector implements java.io.Serializable {
+
+ protected List vec = new ArrayList();
+
+
+ public void addElement( JavaClass clazz ) {
+ vec.add(clazz);
+ }
+
+
+ public JavaClass elementAt( int index ) {
+ return (JavaClass) vec.get(index);
+ }
+
+
+ public void removeElementAt( int index ) {
+ vec.remove(index);
+ }
+
+
+ public JavaClass[] toArray() {
+ JavaClass[] classes = new JavaClass[vec.size()];
+ vec.toArray(classes);
+ return classes;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/CodeHTML.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/CodeHTML.java
index 6045c31c..5a6d549d 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/CodeHTML.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/CodeHTML.java
@@ -1,565 +1,565 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.BitSet;
-
-import org.apache.bcel5_2_0.classfile.Attribute;
-import org.apache.bcel5_2_0.classfile.Code;
-import org.apache.bcel5_2_0.classfile.CodeException;
-import org.apache.bcel5_2_0.classfile.ConstantFieldref;
-import org.apache.bcel5_2_0.classfile.ConstantInterfaceMethodref;
-import org.apache.bcel5_2_0.classfile.ConstantMethodref;
-import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.LocalVariable;
-import org.apache.bcel5_2_0.classfile.LocalVariableTable;
-import org.apache.bcel5_2_0.classfile.Method;
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Convert code into HTML file.
- *
- * @version $Id: CodeHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- *
- */
-final class CodeHTML implements org.apache.bcel5_2_0.Constants {
-
- private String class_name; // name of current class
- private Method[] methods; // Methods to print
- private PrintWriter file; // file to write to
- private BitSet goto_set;
- private ConstantPool constant_pool;
- private ConstantHTML constant_html;
- private static boolean wide = false;
-
-
- CodeHTML(String dir, String class_name, Method[] methods, ConstantPool constant_pool,
- ConstantHTML constant_html) throws IOException {
- this.class_name = class_name;
- this.methods = methods;
- this.constant_pool = constant_pool;
- this.constant_html = constant_html;
- file = new PrintWriter(new FileOutputStream(dir + class_name + "_code.html"));
- file.println("");
- for (int i = 0; i < methods.length; i++) {
- writeMethod(methods[i], i);
- }
- file.println("");
- file.close();
- }
-
-
- /**
- * Disassemble a stream of byte codes and return the
- * string representation.
- *
- * @param stream data input stream
- * @return String representation of byte code
- */
- private final String codeToHTML( ByteSequence bytes, int method_number ) throws IOException {
- short opcode = (short) bytes.readUnsignedByte();
- StringBuilder buf;
- String name, signature;
- int default_offset = 0, low, high;
- int index, class_index, vindex, constant;
- int[] jump_table;
- int no_pad_bytes = 0, offset;
- buf = new StringBuilder(256);
- buf.append("").append(OPCODE_NAMES[opcode]).append("");
- /* Special case: Skip (0-3) padding bytes, i.e., the
- * following bytes are 4-byte-aligned
- */
- if ((opcode == TABLESWITCH) || (opcode == LOOKUPSWITCH)) {
- int remainder = bytes.getIndex() % 4;
- no_pad_bytes = (remainder == 0) ? 0 : 4 - remainder;
- for (int i = 0; i < no_pad_bytes; i++) {
- bytes.readByte();
- }
- // Both cases have a field default_offset in common
- default_offset = bytes.readInt();
- }
- switch (opcode) {
- case TABLESWITCH:
- low = bytes.readInt();
- high = bytes.readInt();
- offset = bytes.getIndex() - 12 - no_pad_bytes - 1;
- default_offset += offset;
- buf.append("");
- // Print switch indices in first row (and default)
- jump_table = new int[high - low + 1];
- for (int i = 0; i < jump_table.length; i++) {
- jump_table[i] = offset + bytes.readInt();
- buf.append("").append(low + i).append(" | ");
- }
- buf.append("default | \n");
- // Print target and default indices in second row
- for (int i = 0; i < jump_table.length; i++) {
- buf.append("").append(jump_table[i]).append(" | ");
- }
- buf.append("").append(default_offset).append(
- " | \n \n");
- break;
- /* Lookup switch has variable length arguments.
- */
- case LOOKUPSWITCH:
- int npairs = bytes.readInt();
- offset = bytes.getIndex() - 8 - no_pad_bytes - 1;
- jump_table = new int[npairs];
- default_offset += offset;
- buf.append("");
- // Print switch indices in first row (and default)
- for (int i = 0; i < npairs; i++) {
- int match = bytes.readInt();
- jump_table[i] = offset + bytes.readInt();
- buf.append("").append(match).append(" | ");
- }
- buf.append("default | \n");
- // Print target and default indices in second row
- for (int i = 0; i < npairs; i++) {
- buf.append("").append(jump_table[i]).append(" | ");
- }
- buf.append("").append(default_offset).append(
- " | \n \n");
- break;
- /* Two address bytes + offset from start of byte stream form the
- * jump target.
- */
- case GOTO:
- case IFEQ:
- case IFGE:
- case IFGT:
- case IFLE:
- case IFLT:
- case IFNE:
- case IFNONNULL:
- case IFNULL:
- case IF_ACMPEQ:
- case IF_ACMPNE:
- case IF_ICMPEQ:
- case IF_ICMPGE:
- case IF_ICMPGT:
- case IF_ICMPLE:
- case IF_ICMPLT:
- case IF_ICMPNE:
- case JSR:
- index = (int) (bytes.getIndex() + bytes.readShort() - 1);
- buf.append("").append(index).append("");
- break;
- /* Same for 32-bit wide jumps
- */
- case GOTO_W:
- case JSR_W:
- int windex = bytes.getIndex() + bytes.readInt() - 1;
- buf.append("").append(windex).append("");
- break;
- /* Index byte references local variable (register)
- */
- case ALOAD:
- case ASTORE:
- case DLOAD:
- case DSTORE:
- case FLOAD:
- case FSTORE:
- case ILOAD:
- case ISTORE:
- case LLOAD:
- case LSTORE:
- case RET:
- if (wide) {
- vindex = bytes.readShort();
- wide = false; // Clear flag
- } else {
- vindex = bytes.readUnsignedByte();
- }
- buf.append("%").append(vindex);
- break;
- /*
- * Remember wide byte which is used to form a 16-bit address in the
- * following instruction. Relies on that the method is called again with
- * the following opcode.
- */
- case WIDE:
- wide = true;
- buf.append("(wide)");
- break;
- /* Array of basic type.
- */
- case NEWARRAY:
- buf.append("").append(TYPE_NAMES[bytes.readByte()]).append(
- "");
- break;
- /* Access object/class fields.
- */
- case GETFIELD:
- case GETSTATIC:
- case PUTFIELD:
- case PUTSTATIC:
- index = bytes.readShort();
- ConstantFieldref c1 = (ConstantFieldref) constant_pool.getConstant(index,
- CONSTANT_Fieldref);
- class_index = c1.getClassIndex();
- name = constant_pool.getConstantString(class_index, CONSTANT_Class);
- name = Utility.compactClassName(name, false);
- index = c1.getNameAndTypeIndex();
- String field_name = constant_pool.constantToString(index, CONSTANT_NameAndType);
- if (name.equals(class_name)) { // Local field
- buf.append("").append(field_name)
- .append("\n");
- } else {
- buf.append(constant_html.referenceConstant(class_index)).append(".").append(
- field_name);
- }
- break;
- /* Operands are references to classes in constant pool
- */
- case CHECKCAST:
- case INSTANCEOF:
- case NEW:
- index = bytes.readShort();
- buf.append(constant_html.referenceConstant(index));
- break;
- /* Operands are references to methods in constant pool
- */
- case INVOKESPECIAL:
- case INVOKESTATIC:
- case INVOKEVIRTUAL:
- case INVOKEINTERFACE:
- int m_index = bytes.readShort();
- String str;
- if (opcode == INVOKEINTERFACE) { // Special treatment needed
- int nargs = bytes.readUnsignedByte(); // Redundant
- int reserved = bytes.readUnsignedByte(); // Reserved
- ConstantInterfaceMethodref c = (ConstantInterfaceMethodref) constant_pool
- .getConstant(m_index, CONSTANT_InterfaceMethodref);
- class_index = c.getClassIndex();
- str = constant_pool.constantToString(c);
- index = c.getNameAndTypeIndex();
- } else {
- ConstantMethodref c = (ConstantMethodref) constant_pool.getConstant(m_index,
- CONSTANT_Methodref);
- class_index = c.getClassIndex();
- str = constant_pool.constantToString(c);
- index = c.getNameAndTypeIndex();
- }
- name = Class2HTML.referenceClass(class_index);
- str = Class2HTML.toHTML(constant_pool.constantToString(constant_pool.getConstant(
- index, CONSTANT_NameAndType)));
- // Get signature, i.e., types
- ConstantNameAndType c2 = (ConstantNameAndType) constant_pool.getConstant(index,
- CONSTANT_NameAndType);
- signature = constant_pool.constantToString(c2.getSignatureIndex(), CONSTANT_Utf8);
- String[] args = Utility.methodSignatureArgumentTypes(signature, false);
- String type = Utility.methodSignatureReturnType(signature, false);
- buf.append(name).append(".").append(str).append(
- "").append("(");
- // List arguments
- for (int i = 0; i < args.length; i++) {
- buf.append(Class2HTML.referenceType(args[i]));
- if (i < args.length - 1) {
- buf.append(", ");
- }
- }
- // Attach return type
- buf.append("):").append(Class2HTML.referenceType(type));
- break;
- /* Operands are references to items in constant pool
- */
- case LDC_W:
- case LDC2_W:
- index = bytes.readShort();
- buf.append("").append(
- Class2HTML.toHTML(constant_pool.constantToString(index,
- constant_pool.getConstant(index).getTag()))).append("");
- break;
- case LDC:
- index = bytes.readUnsignedByte();
- buf.append("").append(
- Class2HTML.toHTML(constant_pool.constantToString(index,
- constant_pool.getConstant(index).getTag()))).append("");
- break;
- /* Array of references.
- */
- case ANEWARRAY:
- index = bytes.readShort();
- buf.append(constant_html.referenceConstant(index));
- break;
- /* Multidimensional array of references.
- */
- case MULTIANEWARRAY:
- index = bytes.readShort();
- int dimensions = bytes.readByte();
- buf.append(constant_html.referenceConstant(index)).append(":").append(dimensions)
- .append("-dimensional");
- break;
- /* Increment local variable.
- */
- case IINC:
- if (wide) {
- vindex = bytes.readShort();
- constant = bytes.readShort();
- wide = false;
- } else {
- vindex = bytes.readUnsignedByte();
- constant = bytes.readByte();
- }
- buf.append("%").append(vindex).append(" ").append(constant);
- break;
- default:
- if (NO_OF_OPERANDS[opcode] > 0) {
- for (int i = 0; i < TYPE_OF_OPERANDS[opcode].length; i++) {
- switch (TYPE_OF_OPERANDS[opcode][i]) {
- case T_BYTE:
- buf.append(bytes.readUnsignedByte());
- break;
- case T_SHORT: // Either branch or index
- buf.append(bytes.readShort());
- break;
- case T_INT:
- buf.append(bytes.readInt());
- break;
- default: // Never reached
- System.err.println("Unreachable default case reached!");
- System.exit(-1);
- }
- buf.append(" ");
- }
- }
- }
- buf.append(" | ");
- return buf.toString();
- }
-
-
- /**
- * Find all target addresses in code, so that they can be marked
- * with <A NAME = ...>. Target addresses are kept in an BitSet object.
- */
- private final void findGotos( ByteSequence bytes, Method method, Code code ) throws IOException {
- int index;
- goto_set = new BitSet(bytes.available());
- int opcode;
- /* First get Code attribute from method and the exceptions handled
- * (try .. catch) in this method. We only need the line number here.
- */
- if (code != null) {
- CodeException[] ce = code.getExceptionTable();
- int len = ce.length;
- for (int i = 0; i < len; i++) {
- goto_set.set(ce[i].getStartPC());
- goto_set.set(ce[i].getEndPC());
- goto_set.set(ce[i].getHandlerPC());
- }
- // Look for local variables and their range
- Attribute[] attributes = code.getAttributes();
- for (int i = 0; i < attributes.length; i++) {
- if (attributes[i].getTag() == ATTR_LOCAL_VARIABLE_TABLE) {
- LocalVariable[] vars = ((LocalVariableTable) attributes[i])
- .getLocalVariableTable();
- for (int j = 0; j < vars.length; j++) {
- int start = vars[j].getStartPC();
- int end = (int) (start + vars[j].getLength());
- goto_set.set(start);
- goto_set.set(end);
- }
- break;
- }
- }
- }
- // Get target addresses from GOTO, JSR, TABLESWITCH, etc.
- for (int i = 0; bytes.available() > 0; i++) {
- opcode = bytes.readUnsignedByte();
- //System.out.println(OPCODE_NAMES[opcode]);
- switch (opcode) {
- case TABLESWITCH:
- case LOOKUPSWITCH:
- //bytes.readByte(); // Skip already read byte
- int remainder = bytes.getIndex() % 4;
- int no_pad_bytes = (remainder == 0) ? 0 : 4 - remainder;
- int default_offset,
- offset;
- for (int j = 0; j < no_pad_bytes; j++) {
- bytes.readByte();
- }
- // Both cases have a field default_offset in common
- default_offset = bytes.readInt();
- if (opcode == TABLESWITCH) {
- int low = bytes.readInt();
- int high = bytes.readInt();
- offset = bytes.getIndex() - 12 - no_pad_bytes - 1;
- default_offset += offset;
- goto_set.set(default_offset);
- for (int j = 0; j < (high - low + 1); j++) {
- index = offset + bytes.readInt();
- goto_set.set(index);
- }
- } else { // LOOKUPSWITCH
- int npairs = bytes.readInt();
- offset = bytes.getIndex() - 8 - no_pad_bytes - 1;
- default_offset += offset;
- goto_set.set(default_offset);
- for (int j = 0; j < npairs; j++) {
- int match = bytes.readInt();
- index = offset + bytes.readInt();
- goto_set.set(index);
- }
- }
- break;
- case GOTO:
- case IFEQ:
- case IFGE:
- case IFGT:
- case IFLE:
- case IFLT:
- case IFNE:
- case IFNONNULL:
- case IFNULL:
- case IF_ACMPEQ:
- case IF_ACMPNE:
- case IF_ICMPEQ:
- case IF_ICMPGE:
- case IF_ICMPGT:
- case IF_ICMPLE:
- case IF_ICMPLT:
- case IF_ICMPNE:
- case JSR:
- //bytes.readByte(); // Skip already read byte
- index = bytes.getIndex() + bytes.readShort() - 1;
- goto_set.set(index);
- break;
- case GOTO_W:
- case JSR_W:
- //bytes.readByte(); // Skip already read byte
- index = bytes.getIndex() + bytes.readInt() - 1;
- goto_set.set(index);
- break;
- default:
- bytes.unreadByte();
- codeToHTML(bytes, 0); // Ignore output
- }
- }
- }
-
-
- /**
- * Write a single method with the byte code associated with it.
- */
- private void writeMethod( Method method, int method_number ) throws IOException {
- // Get raw signature
- String signature = method.getSignature();
- // Get array of strings containing the argument types
- String[] args = Utility.methodSignatureArgumentTypes(signature, false);
- // Get return type string
- String type = Utility.methodSignatureReturnType(signature, false);
- // Get method name
- String name = method.getName();
- String html_name = Class2HTML.toHTML(name);
- // Get method's access flags
- String access = Utility.accessToString(method.getAccessFlags());
- access = Utility.replace(access, " ", " ");
- // Get the method's attributes, the Code Attribute in particular
- Attribute[] attributes = method.getAttributes();
- file.print("" + access + " " + "" + Class2HTML.referenceType(type) + " "
- + html_name + "(");
- for (int i = 0; i < args.length; i++) {
- file.print(Class2HTML.referenceType(args[i]));
- if (i < args.length - 1) {
- file.print(", ");
- }
- }
- file.println(")
");
- Code c = null;
- byte[] code = null;
- if (attributes.length > 0) {
- file.print("Attributes
\n");
- for (int i = 0; i < attributes.length; i++) {
- byte tag = attributes[i].getTag();
- if (tag != ATTR_UNKNOWN) {
- file.print("- "
- + ATTRIBUTE_NAMES[tag] + "
\n");
- } else {
- file.print("- " + attributes[i] + "
");
- }
- if (tag == ATTR_CODE) {
- c = (Code) attributes[i];
- Attribute[] attributes2 = c.getAttributes();
- code = c.getCode();
- file.print("");
- for (int j = 0; j < attributes2.length; j++) {
- tag = attributes2[j].getTag();
- file.print("- "
- + ATTRIBUTE_NAMES[tag] + "
\n");
- }
- file.print("
");
- }
- }
- file.println("
");
- }
- if (code != null) { // No code, an abstract method, e.g.
- //System.out.println(name + "\n" + Utility.codeToString(code, constant_pool, 0, -1));
- // Print the byte code
- ByteSequence stream = new ByteSequence(code);
- stream.mark(stream.available());
- findGotos(stream, method, c);
- stream.reset();
- file.println("Byte offset | "
- + "Instruction | Argument | ");
- for (int i = 0; stream.available() > 0; i++) {
- int offset = stream.getIndex();
- String str = codeToHTML(stream, method_number);
- String anchor = "";
- /* Set an anchor mark if this line is targetted by a goto, jsr, etc.
- * Defining an anchor for every line is very inefficient!
- */
- if (goto_set.get(offset)) {
- anchor = "";
- }
- String anchor2;
- if (stream.getIndex() == code.length) {
- anchor2 = "" + offset
- + "";
- } else {
- anchor2 = "" + offset;
- }
- file
- .println("
---|
" + anchor2 + " | " + anchor + str
- + " |
");
- }
- // Mark last line, may be targetted from Attributes window
- file.println(" |
");
- file.println("
");
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.BitSet;
+
+import org.apache.bcel5_2_0.classfile.Attribute;
+import org.apache.bcel5_2_0.classfile.Code;
+import org.apache.bcel5_2_0.classfile.CodeException;
+import org.apache.bcel5_2_0.classfile.ConstantFieldref;
+import org.apache.bcel5_2_0.classfile.ConstantInterfaceMethodref;
+import org.apache.bcel5_2_0.classfile.ConstantMethodref;
+import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.LocalVariable;
+import org.apache.bcel5_2_0.classfile.LocalVariableTable;
+import org.apache.bcel5_2_0.classfile.Method;
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Convert code into HTML file.
+ *
+ * @version $Id: CodeHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ *
+ */
+final class CodeHTML implements org.apache.bcel5_2_0.Constants {
+
+ private String class_name; // name of current class
+ private Method[] methods; // Methods to print
+ private PrintWriter file; // file to write to
+ private BitSet goto_set;
+ private ConstantPool constant_pool;
+ private ConstantHTML constant_html;
+ private static boolean wide = false;
+
+
+ CodeHTML(String dir, String class_name, Method[] methods, ConstantPool constant_pool,
+ ConstantHTML constant_html) throws IOException {
+ this.class_name = class_name;
+ this.methods = methods;
+ this.constant_pool = constant_pool;
+ this.constant_html = constant_html;
+ file = new PrintWriter(new FileOutputStream(dir + class_name + "_code.html"));
+ file.println("");
+ for (int i = 0; i < methods.length; i++) {
+ writeMethod(methods[i], i);
+ }
+ file.println("");
+ file.close();
+ }
+
+
+ /**
+ * Disassemble a stream of byte codes and return the
+ * string representation.
+ *
+ * @param stream data input stream
+ * @return String representation of byte code
+ */
+ private final String codeToHTML( ByteSequence bytes, int method_number ) throws IOException {
+ short opcode = (short) bytes.readUnsignedByte();
+ StringBuilder buf;
+ String name, signature;
+ int default_offset = 0, low, high;
+ int index, class_index, vindex, constant;
+ int[] jump_table;
+ int no_pad_bytes = 0, offset;
+ buf = new StringBuilder(256);
+ buf.append("").append(OPCODE_NAMES[opcode]).append("");
+ /* Special case: Skip (0-3) padding bytes, i.e., the
+ * following bytes are 4-byte-aligned
+ */
+ if ((opcode == TABLESWITCH) || (opcode == LOOKUPSWITCH)) {
+ int remainder = bytes.getIndex() % 4;
+ no_pad_bytes = (remainder == 0) ? 0 : 4 - remainder;
+ for (int i = 0; i < no_pad_bytes; i++) {
+ bytes.readByte();
+ }
+ // Both cases have a field default_offset in common
+ default_offset = bytes.readInt();
+ }
+ switch (opcode) {
+ case TABLESWITCH:
+ low = bytes.readInt();
+ high = bytes.readInt();
+ offset = bytes.getIndex() - 12 - no_pad_bytes - 1;
+ default_offset += offset;
+ buf.append("");
+ // Print switch indices in first row (and default)
+ jump_table = new int[high - low + 1];
+ for (int i = 0; i < jump_table.length; i++) {
+ jump_table[i] = offset + bytes.readInt();
+ buf.append("").append(low + i).append(" | ");
+ }
+ buf.append("default | \n");
+ // Print target and default indices in second row
+ for (int i = 0; i < jump_table.length; i++) {
+ buf.append("").append(jump_table[i]).append(" | ");
+ }
+ buf.append("").append(default_offset).append(
+ " | \n \n");
+ break;
+ /* Lookup switch has variable length arguments.
+ */
+ case LOOKUPSWITCH:
+ int npairs = bytes.readInt();
+ offset = bytes.getIndex() - 8 - no_pad_bytes - 1;
+ jump_table = new int[npairs];
+ default_offset += offset;
+ buf.append("");
+ // Print switch indices in first row (and default)
+ for (int i = 0; i < npairs; i++) {
+ int match = bytes.readInt();
+ jump_table[i] = offset + bytes.readInt();
+ buf.append("").append(match).append(" | ");
+ }
+ buf.append("default | \n");
+ // Print target and default indices in second row
+ for (int i = 0; i < npairs; i++) {
+ buf.append("").append(jump_table[i]).append(" | ");
+ }
+ buf.append("").append(default_offset).append(
+ " | \n \n");
+ break;
+ /* Two address bytes + offset from start of byte stream form the
+ * jump target.
+ */
+ case GOTO:
+ case IFEQ:
+ case IFGE:
+ case IFGT:
+ case IFLE:
+ case IFLT:
+ case IFNE:
+ case IFNONNULL:
+ case IFNULL:
+ case IF_ACMPEQ:
+ case IF_ACMPNE:
+ case IF_ICMPEQ:
+ case IF_ICMPGE:
+ case IF_ICMPGT:
+ case IF_ICMPLE:
+ case IF_ICMPLT:
+ case IF_ICMPNE:
+ case JSR:
+ index = (int) (bytes.getIndex() + bytes.readShort() - 1);
+ buf.append("").append(index).append("");
+ break;
+ /* Same for 32-bit wide jumps
+ */
+ case GOTO_W:
+ case JSR_W:
+ int windex = bytes.getIndex() + bytes.readInt() - 1;
+ buf.append("").append(windex).append("");
+ break;
+ /* Index byte references local variable (register)
+ */
+ case ALOAD:
+ case ASTORE:
+ case DLOAD:
+ case DSTORE:
+ case FLOAD:
+ case FSTORE:
+ case ILOAD:
+ case ISTORE:
+ case LLOAD:
+ case LSTORE:
+ case RET:
+ if (wide) {
+ vindex = bytes.readShort();
+ wide = false; // Clear flag
+ } else {
+ vindex = bytes.readUnsignedByte();
+ }
+ buf.append("%").append(vindex);
+ break;
+ /*
+ * Remember wide byte which is used to form a 16-bit address in the
+ * following instruction. Relies on that the method is called again with
+ * the following opcode.
+ */
+ case WIDE:
+ wide = true;
+ buf.append("(wide)");
+ break;
+ /* Array of basic type.
+ */
+ case NEWARRAY:
+ buf.append("").append(TYPE_NAMES[bytes.readByte()]).append(
+ "");
+ break;
+ /* Access object/class fields.
+ */
+ case GETFIELD:
+ case GETSTATIC:
+ case PUTFIELD:
+ case PUTSTATIC:
+ index = bytes.readShort();
+ ConstantFieldref c1 = (ConstantFieldref) constant_pool.getConstant(index,
+ CONSTANT_Fieldref);
+ class_index = c1.getClassIndex();
+ name = constant_pool.getConstantString(class_index, CONSTANT_Class);
+ name = Utility.compactClassName(name, false);
+ index = c1.getNameAndTypeIndex();
+ String field_name = constant_pool.constantToString(index, CONSTANT_NameAndType);
+ if (name.equals(class_name)) { // Local field
+ buf.append("").append(field_name)
+ .append("\n");
+ } else {
+ buf.append(constant_html.referenceConstant(class_index)).append(".").append(
+ field_name);
+ }
+ break;
+ /* Operands are references to classes in constant pool
+ */
+ case CHECKCAST:
+ case INSTANCEOF:
+ case NEW:
+ index = bytes.readShort();
+ buf.append(constant_html.referenceConstant(index));
+ break;
+ /* Operands are references to methods in constant pool
+ */
+ case INVOKESPECIAL:
+ case INVOKESTATIC:
+ case INVOKEVIRTUAL:
+ case INVOKEINTERFACE:
+ int m_index = bytes.readShort();
+ String str;
+ if (opcode == INVOKEINTERFACE) { // Special treatment needed
+ int nargs = bytes.readUnsignedByte(); // Redundant
+ int reserved = bytes.readUnsignedByte(); // Reserved
+ ConstantInterfaceMethodref c = (ConstantInterfaceMethodref) constant_pool
+ .getConstant(m_index, CONSTANT_InterfaceMethodref);
+ class_index = c.getClassIndex();
+ str = constant_pool.constantToString(c);
+ index = c.getNameAndTypeIndex();
+ } else {
+ ConstantMethodref c = (ConstantMethodref) constant_pool.getConstant(m_index,
+ CONSTANT_Methodref);
+ class_index = c.getClassIndex();
+ str = constant_pool.constantToString(c);
+ index = c.getNameAndTypeIndex();
+ }
+ name = Class2HTML.referenceClass(class_index);
+ str = Class2HTML.toHTML(constant_pool.constantToString(constant_pool.getConstant(
+ index, CONSTANT_NameAndType)));
+ // Get signature, i.e., types
+ ConstantNameAndType c2 = (ConstantNameAndType) constant_pool.getConstant(index,
+ CONSTANT_NameAndType);
+ signature = constant_pool.constantToString(c2.getSignatureIndex(), CONSTANT_Utf8);
+ String[] args = Utility.methodSignatureArgumentTypes(signature, false);
+ String type = Utility.methodSignatureReturnType(signature, false);
+ buf.append(name).append(".").append(str).append(
+ "").append("(");
+ // List arguments
+ for (int i = 0; i < args.length; i++) {
+ buf.append(Class2HTML.referenceType(args[i]));
+ if (i < args.length - 1) {
+ buf.append(", ");
+ }
+ }
+ // Attach return type
+ buf.append("):").append(Class2HTML.referenceType(type));
+ break;
+ /* Operands are references to items in constant pool
+ */
+ case LDC_W:
+ case LDC2_W:
+ index = bytes.readShort();
+ buf.append("").append(
+ Class2HTML.toHTML(constant_pool.constantToString(index,
+ constant_pool.getConstant(index).getTag()))).append("");
+ break;
+ case LDC:
+ index = bytes.readUnsignedByte();
+ buf.append("").append(
+ Class2HTML.toHTML(constant_pool.constantToString(index,
+ constant_pool.getConstant(index).getTag()))).append("");
+ break;
+ /* Array of references.
+ */
+ case ANEWARRAY:
+ index = bytes.readShort();
+ buf.append(constant_html.referenceConstant(index));
+ break;
+ /* Multidimensional array of references.
+ */
+ case MULTIANEWARRAY:
+ index = bytes.readShort();
+ int dimensions = bytes.readByte();
+ buf.append(constant_html.referenceConstant(index)).append(":").append(dimensions)
+ .append("-dimensional");
+ break;
+ /* Increment local variable.
+ */
+ case IINC:
+ if (wide) {
+ vindex = bytes.readShort();
+ constant = bytes.readShort();
+ wide = false;
+ } else {
+ vindex = bytes.readUnsignedByte();
+ constant = bytes.readByte();
+ }
+ buf.append("%").append(vindex).append(" ").append(constant);
+ break;
+ default:
+ if (NO_OF_OPERANDS[opcode] > 0) {
+ for (int i = 0; i < TYPE_OF_OPERANDS[opcode].length; i++) {
+ switch (TYPE_OF_OPERANDS[opcode][i]) {
+ case T_BYTE:
+ buf.append(bytes.readUnsignedByte());
+ break;
+ case T_SHORT: // Either branch or index
+ buf.append(bytes.readShort());
+ break;
+ case T_INT:
+ buf.append(bytes.readInt());
+ break;
+ default: // Never reached
+ System.err.println("Unreachable default case reached!");
+ System.exit(-1);
+ }
+ buf.append(" ");
+ }
+ }
+ }
+ buf.append(" | ");
+ return buf.toString();
+ }
+
+
+ /**
+ * Find all target addresses in code, so that they can be marked
+ * with <A NAME = ...>. Target addresses are kept in an BitSet object.
+ */
+ private final void findGotos( ByteSequence bytes, Method method, Code code ) throws IOException {
+ int index;
+ goto_set = new BitSet(bytes.available());
+ int opcode;
+ /* First get Code attribute from method and the exceptions handled
+ * (try .. catch) in this method. We only need the line number here.
+ */
+ if (code != null) {
+ CodeException[] ce = code.getExceptionTable();
+ int len = ce.length;
+ for (int i = 0; i < len; i++) {
+ goto_set.set(ce[i].getStartPC());
+ goto_set.set(ce[i].getEndPC());
+ goto_set.set(ce[i].getHandlerPC());
+ }
+ // Look for local variables and their range
+ Attribute[] attributes = code.getAttributes();
+ for (int i = 0; i < attributes.length; i++) {
+ if (attributes[i].getTag() == ATTR_LOCAL_VARIABLE_TABLE) {
+ LocalVariable[] vars = ((LocalVariableTable) attributes[i])
+ .getLocalVariableTable();
+ for (int j = 0; j < vars.length; j++) {
+ int start = vars[j].getStartPC();
+ int end = (int) (start + vars[j].getLength());
+ goto_set.set(start);
+ goto_set.set(end);
+ }
+ break;
+ }
+ }
+ }
+ // Get target addresses from GOTO, JSR, TABLESWITCH, etc.
+ for (int i = 0; bytes.available() > 0; i++) {
+ opcode = bytes.readUnsignedByte();
+ //System.out.println(OPCODE_NAMES[opcode]);
+ switch (opcode) {
+ case TABLESWITCH:
+ case LOOKUPSWITCH:
+ //bytes.readByte(); // Skip already read byte
+ int remainder = bytes.getIndex() % 4;
+ int no_pad_bytes = (remainder == 0) ? 0 : 4 - remainder;
+ int default_offset,
+ offset;
+ for (int j = 0; j < no_pad_bytes; j++) {
+ bytes.readByte();
+ }
+ // Both cases have a field default_offset in common
+ default_offset = bytes.readInt();
+ if (opcode == TABLESWITCH) {
+ int low = bytes.readInt();
+ int high = bytes.readInt();
+ offset = bytes.getIndex() - 12 - no_pad_bytes - 1;
+ default_offset += offset;
+ goto_set.set(default_offset);
+ for (int j = 0; j < (high - low + 1); j++) {
+ index = offset + bytes.readInt();
+ goto_set.set(index);
+ }
+ } else { // LOOKUPSWITCH
+ int npairs = bytes.readInt();
+ offset = bytes.getIndex() - 8 - no_pad_bytes - 1;
+ default_offset += offset;
+ goto_set.set(default_offset);
+ for (int j = 0; j < npairs; j++) {
+ int match = bytes.readInt();
+ index = offset + bytes.readInt();
+ goto_set.set(index);
+ }
+ }
+ break;
+ case GOTO:
+ case IFEQ:
+ case IFGE:
+ case IFGT:
+ case IFLE:
+ case IFLT:
+ case IFNE:
+ case IFNONNULL:
+ case IFNULL:
+ case IF_ACMPEQ:
+ case IF_ACMPNE:
+ case IF_ICMPEQ:
+ case IF_ICMPGE:
+ case IF_ICMPGT:
+ case IF_ICMPLE:
+ case IF_ICMPLT:
+ case IF_ICMPNE:
+ case JSR:
+ //bytes.readByte(); // Skip already read byte
+ index = bytes.getIndex() + bytes.readShort() - 1;
+ goto_set.set(index);
+ break;
+ case GOTO_W:
+ case JSR_W:
+ //bytes.readByte(); // Skip already read byte
+ index = bytes.getIndex() + bytes.readInt() - 1;
+ goto_set.set(index);
+ break;
+ default:
+ bytes.unreadByte();
+ codeToHTML(bytes, 0); // Ignore output
+ }
+ }
+ }
+
+
+ /**
+ * Write a single method with the byte code associated with it.
+ */
+ private void writeMethod( Method method, int method_number ) throws IOException {
+ // Get raw signature
+ String signature = method.getSignature();
+ // Get array of strings containing the argument types
+ String[] args = Utility.methodSignatureArgumentTypes(signature, false);
+ // Get return type string
+ String type = Utility.methodSignatureReturnType(signature, false);
+ // Get method name
+ String name = method.getName();
+ String html_name = Class2HTML.toHTML(name);
+ // Get method's access flags
+ String access = Utility.accessToString(method.getAccessFlags());
+ access = Utility.replace(access, " ", " ");
+ // Get the method's attributes, the Code Attribute in particular
+ Attribute[] attributes = method.getAttributes();
+ file.print("" + access + " " + "" + Class2HTML.referenceType(type) + " "
+ + html_name + "(");
+ for (int i = 0; i < args.length; i++) {
+ file.print(Class2HTML.referenceType(args[i]));
+ if (i < args.length - 1) {
+ file.print(", ");
+ }
+ }
+ file.println(")
");
+ Code c = null;
+ byte[] code = null;
+ if (attributes.length > 0) {
+ file.print("Attributes
\n");
+ for (int i = 0; i < attributes.length; i++) {
+ byte tag = attributes[i].getTag();
+ if (tag != ATTR_UNKNOWN) {
+ file.print("- "
+ + ATTRIBUTE_NAMES[tag] + "
\n");
+ } else {
+ file.print("- " + attributes[i] + "
");
+ }
+ if (tag == ATTR_CODE) {
+ c = (Code) attributes[i];
+ Attribute[] attributes2 = c.getAttributes();
+ code = c.getCode();
+ file.print("");
+ for (int j = 0; j < attributes2.length; j++) {
+ tag = attributes2[j].getTag();
+ file.print("- "
+ + ATTRIBUTE_NAMES[tag] + "
\n");
+ }
+ file.print("
");
+ }
+ }
+ file.println("
");
+ }
+ if (code != null) { // No code, an abstract method, e.g.
+ //System.out.println(name + "\n" + Utility.codeToString(code, constant_pool, 0, -1));
+ // Print the byte code
+ ByteSequence stream = new ByteSequence(code);
+ stream.mark(stream.available());
+ findGotos(stream, method, c);
+ stream.reset();
+ file.println("Byte offset | "
+ + "Instruction | Argument | ");
+ for (int i = 0; stream.available() > 0; i++) {
+ int offset = stream.getIndex();
+ String str = codeToHTML(stream, method_number);
+ String anchor = "";
+ /* Set an anchor mark if this line is targetted by a goto, jsr, etc.
+ * Defining an anchor for every line is very inefficient!
+ */
+ if (goto_set.get(offset)) {
+ anchor = "";
+ }
+ String anchor2;
+ if (stream.getIndex() == code.length) {
+ anchor2 = "" + offset
+ + "";
+ } else {
+ anchor2 = "" + offset;
+ }
+ file
+ .println("
---|
" + anchor2 + " | " + anchor + str
+ + " |
");
+ }
+ // Mark last line, may be targetted from Attributes window
+ file.println(" |
");
+ file.println("
");
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ConstantHTML.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ConstantHTML.java
index 2afd9f37..36e6fdb7 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ConstantHTML.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/ConstantHTML.java
@@ -1,235 +1,235 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import org.apache.bcel5_2_0.classfile.Constant;
-import org.apache.bcel5_2_0.classfile.ConstantClass;
-import org.apache.bcel5_2_0.classfile.ConstantFieldref;
-import org.apache.bcel5_2_0.classfile.ConstantInterfaceMethodref;
-import org.apache.bcel5_2_0.classfile.ConstantMethodref;
-import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
-import org.apache.bcel5_2_0.classfile.ConstantPool;
-import org.apache.bcel5_2_0.classfile.ConstantString;
-import org.apache.bcel5_2_0.classfile.Method;
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Convert constant pool into HTML file.
- *
- * @version $Id: ConstantHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- *
- */
-final class ConstantHTML implements org.apache.bcel5_2_0.Constants {
-
- private String class_name; // name of current class
- private String class_package; // name of package
- private ConstantPool constant_pool; // reference to constant pool
- private PrintWriter file; // file to write to
- private String[] constant_ref; // String to return for cp[i]
- private Constant[] constants; // The constants in the cp
- private Method[] methods;
-
-
- ConstantHTML(String dir, String class_name, String class_package, Method[] methods,
- ConstantPool constant_pool) throws IOException {
- this.class_name = class_name;
- this.class_package = class_package;
- this.constant_pool = constant_pool;
- this.methods = methods;
- constants = constant_pool.getConstantPool();
- file = new PrintWriter(new FileOutputStream(dir + class_name + "_cp.html"));
- constant_ref = new String[constants.length];
- constant_ref[0] = "<unknown>";
- file.println("");
- // Loop through constants, constants[0] is reserved
- for (int i = 1; i < constants.length; i++) {
- if (i % 2 == 0) {
- file.print("");
- } else {
- file.print(" |
");
- }
- if (constants[i] != null) {
- writeConstant(i);
- }
- file.print(" |
\n");
- }
- file.println("
");
- file.close();
- }
-
-
- String referenceConstant( int index ) {
- return constant_ref[index];
- }
-
-
- private void writeConstant( int index ) {
- byte tag = constants[index].getTag();
- int class_index, name_index;
- String ref;
- // The header is always the same
- file.println(" " + index + " " + CONSTANT_NAMES[tag]
- + "
");
- /* For every constant type get the needed parameters and print them appropiately
- */
- switch (tag) {
- case CONSTANT_InterfaceMethodref:
- case CONSTANT_Methodref:
- // Get class_index and name_and_type_index, depending on type
- if (tag == CONSTANT_Methodref) {
- ConstantMethodref c = (ConstantMethodref) constant_pool.getConstant(index,
- CONSTANT_Methodref);
- class_index = c.getClassIndex();
- name_index = c.getNameAndTypeIndex();
- } else {
- ConstantInterfaceMethodref c1 = (ConstantInterfaceMethodref) constant_pool
- .getConstant(index, CONSTANT_InterfaceMethodref);
- class_index = c1.getClassIndex();
- name_index = c1.getNameAndTypeIndex();
- }
- // Get method name and its class
- String method_name = constant_pool.constantToString(name_index,
- CONSTANT_NameAndType);
- String html_method_name = Class2HTML.toHTML(method_name);
- // Partially compacted class name, i.e., / -> .
- String method_class = constant_pool.constantToString(class_index, CONSTANT_Class);
- String short_method_class = Utility.compactClassName(method_class); // I.e., remove java.lang.
- short_method_class = Utility.compactClassName(method_class); // I.e., remove java.lang.
- short_method_class = Utility.compactClassName(short_method_class, class_package
- + ".", true); // Remove class package prefix
- // Get method signature
- ConstantNameAndType c2 = (ConstantNameAndType) constant_pool.getConstant(
- name_index, CONSTANT_NameAndType);
- String signature = constant_pool.constantToString(c2.getSignatureIndex(),
- CONSTANT_Utf8);
- // Get array of strings containing the argument types
- String[] args = Utility.methodSignatureArgumentTypes(signature, false);
- // Get return type string
- String type = Utility.methodSignatureReturnType(signature, false);
- String ret_type = Class2HTML.referenceType(type);
- StringBuilder buf = new StringBuilder("(");
- for (int i = 0; i < args.length; i++) {
- buf.append(Class2HTML.referenceType(args[i]));
- if (i < args.length - 1) {
- buf.append(", ");
- }
- }
- buf.append(")");
- String arg_types = buf.toString();
- if (method_class.equals(class_name)) {
- ref = ""
- + html_method_name + "";
- } else {
- ref = ""
- + short_method_class + "." + html_method_name;
- }
- constant_ref[index] = ret_type + " " + short_method_class
- + "." + html_method_name + " " + arg_types;
- file.println("" + ret_type + " " + ref + arg_types
- + " \n
");
- break;
- case CONSTANT_Fieldref:
- // Get class_index and name_and_type_index
- ConstantFieldref c3 = (ConstantFieldref) constant_pool.getConstant(index,
- CONSTANT_Fieldref);
- class_index = c3.getClassIndex();
- name_index = c3.getNameAndTypeIndex();
- // Get method name and its class (compacted)
- String field_class = constant_pool.constantToString(class_index, CONSTANT_Class);
- String short_field_class = Utility.compactClassName(field_class); // I.e., remove java.lang.
- short_field_class = Utility.compactClassName(short_field_class,
- class_package + ".", true); // Remove class package prefix
- String field_name = constant_pool
- .constantToString(name_index, CONSTANT_NameAndType);
- if (field_class.equals(class_name)) {
- ref = "" + field_name + "";
- } else {
- ref = "" + short_field_class
- + "." + field_name + "\n";
- }
- constant_ref[index] = "" + short_field_class + "."
- + field_name + "";
- file.println("" + ref + "
\n" + "
");
- break;
- case CONSTANT_Class:
- ConstantClass c4 = (ConstantClass) constant_pool.getConstant(index, CONSTANT_Class);
- name_index = c4.getNameIndex();
- String class_name2 = constant_pool.constantToString(index, tag); // / -> .
- String short_class_name = Utility.compactClassName(class_name2); // I.e., remove java.lang.
- short_class_name = Utility.compactClassName(short_class_name, class_package + ".",
- true); // Remove class package prefix
- ref = "" + short_class_name
- + "";
- constant_ref[index] = "" + short_class_name + "";
- file.println("" + ref + "
\n");
- break;
- case CONSTANT_String:
- ConstantString c5 = (ConstantString) constant_pool.getConstant(index,
- CONSTANT_String);
- name_index = c5.getStringIndex();
- String str = Class2HTML.toHTML(constant_pool.constantToString(index, tag));
- file.println("" + str + "
\n");
- break;
- case CONSTANT_NameAndType:
- ConstantNameAndType c6 = (ConstantNameAndType) constant_pool.getConstant(index,
- CONSTANT_NameAndType);
- name_index = c6.getNameIndex();
- int signature_index = c6.getSignatureIndex();
- file.println(""
- + Class2HTML.toHTML(constant_pool.constantToString(index, tag))
- + "
\n");
- break;
- default:
- file
- .println(""
- + Class2HTML.toHTML(constant_pool.constantToString(index, tag))
- + "\n");
- } // switch
- }
-
-
- private final int getMethodNumber( String str ) {
- for (int i = 0; i < methods.length; i++) {
- String cmp = methods[i].getName() + methods[i].getSignature();
- if (cmp.equals(str)) {
- return i;
- }
- }
- return -1;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.bcel5_2_0.classfile.Constant;
+import org.apache.bcel5_2_0.classfile.ConstantClass;
+import org.apache.bcel5_2_0.classfile.ConstantFieldref;
+import org.apache.bcel5_2_0.classfile.ConstantInterfaceMethodref;
+import org.apache.bcel5_2_0.classfile.ConstantMethodref;
+import org.apache.bcel5_2_0.classfile.ConstantNameAndType;
+import org.apache.bcel5_2_0.classfile.ConstantPool;
+import org.apache.bcel5_2_0.classfile.ConstantString;
+import org.apache.bcel5_2_0.classfile.Method;
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Convert constant pool into HTML file.
+ *
+ * @version $Id: ConstantHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ *
+ */
+final class ConstantHTML implements org.apache.bcel5_2_0.Constants {
+
+ private String class_name; // name of current class
+ private String class_package; // name of package
+ private ConstantPool constant_pool; // reference to constant pool
+ private PrintWriter file; // file to write to
+ private String[] constant_ref; // String to return for cp[i]
+ private Constant[] constants; // The constants in the cp
+ private Method[] methods;
+
+
+ ConstantHTML(String dir, String class_name, String class_package, Method[] methods,
+ ConstantPool constant_pool) throws IOException {
+ this.class_name = class_name;
+ this.class_package = class_package;
+ this.constant_pool = constant_pool;
+ this.methods = methods;
+ constants = constant_pool.getConstantPool();
+ file = new PrintWriter(new FileOutputStream(dir + class_name + "_cp.html"));
+ constant_ref = new String[constants.length];
+ constant_ref[0] = "<unknown>";
+ file.println("
");
+ // Loop through constants, constants[0] is reserved
+ for (int i = 1; i < constants.length; i++) {
+ if (i % 2 == 0) {
+ file.print("");
+ } else {
+ file.print(" |
");
+ }
+ if (constants[i] != null) {
+ writeConstant(i);
+ }
+ file.print(" |
\n");
+ }
+ file.println("
");
+ file.close();
+ }
+
+
+ String referenceConstant( int index ) {
+ return constant_ref[index];
+ }
+
+
+ private void writeConstant( int index ) {
+ byte tag = constants[index].getTag();
+ int class_index, name_index;
+ String ref;
+ // The header is always the same
+ file.println(" " + index + " " + CONSTANT_NAMES[tag]
+ + "
");
+ /* For every constant type get the needed parameters and print them appropiately
+ */
+ switch (tag) {
+ case CONSTANT_InterfaceMethodref:
+ case CONSTANT_Methodref:
+ // Get class_index and name_and_type_index, depending on type
+ if (tag == CONSTANT_Methodref) {
+ ConstantMethodref c = (ConstantMethodref) constant_pool.getConstant(index,
+ CONSTANT_Methodref);
+ class_index = c.getClassIndex();
+ name_index = c.getNameAndTypeIndex();
+ } else {
+ ConstantInterfaceMethodref c1 = (ConstantInterfaceMethodref) constant_pool
+ .getConstant(index, CONSTANT_InterfaceMethodref);
+ class_index = c1.getClassIndex();
+ name_index = c1.getNameAndTypeIndex();
+ }
+ // Get method name and its class
+ String method_name = constant_pool.constantToString(name_index,
+ CONSTANT_NameAndType);
+ String html_method_name = Class2HTML.toHTML(method_name);
+ // Partially compacted class name, i.e., / -> .
+ String method_class = constant_pool.constantToString(class_index, CONSTANT_Class);
+ String short_method_class = Utility.compactClassName(method_class); // I.e., remove java.lang.
+ short_method_class = Utility.compactClassName(method_class); // I.e., remove java.lang.
+ short_method_class = Utility.compactClassName(short_method_class, class_package
+ + ".", true); // Remove class package prefix
+ // Get method signature
+ ConstantNameAndType c2 = (ConstantNameAndType) constant_pool.getConstant(
+ name_index, CONSTANT_NameAndType);
+ String signature = constant_pool.constantToString(c2.getSignatureIndex(),
+ CONSTANT_Utf8);
+ // Get array of strings containing the argument types
+ String[] args = Utility.methodSignatureArgumentTypes(signature, false);
+ // Get return type string
+ String type = Utility.methodSignatureReturnType(signature, false);
+ String ret_type = Class2HTML.referenceType(type);
+ StringBuilder buf = new StringBuilder("(");
+ for (int i = 0; i < args.length; i++) {
+ buf.append(Class2HTML.referenceType(args[i]));
+ if (i < args.length - 1) {
+ buf.append(", ");
+ }
+ }
+ buf.append(")");
+ String arg_types = buf.toString();
+ if (method_class.equals(class_name)) {
+ ref = ""
+ + html_method_name + "";
+ } else {
+ ref = ""
+ + short_method_class + "." + html_method_name;
+ }
+ constant_ref[index] = ret_type + " " + short_method_class
+ + "." + html_method_name + " " + arg_types;
+ file.println("" + ret_type + " " + ref + arg_types
+ + " \n
");
+ break;
+ case CONSTANT_Fieldref:
+ // Get class_index and name_and_type_index
+ ConstantFieldref c3 = (ConstantFieldref) constant_pool.getConstant(index,
+ CONSTANT_Fieldref);
+ class_index = c3.getClassIndex();
+ name_index = c3.getNameAndTypeIndex();
+ // Get method name and its class (compacted)
+ String field_class = constant_pool.constantToString(class_index, CONSTANT_Class);
+ String short_field_class = Utility.compactClassName(field_class); // I.e., remove java.lang.
+ short_field_class = Utility.compactClassName(short_field_class,
+ class_package + ".", true); // Remove class package prefix
+ String field_name = constant_pool
+ .constantToString(name_index, CONSTANT_NameAndType);
+ if (field_class.equals(class_name)) {
+ ref = "" + field_name + "";
+ } else {
+ ref = "" + short_field_class
+ + "." + field_name + "\n";
+ }
+ constant_ref[index] = "" + short_field_class + "."
+ + field_name + "";
+ file.println("" + ref + "
\n" + "
");
+ break;
+ case CONSTANT_Class:
+ ConstantClass c4 = (ConstantClass) constant_pool.getConstant(index, CONSTANT_Class);
+ name_index = c4.getNameIndex();
+ String class_name2 = constant_pool.constantToString(index, tag); // / -> .
+ String short_class_name = Utility.compactClassName(class_name2); // I.e., remove java.lang.
+ short_class_name = Utility.compactClassName(short_class_name, class_package + ".",
+ true); // Remove class package prefix
+ ref = "" + short_class_name
+ + "";
+ constant_ref[index] = "" + short_class_name + "";
+ file.println("" + ref + "
\n");
+ break;
+ case CONSTANT_String:
+ ConstantString c5 = (ConstantString) constant_pool.getConstant(index,
+ CONSTANT_String);
+ name_index = c5.getStringIndex();
+ String str = Class2HTML.toHTML(constant_pool.constantToString(index, tag));
+ file.println("" + str + "
\n");
+ break;
+ case CONSTANT_NameAndType:
+ ConstantNameAndType c6 = (ConstantNameAndType) constant_pool.getConstant(index,
+ CONSTANT_NameAndType);
+ name_index = c6.getNameIndex();
+ int signature_index = c6.getSignatureIndex();
+ file.println(""
+ + Class2HTML.toHTML(constant_pool.constantToString(index, tag))
+ + "
\n");
+ break;
+ default:
+ file
+ .println(""
+ + Class2HTML.toHTML(constant_pool.constantToString(index, tag))
+ + "\n");
+ } // switch
+ }
+
+
+ private final int getMethodNumber( String str ) {
+ for (int i = 0; i < methods.length; i++) {
+ String cmp = methods[i].getName() + methods[i].getSignature();
+ if (cmp.equals(str)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/InstructionFinder.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/InstructionFinder.java
index 0668ce66..f1f30864 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/InstructionFinder.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/InstructionFinder.java
@@ -1,473 +1,473 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.bcel5_2_0.Constants;
-import org.apache.bcel5_2_0.generic.ClassGenException;
-import org.apache.bcel5_2_0.generic.Instruction;
-import org.apache.bcel5_2_0.generic.InstructionHandle;
-import org.apache.bcel5_2_0.generic.InstructionList;
-
-/**
- * InstructionFinder is a tool to search for given instructions patterns, i.e.,
- * match sequences of instructions in an instruction list via regular
- * expressions. This can be used, e.g., in order to implement a peep hole
- * optimizer that looks for code patterns and replaces them with faster
- * equivalents.
- *
- *
- * This class internally uses the
- * Regexp package to search for regular expressions.
- *
- * A typical application would look like this:
- *
- *
- *
- *
- * InstructionFinder f = new InstructionFinder(il);
- * String pat = "IfInstruction ICONST_0 GOTO ICONST_1 NOP (IFEQ|IFNE)";
- *
- * for(Iterator i = f.search(pat, constraint); i.hasNext(); ) {
- * InstructionHandle[] match = (InstructionHandle[])i.next();
- * ...
- * il.delete(match[1], match[5]);
- * ...
- * }
- *
- *
- *
- *
- * @version $Id: InstructionFinder.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see Instruction
- * @see InstructionList
- */
-public class InstructionFinder {
-
- private static final int OFFSET = 32767; // char + OFFSET is
- // outside of
- // LATIN-1
- private static final int NO_OPCODES = 256; // Potential number,
- // some are not used
- private static final Map map = new HashMap(); // Map
- private InstructionList il;
- private String il_string; // instruction list
- // as string
- private InstructionHandle[] handles; // map instruction
-
-
- // list to array
- /**
- * @param il
- * instruction list to search for given patterns
- */
- public InstructionFinder(InstructionList il) {
- this.il = il;
- reread();
- }
-
-
- /**
- * Reread the instruction list, e.g., after you've altered the list upon a
- * match.
- */
- public final void reread() {
- int size = il.getLength();
- char[] buf = new char[size]; // Create a string with length equal to il
- // length
- handles = il.getInstructionHandles();
- // Map opcodes to characters
- for (int i = 0; i < size; i++) {
- buf[i] = makeChar(handles[i].getInstruction().getOpcode());
- }
- il_string = new String(buf);
- }
-
-
- /**
- * Map symbolic instruction names like "getfield" to a single character.
- *
- * @param pattern
- * instruction pattern in lower case
- * @return encoded string for a pattern such as "BranchInstruction".
- */
- private static final String mapName( String pattern ) {
- String result = (String) map.get(pattern);
- if (result != null) {
- return result;
- }
- for (short i = 0; i < NO_OPCODES; i++) {
- if (pattern.equals(Constants.OPCODE_NAMES[i])) {
- return "" + makeChar(i);
- }
- }
- throw new RuntimeException("Instruction unknown: " + pattern);
- }
-
-
- /**
- * Replace symbolic names of instructions with the appropiate character and
- * remove all white space from string. Meta characters such as +, * are
- * ignored.
- *
- * @param pattern
- * The pattern to compile
- * @return translated regular expression string
- */
- private static final String compilePattern( String pattern ) {
- //Bug: 38787 - Instructions are assumed to be english, to avoid odd Locale issues
- String lower = pattern.toLowerCase(Locale.ENGLISH);
- StringBuilder buf = new StringBuilder();
- int size = pattern.length();
- for (int i = 0; i < size; i++) {
- char ch = lower.charAt(i);
- if (Character.isLetterOrDigit(ch)) {
- StringBuilder name = new StringBuilder();
- while ((Character.isLetterOrDigit(ch) || ch == '_') && i < size) {
- name.append(ch);
- if (++i < size) {
- ch = lower.charAt(i);
- } else {
- break;
- }
- }
- i--;
- buf.append(mapName(name.toString()));
- } else if (!Character.isWhitespace(ch)) {
- buf.append(ch);
- }
- }
- return buf.toString();
- }
-
-
- /**
- * @return the matched piece of code as an array of instruction (handles)
- */
- private InstructionHandle[] getMatch( int matched_from, int match_length ) {
- InstructionHandle[] match = new InstructionHandle[match_length];
- System.arraycopy(handles, matched_from, match, 0, match_length);
- return match;
- }
-
-
- /**
- * Search for the given pattern in the instruction list. You can search for
- * any valid opcode via its symbolic name, e.g. "istore". You can also use a
- * super class or an interface name to match a whole set of instructions, e.g.
- * "BranchInstruction" or "LoadInstruction". "istore" is also an alias for all
- * "istore_x" instructions. Additional aliases are "if" for "ifxx", "if_icmp"
- * for "if_icmpxx", "if_acmp" for "if_acmpxx".
- *
- * Consecutive instruction names must be separated by white space which will
- * be removed during the compilation of the pattern.
- *
- * For the rest the usual pattern matching rules for regular expressions
- * apply.
- *
- * Example pattern:
- *
- *
- * search("BranchInstruction NOP ((IfInstruction|GOTO)+ ISTORE Instruction)*");
- *
- *
- *
- * If you alter the instruction list upon a match such that other matching
- * areas are affected, you should call reread() to update the finder and call
- * search() again, because the matches are cached.
- *
- * @param pattern
- * the instruction pattern to search for, where case is ignored
- * @param from
- * where to start the search in the instruction list
- * @param constraint
- * optional CodeConstraint to check the found code pattern for
- * user-defined constraints
- * @return iterator of matches where e.nextElement() returns an array of
- * instruction handles describing the matched area
- */
- public final Iterator search( String pattern, InstructionHandle from, CodeConstraint constraint ) {
- String search = compilePattern(pattern);
- int start = -1;
- for (int i = 0; i < handles.length; i++) {
- if (handles[i] == from) {
- start = i; // Where to start search from (index)
- break;
- }
- }
- if (start == -1) {
- throw new ClassGenException("Instruction handle " + from
- + " not found in instruction list.");
- }
- Pattern regex = Pattern.compile(search);
- List matches = new ArrayList();
- Matcher matcher = regex.matcher(il_string);
- while (start < il_string.length() && matcher.find(start)) {
- int startExpr = matcher.start();
- int endExpr = matcher.end();
- int lenExpr = (endExpr - startExpr) + 1;
- InstructionHandle[] match = getMatch(startExpr, lenExpr);
- if ((constraint == null) || constraint.checkCode(match)) {
- matches.add(match);
- }
- start = endExpr;
- }
- return matches.iterator();
- }
-
-
- /**
- * Start search beginning from the start of the given instruction list.
- *
- * @param pattern
- * the instruction pattern to search for, where case is ignored
- * @return iterator of matches where e.nextElement() returns an array of
- * instruction handles describing the matched area
- */
- public final Iterator search( String pattern ) {
- return search(pattern, il.getStart(), null);
- }
-
-
- /**
- * Start search beginning from `from'.
- *
- * @param pattern
- * the instruction pattern to search for, where case is ignored
- * @param from
- * where to start the search in the instruction list
- * @return iterator of matches where e.nextElement() returns an array of
- * instruction handles describing the matched area
- */
- public final Iterator search( String pattern, InstructionHandle from ) {
- return search(pattern, from, null);
- }
-
-
- /**
- * Start search beginning from the start of the given instruction list. Check
- * found matches with the constraint object.
- *
- * @param pattern
- * the instruction pattern to search for, case is ignored
- * @param constraint
- * constraints to be checked on matching code
- * @return instruction handle or `null' if the match failed
- */
- public final Iterator search( String pattern, CodeConstraint constraint ) {
- return search(pattern, il.getStart(), constraint);
- }
-
-
- /**
- * Convert opcode number to char.
- */
- private static final char makeChar( short opcode ) {
- return (char) (opcode + OFFSET);
- }
-
-
- /**
- * @return the inquired instruction list
- */
- public final InstructionList getInstructionList() {
- return il;
- }
-
- /**
- * Code patterns found may be checked using an additional user-defined
- * constraint object whether they really match the needed criterion. I.e.,
- * check constraints that can not expressed with regular expressions.
- *
- */
- public static interface CodeConstraint {
-
- /**
- * @param match
- * array of instructions matching the requested pattern
- * @return true if the matched area is really useful
- */
- public boolean checkCode( InstructionHandle[] match );
- }
-
- // Initialize pattern map
- static {
- map
- .put(
- "arithmeticinstruction",
- "(irem|lrem|iand|ior|ineg|isub|lneg|fneg|fmul|ldiv|fadd|lxor|frem|idiv|land|ixor|ishr|fsub|lshl|fdiv|iadd|lor|dmul|lsub|ishl|imul|lmul|lushr|dneg|iushr|lshr|ddiv|drem|dadd|ladd|dsub)");
- map.put("invokeinstruction", "(invokevirtual|invokeinterface|invokestatic|invokespecial)");
- map
- .put(
- "arrayinstruction",
- "(baload|aastore|saload|caload|fastore|lastore|iaload|castore|iastore|aaload|bastore|sastore|faload|laload|daload|dastore)");
- map.put("gotoinstruction", "(goto|goto_w)");
- map.put("conversioninstruction",
- "(d2l|l2d|i2s|d2i|l2i|i2b|l2f|d2f|f2i|i2d|i2l|f2d|i2c|f2l|i2f)");
- map.put("localvariableinstruction",
- "(fstore|iinc|lload|dstore|dload|iload|aload|astore|istore|fload|lstore)");
- map.put("loadinstruction", "(fload|dload|lload|iload|aload)");
- map.put("fieldinstruction", "(getfield|putstatic|getstatic|putfield)");
- map
- .put(
- "cpinstruction",
- "(ldc2_w|invokeinterface|multianewarray|putstatic|instanceof|getstatic|checkcast|getfield|invokespecial|ldc_w|invokestatic|invokevirtual|putfield|ldc|new|anewarray)");
- map.put("stackinstruction", "(dup2|swap|dup2_x2|pop|pop2|dup|dup2_x1|dup_x2|dup_x1)");
- map
- .put(
- "branchinstruction",
- "(ifle|if_acmpne|if_icmpeq|if_acmpeq|ifnonnull|goto_w|iflt|ifnull|if_icmpne|tableswitch|if_icmple|ifeq|if_icmplt|jsr_w|if_icmpgt|ifgt|jsr|goto|ifne|ifge|lookupswitch|if_icmpge)");
- map.put("returninstruction", "(lreturn|ireturn|freturn|dreturn|areturn|return)");
- map.put("storeinstruction", "(istore|fstore|dstore|astore|lstore)");
- map.put("select", "(tableswitch|lookupswitch)");
- map
- .put(
- "ifinstruction",
- "(ifeq|ifgt|if_icmpne|if_icmpeq|ifge|ifnull|ifne|if_icmple|if_icmpge|if_acmpeq|if_icmplt|if_acmpne|ifnonnull|iflt|if_icmpgt|ifle)");
- map.put("jsrinstruction", "(jsr|jsr_w)");
- map.put("variablelengthinstruction", "(tableswitch|jsr|goto|lookupswitch)");
- map.put("unconditionalbranch", "(goto|jsr|jsr_w|athrow|goto_w)");
- map.put("constantpushinstruction", "(dconst|bipush|sipush|fconst|iconst|lconst)");
- map
- .put(
- "typedinstruction",
- "(imul|lsub|aload|fload|lor|new|aaload|fcmpg|iand|iaload|lrem|idiv|d2l|isub|dcmpg|dastore|ret|f2d|f2i|drem|iinc|i2c|checkcast|frem|lreturn|astore|lushr|daload|dneg|fastore|istore|lshl|ldiv|lstore|areturn|ishr|ldc_w|invokeinterface|aastore|lxor|ishl|l2d|i2f|return|faload|sipush|iushr|caload|instanceof|invokespecial|putfield|fmul|ireturn|laload|d2f|lneg|ixor|i2l|fdiv|lastore|multianewarray|i2b|getstatic|i2d|putstatic|fcmpl|saload|ladd|irem|dload|jsr_w|dconst|dcmpl|fsub|freturn|ldc|aconst_null|castore|lmul|ldc2_w|dadd|iconst|f2l|ddiv|dstore|land|jsr|anewarray|dmul|bipush|dsub|sastore|d2i|i2s|lshr|iadd|l2i|lload|bastore|fstore|fneg|iload|fadd|baload|fconst|ior|ineg|dreturn|l2f|lconst|getfield|invokevirtual|invokestatic|iastore)");
- map.put("popinstruction", "(fstore|dstore|pop|pop2|astore|putstatic|istore|lstore)");
- map.put("allocationinstruction", "(multianewarray|new|anewarray|newarray)");
- map
- .put(
- "indexedinstruction",
- "(lload|lstore|fload|ldc2_w|invokeinterface|multianewarray|astore|dload|putstatic|instanceof|getstatic|checkcast|getfield|invokespecial|dstore|istore|iinc|ldc_w|ret|fstore|invokestatic|iload|putfield|invokevirtual|ldc|new|aload|anewarray)");
- map
- .put(
- "pushinstruction",
- "(dup|lload|dup2|bipush|fload|ldc2_w|sipush|lconst|fconst|dload|getstatic|ldc_w|aconst_null|dconst|iload|ldc|iconst|aload)");
- map
- .put(
- "stackproducer",
- "(imul|lsub|aload|fload|lor|new|aaload|fcmpg|iand|iaload|lrem|idiv|d2l|isub|dcmpg|dup|f2d|f2i|drem|i2c|checkcast|frem|lushr|daload|dneg|lshl|ldiv|ishr|ldc_w|invokeinterface|lxor|ishl|l2d|i2f|faload|sipush|iushr|caload|instanceof|invokespecial|fmul|laload|d2f|lneg|ixor|i2l|fdiv|getstatic|i2b|swap|i2d|dup2|fcmpl|saload|ladd|irem|dload|jsr_w|dconst|dcmpl|fsub|ldc|arraylength|aconst_null|tableswitch|lmul|ldc2_w|iconst|dadd|f2l|ddiv|land|jsr|anewarray|dmul|bipush|dsub|d2i|newarray|i2s|lshr|iadd|lload|l2i|fneg|iload|fadd|baload|fconst|lookupswitch|ior|ineg|lconst|l2f|getfield|invokevirtual|invokestatic)");
- map
- .put(
- "stackconsumer",
- "(imul|lsub|lor|iflt|fcmpg|if_icmpgt|iand|ifeq|if_icmplt|lrem|ifnonnull|idiv|d2l|isub|dcmpg|dastore|if_icmpeq|f2d|f2i|drem|i2c|checkcast|frem|lreturn|astore|lushr|pop2|monitorexit|dneg|fastore|istore|lshl|ldiv|lstore|areturn|if_icmpge|ishr|monitorenter|invokeinterface|aastore|lxor|ishl|l2d|i2f|return|iushr|instanceof|invokespecial|fmul|ireturn|d2f|lneg|ixor|pop|i2l|ifnull|fdiv|lastore|i2b|if_acmpeq|ifge|swap|i2d|putstatic|fcmpl|ladd|irem|dcmpl|fsub|freturn|ifgt|castore|lmul|dadd|f2l|ddiv|dstore|land|if_icmpne|if_acmpne|dmul|dsub|sastore|ifle|d2i|i2s|lshr|iadd|l2i|bastore|fstore|fneg|fadd|ior|ineg|ifne|dreturn|l2f|if_icmple|getfield|invokevirtual|invokestatic|iastore)");
- map
- .put(
- "exceptionthrower",
- "(irem|lrem|laload|putstatic|baload|dastore|areturn|getstatic|ldiv|anewarray|iastore|castore|idiv|saload|lastore|fastore|putfield|lreturn|caload|getfield|return|aastore|freturn|newarray|instanceof|multianewarray|athrow|faload|iaload|aaload|dreturn|monitorenter|checkcast|bastore|arraylength|new|invokevirtual|sastore|ldc_w|ireturn|invokespecial|monitorexit|invokeinterface|ldc|invokestatic|daload)");
- map
- .put(
- "loadclass",
- "(multianewarray|invokeinterface|instanceof|invokespecial|putfield|checkcast|putstatic|invokevirtual|new|getstatic|invokestatic|getfield|anewarray)");
- map
- .put(
- "instructiontargeter",
- "(ifle|if_acmpne|if_icmpeq|if_acmpeq|ifnonnull|goto_w|iflt|ifnull|if_icmpne|tableswitch|if_icmple|ifeq|if_icmplt|jsr_w|if_icmpgt|ifgt|jsr|goto|ifne|ifge|lookupswitch|if_icmpge)");
- // Some aliases
- map.put("if_icmp", "(if_icmpne|if_icmpeq|if_icmple|if_icmpge|if_icmplt|if_icmpgt)");
- map.put("if_acmp", "(if_acmpeq|if_acmpne)");
- map.put("if", "(ifeq|ifne|iflt|ifge|ifgt|ifle)");
- // Precompile some aliases first
- map.put("iconst", precompile(Constants.ICONST_0, Constants.ICONST_5, Constants.ICONST_M1));
- map.put("lconst", new String(new char[] {
- '(', makeChar(Constants.LCONST_0), '|', makeChar(Constants.LCONST_1), ')'
- }));
- map.put("dconst", new String(new char[] {
- '(', makeChar(Constants.DCONST_0), '|', makeChar(Constants.DCONST_1), ')'
- }));
- map.put("fconst", new String(new char[] {
- '(', makeChar(Constants.FCONST_0), '|', makeChar(Constants.FCONST_1), ')'
- }));
- map.put("iload", precompile(Constants.ILOAD_0, Constants.ILOAD_3, Constants.ILOAD));
- map.put("dload", precompile(Constants.DLOAD_0, Constants.DLOAD_3, Constants.DLOAD));
- map.put("fload", precompile(Constants.FLOAD_0, Constants.FLOAD_3, Constants.FLOAD));
- map.put("aload", precompile(Constants.ALOAD_0, Constants.ALOAD_3, Constants.ALOAD));
- map.put("istore", precompile(Constants.ISTORE_0, Constants.ISTORE_3, Constants.ISTORE));
- map.put("dstore", precompile(Constants.DSTORE_0, Constants.DSTORE_3, Constants.DSTORE));
- map.put("fstore", precompile(Constants.FSTORE_0, Constants.FSTORE_3, Constants.FSTORE));
- map.put("astore", precompile(Constants.ASTORE_0, Constants.ASTORE_3, Constants.ASTORE));
- // Compile strings
- for (Iterator i = map.keySet().iterator(); i.hasNext();) {
- String key = (String) i.next();
- String value = (String) map.get(key);
- char ch = value.charAt(1); // Omit already precompiled patterns
- if (ch < OFFSET) {
- map.put(key, compilePattern(value)); // precompile all patterns
- }
- }
- // Add instruction alias to match anything
- StringBuilder buf = new StringBuilder("(");
- for (short i = 0; i < NO_OPCODES; i++) {
- if (Constants.NO_OF_OPERANDS[i] != Constants.UNDEFINED) { // Not an
- // invalid
- // opcode
- buf.append(makeChar(i));
- if (i < NO_OPCODES - 1) {
- buf.append('|');
- }
- }
- }
- buf.append(')');
- map.put("instruction", buf.toString());
- }
-
-
- private static String precompile( short from, short to, short extra ) {
- StringBuilder buf = new StringBuilder("(");
- for (short i = from; i <= to; i++) {
- buf.append(makeChar(i));
- buf.append('|');
- }
- buf.append(makeChar(extra));
- buf.append(")");
- return buf.toString();
- }
-
-
- /*
- * Internal debugging routines.
- */
- private static final String pattern2string( String pattern ) {
- return pattern2string(pattern, true);
- }
-
-
- private static final String pattern2string( String pattern, boolean make_string ) {
- StringBuilder buf = new StringBuilder();
- for (int i = 0; i < pattern.length(); i++) {
- char ch = pattern.charAt(i);
- if (ch >= OFFSET) {
- if (make_string) {
- buf.append(Constants.OPCODE_NAMES[ch - OFFSET]);
- } else {
- buf.append((ch - OFFSET));
- }
- } else {
- buf.append(ch);
- }
- }
- return buf.toString();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.bcel5_2_0.Constants;
+import org.apache.bcel5_2_0.generic.ClassGenException;
+import org.apache.bcel5_2_0.generic.Instruction;
+import org.apache.bcel5_2_0.generic.InstructionHandle;
+import org.apache.bcel5_2_0.generic.InstructionList;
+
+/**
+ * InstructionFinder is a tool to search for given instructions patterns, i.e.,
+ * match sequences of instructions in an instruction list via regular
+ * expressions. This can be used, e.g., in order to implement a peep hole
+ * optimizer that looks for code patterns and replaces them with faster
+ * equivalents.
+ *
+ *
+ * This class internally uses the
+ * Regexp package to search for regular expressions.
+ *
+ * A typical application would look like this:
+ *
+ *
+ *
+ *
+ * InstructionFinder f = new InstructionFinder(il);
+ * String pat = "IfInstruction ICONST_0 GOTO ICONST_1 NOP (IFEQ|IFNE)";
+ *
+ * for(Iterator i = f.search(pat, constraint); i.hasNext(); ) {
+ * InstructionHandle[] match = (InstructionHandle[])i.next();
+ * ...
+ * il.delete(match[1], match[5]);
+ * ...
+ * }
+ *
+ *
+ *
+ *
+ * @version $Id: InstructionFinder.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see Instruction
+ * @see InstructionList
+ */
+public class InstructionFinder {
+
+ private static final int OFFSET = 32767; // char + OFFSET is
+ // outside of
+ // LATIN-1
+ private static final int NO_OPCODES = 256; // Potential number,
+ // some are not used
+ private static final Map map = new HashMap(); // Map
+ private InstructionList il;
+ private String il_string; // instruction list
+ // as string
+ private InstructionHandle[] handles; // map instruction
+
+
+ // list to array
+ /**
+ * @param il
+ * instruction list to search for given patterns
+ */
+ public InstructionFinder(InstructionList il) {
+ this.il = il;
+ reread();
+ }
+
+
+ /**
+ * Reread the instruction list, e.g., after you've altered the list upon a
+ * match.
+ */
+ public final void reread() {
+ int size = il.getLength();
+ char[] buf = new char[size]; // Create a string with length equal to il
+ // length
+ handles = il.getInstructionHandles();
+ // Map opcodes to characters
+ for (int i = 0; i < size; i++) {
+ buf[i] = makeChar(handles[i].getInstruction().getOpcode());
+ }
+ il_string = new String(buf);
+ }
+
+
+ /**
+ * Map symbolic instruction names like "getfield" to a single character.
+ *
+ * @param pattern
+ * instruction pattern in lower case
+ * @return encoded string for a pattern such as "BranchInstruction".
+ */
+ private static final String mapName( String pattern ) {
+ String result = (String) map.get(pattern);
+ if (result != null) {
+ return result;
+ }
+ for (short i = 0; i < NO_OPCODES; i++) {
+ if (pattern.equals(Constants.OPCODE_NAMES[i])) {
+ return "" + makeChar(i);
+ }
+ }
+ throw new RuntimeException("Instruction unknown: " + pattern);
+ }
+
+
+ /**
+ * Replace symbolic names of instructions with the appropiate character and
+ * remove all white space from string. Meta characters such as +, * are
+ * ignored.
+ *
+ * @param pattern
+ * The pattern to compile
+ * @return translated regular expression string
+ */
+ private static final String compilePattern( String pattern ) {
+ //Bug: 38787 - Instructions are assumed to be english, to avoid odd Locale issues
+ String lower = pattern.toLowerCase(Locale.ENGLISH);
+ StringBuilder buf = new StringBuilder();
+ int size = pattern.length();
+ for (int i = 0; i < size; i++) {
+ char ch = lower.charAt(i);
+ if (Character.isLetterOrDigit(ch)) {
+ StringBuilder name = new StringBuilder();
+ while ((Character.isLetterOrDigit(ch) || ch == '_') && i < size) {
+ name.append(ch);
+ if (++i < size) {
+ ch = lower.charAt(i);
+ } else {
+ break;
+ }
+ }
+ i--;
+ buf.append(mapName(name.toString()));
+ } else if (!Character.isWhitespace(ch)) {
+ buf.append(ch);
+ }
+ }
+ return buf.toString();
+ }
+
+
+ /**
+ * @return the matched piece of code as an array of instruction (handles)
+ */
+ private InstructionHandle[] getMatch( int matched_from, int match_length ) {
+ InstructionHandle[] match = new InstructionHandle[match_length];
+ System.arraycopy(handles, matched_from, match, 0, match_length);
+ return match;
+ }
+
+
+ /**
+ * Search for the given pattern in the instruction list. You can search for
+ * any valid opcode via its symbolic name, e.g. "istore". You can also use a
+ * super class or an interface name to match a whole set of instructions, e.g.
+ * "BranchInstruction" or "LoadInstruction". "istore" is also an alias for all
+ * "istore_x" instructions. Additional aliases are "if" for "ifxx", "if_icmp"
+ * for "if_icmpxx", "if_acmp" for "if_acmpxx".
+ *
+ * Consecutive instruction names must be separated by white space which will
+ * be removed during the compilation of the pattern.
+ *
+ * For the rest the usual pattern matching rules for regular expressions
+ * apply.
+ *
+ * Example pattern:
+ *
+ *
+ * search("BranchInstruction NOP ((IfInstruction|GOTO)+ ISTORE Instruction)*");
+ *
+ *
+ *
+ * If you alter the instruction list upon a match such that other matching
+ * areas are affected, you should call reread() to update the finder and call
+ * search() again, because the matches are cached.
+ *
+ * @param pattern
+ * the instruction pattern to search for, where case is ignored
+ * @param from
+ * where to start the search in the instruction list
+ * @param constraint
+ * optional CodeConstraint to check the found code pattern for
+ * user-defined constraints
+ * @return iterator of matches where e.nextElement() returns an array of
+ * instruction handles describing the matched area
+ */
+ public final Iterator search( String pattern, InstructionHandle from, CodeConstraint constraint ) {
+ String search = compilePattern(pattern);
+ int start = -1;
+ for (int i = 0; i < handles.length; i++) {
+ if (handles[i] == from) {
+ start = i; // Where to start search from (index)
+ break;
+ }
+ }
+ if (start == -1) {
+ throw new ClassGenException("Instruction handle " + from
+ + " not found in instruction list.");
+ }
+ Pattern regex = Pattern.compile(search);
+ List matches = new ArrayList();
+ Matcher matcher = regex.matcher(il_string);
+ while (start < il_string.length() && matcher.find(start)) {
+ int startExpr = matcher.start();
+ int endExpr = matcher.end();
+ int lenExpr = (endExpr - startExpr) + 1;
+ InstructionHandle[] match = getMatch(startExpr, lenExpr);
+ if ((constraint == null) || constraint.checkCode(match)) {
+ matches.add(match);
+ }
+ start = endExpr;
+ }
+ return matches.iterator();
+ }
+
+
+ /**
+ * Start search beginning from the start of the given instruction list.
+ *
+ * @param pattern
+ * the instruction pattern to search for, where case is ignored
+ * @return iterator of matches where e.nextElement() returns an array of
+ * instruction handles describing the matched area
+ */
+ public final Iterator search( String pattern ) {
+ return search(pattern, il.getStart(), null);
+ }
+
+
+ /**
+ * Start search beginning from `from'.
+ *
+ * @param pattern
+ * the instruction pattern to search for, where case is ignored
+ * @param from
+ * where to start the search in the instruction list
+ * @return iterator of matches where e.nextElement() returns an array of
+ * instruction handles describing the matched area
+ */
+ public final Iterator search( String pattern, InstructionHandle from ) {
+ return search(pattern, from, null);
+ }
+
+
+ /**
+ * Start search beginning from the start of the given instruction list. Check
+ * found matches with the constraint object.
+ *
+ * @param pattern
+ * the instruction pattern to search for, case is ignored
+ * @param constraint
+ * constraints to be checked on matching code
+ * @return instruction handle or `null' if the match failed
+ */
+ public final Iterator search( String pattern, CodeConstraint constraint ) {
+ return search(pattern, il.getStart(), constraint);
+ }
+
+
+ /**
+ * Convert opcode number to char.
+ */
+ private static final char makeChar( short opcode ) {
+ return (char) (opcode + OFFSET);
+ }
+
+
+ /**
+ * @return the inquired instruction list
+ */
+ public final InstructionList getInstructionList() {
+ return il;
+ }
+
+ /**
+ * Code patterns found may be checked using an additional user-defined
+ * constraint object whether they really match the needed criterion. I.e.,
+ * check constraints that can not expressed with regular expressions.
+ *
+ */
+ public static interface CodeConstraint {
+
+ /**
+ * @param match
+ * array of instructions matching the requested pattern
+ * @return true if the matched area is really useful
+ */
+ public boolean checkCode( InstructionHandle[] match );
+ }
+
+ // Initialize pattern map
+ static {
+ map
+ .put(
+ "arithmeticinstruction",
+ "(irem|lrem|iand|ior|ineg|isub|lneg|fneg|fmul|ldiv|fadd|lxor|frem|idiv|land|ixor|ishr|fsub|lshl|fdiv|iadd|lor|dmul|lsub|ishl|imul|lmul|lushr|dneg|iushr|lshr|ddiv|drem|dadd|ladd|dsub)");
+ map.put("invokeinstruction", "(invokevirtual|invokeinterface|invokestatic|invokespecial)");
+ map
+ .put(
+ "arrayinstruction",
+ "(baload|aastore|saload|caload|fastore|lastore|iaload|castore|iastore|aaload|bastore|sastore|faload|laload|daload|dastore)");
+ map.put("gotoinstruction", "(goto|goto_w)");
+ map.put("conversioninstruction",
+ "(d2l|l2d|i2s|d2i|l2i|i2b|l2f|d2f|f2i|i2d|i2l|f2d|i2c|f2l|i2f)");
+ map.put("localvariableinstruction",
+ "(fstore|iinc|lload|dstore|dload|iload|aload|astore|istore|fload|lstore)");
+ map.put("loadinstruction", "(fload|dload|lload|iload|aload)");
+ map.put("fieldinstruction", "(getfield|putstatic|getstatic|putfield)");
+ map
+ .put(
+ "cpinstruction",
+ "(ldc2_w|invokeinterface|multianewarray|putstatic|instanceof|getstatic|checkcast|getfield|invokespecial|ldc_w|invokestatic|invokevirtual|putfield|ldc|new|anewarray)");
+ map.put("stackinstruction", "(dup2|swap|dup2_x2|pop|pop2|dup|dup2_x1|dup_x2|dup_x1)");
+ map
+ .put(
+ "branchinstruction",
+ "(ifle|if_acmpne|if_icmpeq|if_acmpeq|ifnonnull|goto_w|iflt|ifnull|if_icmpne|tableswitch|if_icmple|ifeq|if_icmplt|jsr_w|if_icmpgt|ifgt|jsr|goto|ifne|ifge|lookupswitch|if_icmpge)");
+ map.put("returninstruction", "(lreturn|ireturn|freturn|dreturn|areturn|return)");
+ map.put("storeinstruction", "(istore|fstore|dstore|astore|lstore)");
+ map.put("select", "(tableswitch|lookupswitch)");
+ map
+ .put(
+ "ifinstruction",
+ "(ifeq|ifgt|if_icmpne|if_icmpeq|ifge|ifnull|ifne|if_icmple|if_icmpge|if_acmpeq|if_icmplt|if_acmpne|ifnonnull|iflt|if_icmpgt|ifle)");
+ map.put("jsrinstruction", "(jsr|jsr_w)");
+ map.put("variablelengthinstruction", "(tableswitch|jsr|goto|lookupswitch)");
+ map.put("unconditionalbranch", "(goto|jsr|jsr_w|athrow|goto_w)");
+ map.put("constantpushinstruction", "(dconst|bipush|sipush|fconst|iconst|lconst)");
+ map
+ .put(
+ "typedinstruction",
+ "(imul|lsub|aload|fload|lor|new|aaload|fcmpg|iand|iaload|lrem|idiv|d2l|isub|dcmpg|dastore|ret|f2d|f2i|drem|iinc|i2c|checkcast|frem|lreturn|astore|lushr|daload|dneg|fastore|istore|lshl|ldiv|lstore|areturn|ishr|ldc_w|invokeinterface|aastore|lxor|ishl|l2d|i2f|return|faload|sipush|iushr|caload|instanceof|invokespecial|putfield|fmul|ireturn|laload|d2f|lneg|ixor|i2l|fdiv|lastore|multianewarray|i2b|getstatic|i2d|putstatic|fcmpl|saload|ladd|irem|dload|jsr_w|dconst|dcmpl|fsub|freturn|ldc|aconst_null|castore|lmul|ldc2_w|dadd|iconst|f2l|ddiv|dstore|land|jsr|anewarray|dmul|bipush|dsub|sastore|d2i|i2s|lshr|iadd|l2i|lload|bastore|fstore|fneg|iload|fadd|baload|fconst|ior|ineg|dreturn|l2f|lconst|getfield|invokevirtual|invokestatic|iastore)");
+ map.put("popinstruction", "(fstore|dstore|pop|pop2|astore|putstatic|istore|lstore)");
+ map.put("allocationinstruction", "(multianewarray|new|anewarray|newarray)");
+ map
+ .put(
+ "indexedinstruction",
+ "(lload|lstore|fload|ldc2_w|invokeinterface|multianewarray|astore|dload|putstatic|instanceof|getstatic|checkcast|getfield|invokespecial|dstore|istore|iinc|ldc_w|ret|fstore|invokestatic|iload|putfield|invokevirtual|ldc|new|aload|anewarray)");
+ map
+ .put(
+ "pushinstruction",
+ "(dup|lload|dup2|bipush|fload|ldc2_w|sipush|lconst|fconst|dload|getstatic|ldc_w|aconst_null|dconst|iload|ldc|iconst|aload)");
+ map
+ .put(
+ "stackproducer",
+ "(imul|lsub|aload|fload|lor|new|aaload|fcmpg|iand|iaload|lrem|idiv|d2l|isub|dcmpg|dup|f2d|f2i|drem|i2c|checkcast|frem|lushr|daload|dneg|lshl|ldiv|ishr|ldc_w|invokeinterface|lxor|ishl|l2d|i2f|faload|sipush|iushr|caload|instanceof|invokespecial|fmul|laload|d2f|lneg|ixor|i2l|fdiv|getstatic|i2b|swap|i2d|dup2|fcmpl|saload|ladd|irem|dload|jsr_w|dconst|dcmpl|fsub|ldc|arraylength|aconst_null|tableswitch|lmul|ldc2_w|iconst|dadd|f2l|ddiv|land|jsr|anewarray|dmul|bipush|dsub|d2i|newarray|i2s|lshr|iadd|lload|l2i|fneg|iload|fadd|baload|fconst|lookupswitch|ior|ineg|lconst|l2f|getfield|invokevirtual|invokestatic)");
+ map
+ .put(
+ "stackconsumer",
+ "(imul|lsub|lor|iflt|fcmpg|if_icmpgt|iand|ifeq|if_icmplt|lrem|ifnonnull|idiv|d2l|isub|dcmpg|dastore|if_icmpeq|f2d|f2i|drem|i2c|checkcast|frem|lreturn|astore|lushr|pop2|monitorexit|dneg|fastore|istore|lshl|ldiv|lstore|areturn|if_icmpge|ishr|monitorenter|invokeinterface|aastore|lxor|ishl|l2d|i2f|return|iushr|instanceof|invokespecial|fmul|ireturn|d2f|lneg|ixor|pop|i2l|ifnull|fdiv|lastore|i2b|if_acmpeq|ifge|swap|i2d|putstatic|fcmpl|ladd|irem|dcmpl|fsub|freturn|ifgt|castore|lmul|dadd|f2l|ddiv|dstore|land|if_icmpne|if_acmpne|dmul|dsub|sastore|ifle|d2i|i2s|lshr|iadd|l2i|bastore|fstore|fneg|fadd|ior|ineg|ifne|dreturn|l2f|if_icmple|getfield|invokevirtual|invokestatic|iastore)");
+ map
+ .put(
+ "exceptionthrower",
+ "(irem|lrem|laload|putstatic|baload|dastore|areturn|getstatic|ldiv|anewarray|iastore|castore|idiv|saload|lastore|fastore|putfield|lreturn|caload|getfield|return|aastore|freturn|newarray|instanceof|multianewarray|athrow|faload|iaload|aaload|dreturn|monitorenter|checkcast|bastore|arraylength|new|invokevirtual|sastore|ldc_w|ireturn|invokespecial|monitorexit|invokeinterface|ldc|invokestatic|daload)");
+ map
+ .put(
+ "loadclass",
+ "(multianewarray|invokeinterface|instanceof|invokespecial|putfield|checkcast|putstatic|invokevirtual|new|getstatic|invokestatic|getfield|anewarray)");
+ map
+ .put(
+ "instructiontargeter",
+ "(ifle|if_acmpne|if_icmpeq|if_acmpeq|ifnonnull|goto_w|iflt|ifnull|if_icmpne|tableswitch|if_icmple|ifeq|if_icmplt|jsr_w|if_icmpgt|ifgt|jsr|goto|ifne|ifge|lookupswitch|if_icmpge)");
+ // Some aliases
+ map.put("if_icmp", "(if_icmpne|if_icmpeq|if_icmple|if_icmpge|if_icmplt|if_icmpgt)");
+ map.put("if_acmp", "(if_acmpeq|if_acmpne)");
+ map.put("if", "(ifeq|ifne|iflt|ifge|ifgt|ifle)");
+ // Precompile some aliases first
+ map.put("iconst", precompile(Constants.ICONST_0, Constants.ICONST_5, Constants.ICONST_M1));
+ map.put("lconst", new String(new char[] {
+ '(', makeChar(Constants.LCONST_0), '|', makeChar(Constants.LCONST_1), ')'
+ }));
+ map.put("dconst", new String(new char[] {
+ '(', makeChar(Constants.DCONST_0), '|', makeChar(Constants.DCONST_1), ')'
+ }));
+ map.put("fconst", new String(new char[] {
+ '(', makeChar(Constants.FCONST_0), '|', makeChar(Constants.FCONST_1), ')'
+ }));
+ map.put("iload", precompile(Constants.ILOAD_0, Constants.ILOAD_3, Constants.ILOAD));
+ map.put("dload", precompile(Constants.DLOAD_0, Constants.DLOAD_3, Constants.DLOAD));
+ map.put("fload", precompile(Constants.FLOAD_0, Constants.FLOAD_3, Constants.FLOAD));
+ map.put("aload", precompile(Constants.ALOAD_0, Constants.ALOAD_3, Constants.ALOAD));
+ map.put("istore", precompile(Constants.ISTORE_0, Constants.ISTORE_3, Constants.ISTORE));
+ map.put("dstore", precompile(Constants.DSTORE_0, Constants.DSTORE_3, Constants.DSTORE));
+ map.put("fstore", precompile(Constants.FSTORE_0, Constants.FSTORE_3, Constants.FSTORE));
+ map.put("astore", precompile(Constants.ASTORE_0, Constants.ASTORE_3, Constants.ASTORE));
+ // Compile strings
+ for (Iterator i = map.keySet().iterator(); i.hasNext();) {
+ String key = (String) i.next();
+ String value = (String) map.get(key);
+ char ch = value.charAt(1); // Omit already precompiled patterns
+ if (ch < OFFSET) {
+ map.put(key, compilePattern(value)); // precompile all patterns
+ }
+ }
+ // Add instruction alias to match anything
+ StringBuilder buf = new StringBuilder("(");
+ for (short i = 0; i < NO_OPCODES; i++) {
+ if (Constants.NO_OF_OPERANDS[i] != Constants.UNDEFINED) { // Not an
+ // invalid
+ // opcode
+ buf.append(makeChar(i));
+ if (i < NO_OPCODES - 1) {
+ buf.append('|');
+ }
+ }
+ }
+ buf.append(')');
+ map.put("instruction", buf.toString());
+ }
+
+
+ private static String precompile( short from, short to, short extra ) {
+ StringBuilder buf = new StringBuilder("(");
+ for (short i = from; i <= to; i++) {
+ buf.append(makeChar(i));
+ buf.append('|');
+ }
+ buf.append(makeChar(extra));
+ buf.append(")");
+ return buf.toString();
+ }
+
+
+ /*
+ * Internal debugging routines.
+ */
+ private static final String pattern2string( String pattern ) {
+ return pattern2string(pattern, true);
+ }
+
+
+ private static final String pattern2string( String pattern, boolean make_string ) {
+ StringBuilder buf = new StringBuilder();
+ for (int i = 0; i < pattern.length(); i++) {
+ char ch = pattern.charAt(i);
+ if (ch >= OFFSET) {
+ if (make_string) {
+ buf.append(Constants.OPCODE_NAMES[ch - OFFSET]);
+ } else {
+ buf.append((ch - OFFSET));
+ }
+ } else {
+ buf.append(ch);
+ }
+ }
+ return buf.toString();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/JavaWrapper.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/JavaWrapper.java
index 4e44aae9..7dddd2ac 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/JavaWrapper.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/JavaWrapper.java
@@ -1,117 +1,117 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-/**
- * Java interpreter replacement, i.e., wrapper that uses its own ClassLoader
- * to modify/generate classes as they're requested. You can take this as a template
- * for your own applications.
- * Call this wrapper with
- *
java org.apache.bcel.util.JavaWrapper <real.class.name> [arguments]
- *
- * To use your own class loader you can set the "bcel.classloader" system property
- * which defaults to "org.apache.bcel.util.ClassLoader", e.g., with
- *
java org.apache.bcel.util.JavaWrapper -Dbcel.classloader=foo.MyLoader <real.class.name> [arguments]
- *
- *
- * @version $Id: JavaWrapper.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @see ClassLoader
- */
-public class JavaWrapper {
-
- private java.lang.ClassLoader loader;
-
-
- private static java.lang.ClassLoader getClassLoader() {
- String s = System.getProperty("bcel.classloader");
- if ((s == null) || "".equals(s)) {
- s = "org.apache.bcel.util.ClassLoader";
- }
- try {
- return (java.lang.ClassLoader) Class.forName(s).newInstance();
- } catch (Exception e) {
- throw new RuntimeException(e.toString());
- }
- }
-
-
- public JavaWrapper(java.lang.ClassLoader loader) {
- this.loader = loader;
- }
-
-
- public JavaWrapper() {
- this(getClassLoader());
- }
-
-
- /** Runs the main method of the given class with the arguments passed in argv
- *
- * @param class_name the fully qualified class name
- * @param argv the arguments just as you would pass them directly
- */
- public void runMain( String class_name, String[] argv ) throws ClassNotFoundException {
- Class cl = loader.loadClass(class_name);
- Method method = null;
- try {
- method = cl.getMethod("main", new Class[] {
- argv.getClass()
- });
- /* Method main is sane ?
- */
- int m = method.getModifiers();
- Class r = method.getReturnType();
- if (!(Modifier.isPublic(m) && Modifier.isStatic(m)) || Modifier.isAbstract(m)
- || (r != Void.TYPE)) {
- throw new NoSuchMethodException();
- }
- } catch (NoSuchMethodException no) {
- System.out.println("In class " + class_name
- + ": public static void main(String[] argv) is not defined");
- return;
- }
- try {
- method.invoke(null, new Object[] {
- argv
- });
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
-
- /** Default main method used as wrapper, expects the fully qualified class name
- * of the real class as the first argument.
- */
- public static void main( String[] argv ) throws Exception {
- /* Expects class name as first argument, other arguments are by-passed.
- */
- if (argv.length == 0) {
- System.out.println("Missing class name.");
- return;
- }
- String class_name = argv[0];
- String[] new_argv = new String[argv.length - 1];
- System.arraycopy(argv, 1, new_argv, 0, new_argv.length);
- JavaWrapper wrapper = new JavaWrapper();
- wrapper.runMain(class_name, new_argv);
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+ * Java interpreter replacement, i.e., wrapper that uses its own ClassLoader
+ * to modify/generate classes as they're requested. You can take this as a template
+ * for your own applications.
+ * Call this wrapper with
+ * java org.apache.bcel.util.JavaWrapper <real.class.name> [arguments]
+ *
+ * To use your own class loader you can set the "bcel.classloader" system property
+ * which defaults to "org.apache.bcel.util.ClassLoader", e.g., with
+ *
java org.apache.bcel.util.JavaWrapper -Dbcel.classloader=foo.MyLoader <real.class.name> [arguments]
+ *
+ *
+ * @version $Id: JavaWrapper.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @see ClassLoader
+ */
+public class JavaWrapper {
+
+ private java.lang.ClassLoader loader;
+
+
+ private static java.lang.ClassLoader getClassLoader() {
+ String s = System.getProperty("bcel.classloader");
+ if ((s == null) || "".equals(s)) {
+ s = "org.apache.bcel.util.ClassLoader";
+ }
+ try {
+ return (java.lang.ClassLoader) Class.forName(s).newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException(e.toString());
+ }
+ }
+
+
+ public JavaWrapper(java.lang.ClassLoader loader) {
+ this.loader = loader;
+ }
+
+
+ public JavaWrapper() {
+ this(getClassLoader());
+ }
+
+
+ /** Runs the main method of the given class with the arguments passed in argv
+ *
+ * @param class_name the fully qualified class name
+ * @param argv the arguments just as you would pass them directly
+ */
+ public void runMain( String class_name, String[] argv ) throws ClassNotFoundException {
+ Class cl = loader.loadClass(class_name);
+ Method method = null;
+ try {
+ method = cl.getMethod("main", new Class[] {
+ argv.getClass()
+ });
+ /* Method main is sane ?
+ */
+ int m = method.getModifiers();
+ Class r = method.getReturnType();
+ if (!(Modifier.isPublic(m) && Modifier.isStatic(m)) || Modifier.isAbstract(m)
+ || (r != Void.TYPE)) {
+ throw new NoSuchMethodException();
+ }
+ } catch (NoSuchMethodException no) {
+ System.out.println("In class " + class_name
+ + ": public static void main(String[] argv) is not defined");
+ return;
+ }
+ try {
+ method.invoke(null, new Object[] {
+ argv
+ });
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+
+ /** Default main method used as wrapper, expects the fully qualified class name
+ * of the real class as the first argument.
+ */
+ public static void main( String[] argv ) throws Exception {
+ /* Expects class name as first argument, other arguments are by-passed.
+ */
+ if (argv.length == 0) {
+ System.out.println("Missing class name.");
+ return;
+ }
+ String class_name = argv[0];
+ String[] new_argv = new String[argv.length - 1];
+ System.arraycopy(argv, 1, new_argv, 0, new_argv.length);
+ JavaWrapper wrapper = new JavaWrapper();
+ wrapper.runMain(class_name, new_argv);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/MethodHTML.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/MethodHTML.java
index 79031659..4e597cba 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/MethodHTML.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/MethodHTML.java
@@ -1,157 +1,157 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import org.apache.bcel5_2_0.classfile.Attribute;
-import org.apache.bcel5_2_0.classfile.Code;
-import org.apache.bcel5_2_0.classfile.ConstantValue;
-import org.apache.bcel5_2_0.classfile.ExceptionTable;
-import org.apache.bcel5_2_0.classfile.Field;
-import org.apache.bcel5_2_0.classfile.Method;
-import org.apache.bcel5_2_0.classfile.Utility;
-
-/**
- * Convert methods and fields into HTML file.
- *
- * @version $Id: MethodHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- *
- */
-final class MethodHTML implements org.apache.bcel5_2_0.Constants {
-
- private String class_name; // name of current class
- private PrintWriter file; // file to write to
- private ConstantHTML constant_html;
- private AttributeHTML attribute_html;
-
-
- MethodHTML(String dir, String class_name, Method[] methods, Field[] fields,
- ConstantHTML constant_html, AttributeHTML attribute_html) throws IOException {
- this.class_name = class_name;
- this.attribute_html = attribute_html;
- this.constant_html = constant_html;
- file = new PrintWriter(new FileOutputStream(dir + class_name + "_methods.html"));
- file.println("");
- file.println("Access flags | Type | "
- + "Field name |
");
- for (int i = 0; i < fields.length; i++) {
- writeField(fields[i]);
- }
- file.println("
");
- file.println("Access flags | "
- + "Return type | Method name | "
- + "Arguments |
");
- for (int i = 0; i < methods.length; i++) {
- writeMethod(methods[i], i);
- }
- file.println("
");
- file.close();
- }
-
-
- /**
- * Print field of class.
- *
- * @param field field to print
- * @exception java.io.IOException
- */
- private void writeField( Field field ) throws IOException {
- String type = Utility.signatureToString(field.getSignature());
- String name = field.getName();
- String access = Utility.accessToString(field.getAccessFlags());
- Attribute[] attributes;
- access = Utility.replace(access, " ", " ");
- file.print("" + access + " | \n"
- + Class2HTML.referenceType(type) + " | " + name
- + " | ");
- attributes = field.getAttributes();
- // Write them to the Attributes.html file with anchor "[]"
- for (int i = 0; i < attributes.length; i++) {
- attribute_html.writeAttribute(attributes[i], name + "@" + i);
- }
- for (int i = 0; i < attributes.length; i++) {
- if (attributes[i].getTag() == ATTR_CONSTANT_VALUE) { // Default value
- String str = ((ConstantValue) attributes[i]).toString();
- // Reference attribute in _attributes.html
- file.print("= " + str + " | \n");
- break;
- }
- }
- file.println("
");
- }
-
-
- private final void writeMethod( Method method, int method_number ) throws IOException {
- // Get raw signature
- String signature = method.getSignature();
- // Get array of strings containing the argument types
- String[] args = Utility.methodSignatureArgumentTypes(signature, false);
- // Get return type string
- String type = Utility.methodSignatureReturnType(signature, false);
- // Get method name
- String name = method.getName(), html_name;
- // Get method's access flags
- String access = Utility.accessToString(method.getAccessFlags());
- // Get the method's attributes, the Code Attribute in particular
- Attribute[] attributes = method.getAttributes();
- /* HTML doesn't like names like and spaces are places to break
- * lines. Both we don't want...
- */
- access = Utility.replace(access, " ", " ");
- html_name = Class2HTML.toHTML(name);
- file.print("" + access + " | ");
- file.print("" + Class2HTML.referenceType(type) + " | " + "" + html_name
- + " | \n(");
- for (int i = 0; i < args.length; i++) {
- file.print(Class2HTML.referenceType(args[i]));
- if (i < args.length - 1) {
- file.print(", ");
- }
- }
- file.print(") |
");
- // Check for thrown exceptions
- for (int i = 0; i < attributes.length; i++) {
- attribute_html.writeAttribute(attributes[i], "method" + method_number + "@" + i,
- method_number);
- byte tag = attributes[i].getTag();
- if (tag == ATTR_EXCEPTIONS) {
- file.print(" | throws | ");
- int[] exceptions = ((ExceptionTable) attributes[i]).getExceptionIndexTable();
- for (int j = 0; j < exceptions.length; j++) {
- file.print(constant_html.referenceConstant(exceptions[j]));
- if (j < exceptions.length - 1) {
- file.print(", ");
- }
- }
- file.println(" |
");
- } else if (tag == ATTR_CODE) {
- Attribute[] c_a = ((Code) attributes[i]).getAttributes();
- for (int j = 0; j < c_a.length; j++) {
- attribute_html.writeAttribute(c_a[j], "method" + method_number + "@" + i + "@"
- + j, method_number);
- }
- }
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import org.apache.bcel5_2_0.classfile.Attribute;
+import org.apache.bcel5_2_0.classfile.Code;
+import org.apache.bcel5_2_0.classfile.ConstantValue;
+import org.apache.bcel5_2_0.classfile.ExceptionTable;
+import org.apache.bcel5_2_0.classfile.Field;
+import org.apache.bcel5_2_0.classfile.Method;
+import org.apache.bcel5_2_0.classfile.Utility;
+
+/**
+ * Convert methods and fields into HTML file.
+ *
+ * @version $Id: MethodHTML.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ *
+ */
+final class MethodHTML implements org.apache.bcel5_2_0.Constants {
+
+ private String class_name; // name of current class
+ private PrintWriter file; // file to write to
+ private ConstantHTML constant_html;
+ private AttributeHTML attribute_html;
+
+
+ MethodHTML(String dir, String class_name, Method[] methods, Field[] fields,
+ ConstantHTML constant_html, AttributeHTML attribute_html) throws IOException {
+ this.class_name = class_name;
+ this.attribute_html = attribute_html;
+ this.constant_html = constant_html;
+ file = new PrintWriter(new FileOutputStream(dir + class_name + "_methods.html"));
+ file.println("");
+ file.println("Access flags | Type | "
+ + "Field name |
");
+ for (int i = 0; i < fields.length; i++) {
+ writeField(fields[i]);
+ }
+ file.println("
");
+ file.println("Access flags | "
+ + "Return type | Method name | "
+ + "Arguments |
");
+ for (int i = 0; i < methods.length; i++) {
+ writeMethod(methods[i], i);
+ }
+ file.println("
");
+ file.close();
+ }
+
+
+ /**
+ * Print field of class.
+ *
+ * @param field field to print
+ * @exception java.io.IOException
+ */
+ private void writeField( Field field ) throws IOException {
+ String type = Utility.signatureToString(field.getSignature());
+ String name = field.getName();
+ String access = Utility.accessToString(field.getAccessFlags());
+ Attribute[] attributes;
+ access = Utility.replace(access, " ", " ");
+ file.print("" + access + " | \n"
+ + Class2HTML.referenceType(type) + " | " + name
+ + " | ");
+ attributes = field.getAttributes();
+ // Write them to the Attributes.html file with anchor "[]"
+ for (int i = 0; i < attributes.length; i++) {
+ attribute_html.writeAttribute(attributes[i], name + "@" + i);
+ }
+ for (int i = 0; i < attributes.length; i++) {
+ if (attributes[i].getTag() == ATTR_CONSTANT_VALUE) { // Default value
+ String str = ((ConstantValue) attributes[i]).toString();
+ // Reference attribute in _attributes.html
+ file.print("= " + str + " | \n");
+ break;
+ }
+ }
+ file.println("
");
+ }
+
+
+ private final void writeMethod( Method method, int method_number ) throws IOException {
+ // Get raw signature
+ String signature = method.getSignature();
+ // Get array of strings containing the argument types
+ String[] args = Utility.methodSignatureArgumentTypes(signature, false);
+ // Get return type string
+ String type = Utility.methodSignatureReturnType(signature, false);
+ // Get method name
+ String name = method.getName(), html_name;
+ // Get method's access flags
+ String access = Utility.accessToString(method.getAccessFlags());
+ // Get the method's attributes, the Code Attribute in particular
+ Attribute[] attributes = method.getAttributes();
+ /* HTML doesn't like names like and spaces are places to break
+ * lines. Both we don't want...
+ */
+ access = Utility.replace(access, " ", " ");
+ html_name = Class2HTML.toHTML(name);
+ file.print("" + access + " | ");
+ file.print("" + Class2HTML.referenceType(type) + " | " + "" + html_name
+ + " | \n(");
+ for (int i = 0; i < args.length; i++) {
+ file.print(Class2HTML.referenceType(args[i]));
+ if (i < args.length - 1) {
+ file.print(", ");
+ }
+ }
+ file.print(") |
");
+ // Check for thrown exceptions
+ for (int i = 0; i < attributes.length; i++) {
+ attribute_html.writeAttribute(attributes[i], "method" + method_number + "@" + i,
+ method_number);
+ byte tag = attributes[i].getTag();
+ if (tag == ATTR_EXCEPTIONS) {
+ file.print(" | throws | ");
+ int[] exceptions = ((ExceptionTable) attributes[i]).getExceptionIndexTable();
+ for (int j = 0; j < exceptions.length; j++) {
+ file.print(constant_html.referenceConstant(exceptions[j]));
+ if (j < exceptions.length - 1) {
+ file.print(", ");
+ }
+ }
+ file.println(" |
");
+ } else if (tag == ATTR_CODE) {
+ Attribute[] c_a = ((Code) attributes[i]).getAttributes();
+ for (int j = 0; j < c_a.length; j++) {
+ attribute_html.writeAttribute(c_a[j], "method" + method_number + "@" + i + "@"
+ + j, method_number);
+ }
+ }
+ }
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Repository.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Repository.java
index 1065e0fd..edf90e90 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Repository.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/Repository.java
@@ -1,73 +1,73 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * Abstract definition of a class repository. Instances may be used
- * to load classes from different sources and may be used in the
- * Repository.setRepository method.
- *
- * @see org.apache.bcel5_2_0.Repository
- * @version $Id: Repository.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @author David Dixon-Peugh
- */
-public interface Repository extends java.io.Serializable {
-
- /**
- * Store the provided class under "clazz.getClassName()"
- */
- public void storeClass( JavaClass clazz );
-
-
- /**
- * Remove class from repository
- */
- public void removeClass( JavaClass clazz );
-
-
- /**
- * Find the class with the name provided, if the class
- * isn't there, return NULL.
- */
- public JavaClass findClass( String className );
-
-
- /**
- * Find the class with the name provided, if the class
- * isn't there, make an attempt to load it.
- */
- public JavaClass loadClass( String className ) throws java.lang.ClassNotFoundException;
-
-
- /**
- * Find the JavaClass instance for the given run-time class object
- */
- public JavaClass loadClass( Class clazz ) throws java.lang.ClassNotFoundException;
-
-
- /** Clear all entries from cache.
- */
- public void clear();
-
-
- /** Get the ClassPath associated with this Repository
- */
- public ClassPath getClassPath();
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * Abstract definition of a class repository. Instances may be used
+ * to load classes from different sources and may be used in the
+ * Repository.setRepository method.
+ *
+ * @see org.apache.bcel5_2_0.Repository
+ * @version $Id: Repository.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @author David Dixon-Peugh
+ */
+public interface Repository extends java.io.Serializable {
+
+ /**
+ * Store the provided class under "clazz.getClassName()"
+ */
+ public void storeClass( JavaClass clazz );
+
+
+ /**
+ * Remove class from repository
+ */
+ public void removeClass( JavaClass clazz );
+
+
+ /**
+ * Find the class with the name provided, if the class
+ * isn't there, return NULL.
+ */
+ public JavaClass findClass( String className );
+
+
+ /**
+ * Find the class with the name provided, if the class
+ * isn't there, make an attempt to load it.
+ */
+ public JavaClass loadClass( String className ) throws java.lang.ClassNotFoundException;
+
+
+ /**
+ * Find the JavaClass instance for the given run-time class object
+ */
+ public JavaClass loadClass( Class clazz ) throws java.lang.ClassNotFoundException;
+
+
+ /** Clear all entries from cache.
+ */
+ public void clear();
+
+
+ /** Get the ClassPath associated with this Repository
+ */
+ public ClassPath getClassPath();
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/SyntheticRepository.java b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/SyntheticRepository.java
index c98a95fc..9c01e86f 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/SyntheticRepository.java
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/SyntheticRepository.java
@@ -1,191 +1,191 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.bcel5_2_0.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.ref.SoftReference;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.bcel5_2_0.classfile.ClassParser;
-import org.apache.bcel5_2_0.classfile.JavaClass;
-
-/**
- * This repository is used in situations where a Class is created
- * outside the realm of a ClassLoader. Classes are loaded from
- * the file systems using the paths specified in the given
- * class path. By default, this is the value returned by
- * ClassPath.getClassPath().
- *
- * It is designed to be used as a singleton, however it
- * can also be used with custom classpaths.
- *
- /**
- * Abstract definition of a class repository. Instances may be used
- * to load classes from different sources and may be used in the
- * Repository.setRepository method.
- *
- * @see org.apache.bcel5_2_0.Repository
- *
- * @version $Id: SyntheticRepository.java 386056 2006-03-15 11:31:56Z tcurdt $
- * @author M. Dahm
- * @author David Dixon-Peugh
- */
-public class SyntheticRepository implements Repository {
-
- private static final String DEFAULT_PATH = ClassPath.getClassPath();
- private static Map _instances = new HashMap(); // CLASSPATH X REPOSITORY
- private ClassPath _path = null;
- private Map _loadedClasses = new HashMap(); // CLASSNAME X JAVACLASS
-
-
- private SyntheticRepository(ClassPath path) {
- _path = path;
- }
-
-
- public static SyntheticRepository getInstance() {
- return getInstance(ClassPath.SYSTEM_CLASS_PATH);
- }
-
-
- public static SyntheticRepository getInstance( ClassPath classPath ) {
- SyntheticRepository rep = (SyntheticRepository) _instances.get(classPath);
- if (rep == null) {
- rep = new SyntheticRepository(classPath);
- _instances.put(classPath, rep);
- }
- return rep;
- }
-
-
- /**
- * Store a new JavaClass instance into this Repository.
- */
- public void storeClass( JavaClass clazz ) {
- _loadedClasses.put(clazz.getClassName(), new SoftReference(clazz));
- clazz.setRepository(this);
- }
-
-
- /**
- * Remove class from repository
- */
- public void removeClass( JavaClass clazz ) {
- _loadedClasses.remove(clazz.getClassName());
- }
-
-
- /**
- * Find an already defined (cached) JavaClass object by name.
- */
- public JavaClass findClass( String className ) {
- SoftReference ref = (SoftReference) _loadedClasses.get(className);
- if (ref == null) {
- return null;
- }
- return (JavaClass) ref.get();
- }
-
-
- /**
- * Find a JavaClass object by name.
- * If it is already in this Repository, the Repository version
- * is returned. Otherwise, the Repository's classpath is searched for
- * the class (and it is added to the Repository if found).
- *
- * @param className the name of the class
- * @return the JavaClass object
- * @throws ClassNotFoundException if the class is not in the
- * Repository, and could not be found on the classpath
- */
- public JavaClass loadClass( String className ) throws ClassNotFoundException {
- if (className == null || className.equals("")) {
- throw new IllegalArgumentException("Invalid class name " + className);
- }
- className = className.replace('/', '.'); // Just in case, canonical form
- JavaClass clazz = findClass(className);
- if (clazz != null) {
- return clazz;
- }
- try {
- return loadClass(_path.getInputStream(className), className);
- } catch (IOException e) {
- throw new ClassNotFoundException("Exception while looking for class " + className
- + ": " + e.toString());
- }
- }
-
-
- /**
- * Find the JavaClass object for a runtime Class object.
- * If a class with the same name is already in this Repository,
- * the Repository version is returned. Otherwise, getResourceAsStream()
- * is called on the Class object to find the class's representation.
- * If the representation is found, it is added to the Repository.
- *
- * @see Class
- * @param clazz the runtime Class object
- * @return JavaClass object for given runtime class
- * @throws ClassNotFoundException if the class is not in the
- * Repository, and its representation could not be found
- */
- public JavaClass loadClass( Class clazz ) throws ClassNotFoundException {
- String className = clazz.getName();
- JavaClass repositoryClass = findClass(className);
- if (repositoryClass != null) {
- return repositoryClass;
- }
- String name = className;
- int i = name.lastIndexOf('.');
- if (i > 0) {
- name = name.substring(i + 1);
- }
- return loadClass(clazz.getResourceAsStream(name + ".class"), className);
- }
-
-
- private JavaClass loadClass( InputStream is, String className ) throws ClassNotFoundException {
- try {
- if (is != null) {
- ClassParser parser = new ClassParser(is, className);
- JavaClass clazz = parser.parse();
- storeClass(clazz);
- return clazz;
- }
- } catch (IOException e) {
- throw new ClassNotFoundException("Exception while looking for class " + className
- + ": " + e.toString());
- }
- throw new ClassNotFoundException("SyntheticRepository could not load " + className);
- }
-
-
- /** ClassPath associated with the Repository.
- */
- public ClassPath getClassPath() {
- return _path;
- }
-
-
- /** Clear all entries from cache.
- */
- public void clear() {
- _loadedClasses.clear();
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.bcel5_2_0.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.ref.SoftReference;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.bcel5_2_0.classfile.ClassParser;
+import org.apache.bcel5_2_0.classfile.JavaClass;
+
+/**
+ * This repository is used in situations where a Class is created
+ * outside the realm of a ClassLoader. Classes are loaded from
+ * the file systems using the paths specified in the given
+ * class path. By default, this is the value returned by
+ * ClassPath.getClassPath().
+ *
+ * It is designed to be used as a singleton, however it
+ * can also be used with custom classpaths.
+ *
+ /**
+ * Abstract definition of a class repository. Instances may be used
+ * to load classes from different sources and may be used in the
+ * Repository.setRepository method.
+ *
+ * @see org.apache.bcel5_2_0.Repository
+ *
+ * @version $Id: SyntheticRepository.java 386056 2006-03-15 11:31:56Z tcurdt $
+ * @author M. Dahm
+ * @author David Dixon-Peugh
+ */
+public class SyntheticRepository implements Repository {
+
+ private static final String DEFAULT_PATH = ClassPath.getClassPath();
+ private static Map _instances = new HashMap(); // CLASSPATH X REPOSITORY
+ private ClassPath _path = null;
+ private Map _loadedClasses = new HashMap(); // CLASSNAME X JAVACLASS
+
+
+ private SyntheticRepository(ClassPath path) {
+ _path = path;
+ }
+
+
+ public static SyntheticRepository getInstance() {
+ return getInstance(ClassPath.SYSTEM_CLASS_PATH);
+ }
+
+
+ public static SyntheticRepository getInstance( ClassPath classPath ) {
+ SyntheticRepository rep = (SyntheticRepository) _instances.get(classPath);
+ if (rep == null) {
+ rep = new SyntheticRepository(classPath);
+ _instances.put(classPath, rep);
+ }
+ return rep;
+ }
+
+
+ /**
+ * Store a new JavaClass instance into this Repository.
+ */
+ public void storeClass( JavaClass clazz ) {
+ _loadedClasses.put(clazz.getClassName(), new SoftReference(clazz));
+ clazz.setRepository(this);
+ }
+
+
+ /**
+ * Remove class from repository
+ */
+ public void removeClass( JavaClass clazz ) {
+ _loadedClasses.remove(clazz.getClassName());
+ }
+
+
+ /**
+ * Find an already defined (cached) JavaClass object by name.
+ */
+ public JavaClass findClass( String className ) {
+ SoftReference ref = (SoftReference) _loadedClasses.get(className);
+ if (ref == null) {
+ return null;
+ }
+ return (JavaClass) ref.get();
+ }
+
+
+ /**
+ * Find a JavaClass object by name.
+ * If it is already in this Repository, the Repository version
+ * is returned. Otherwise, the Repository's classpath is searched for
+ * the class (and it is added to the Repository if found).
+ *
+ * @param className the name of the class
+ * @return the JavaClass object
+ * @throws ClassNotFoundException if the class is not in the
+ * Repository, and could not be found on the classpath
+ */
+ public JavaClass loadClass( String className ) throws ClassNotFoundException {
+ if (className == null || className.equals("")) {
+ throw new IllegalArgumentException("Invalid class name " + className);
+ }
+ className = className.replace('/', '.'); // Just in case, canonical form
+ JavaClass clazz = findClass(className);
+ if (clazz != null) {
+ return clazz;
+ }
+ try {
+ return loadClass(_path.getInputStream(className), className);
+ } catch (IOException e) {
+ throw new ClassNotFoundException("Exception while looking for class " + className
+ + ": " + e.toString());
+ }
+ }
+
+
+ /**
+ * Find the JavaClass object for a runtime Class object.
+ * If a class with the same name is already in this Repository,
+ * the Repository version is returned. Otherwise, getResourceAsStream()
+ * is called on the Class object to find the class's representation.
+ * If the representation is found, it is added to the Repository.
+ *
+ * @see Class
+ * @param clazz the runtime Class object
+ * @return JavaClass object for given runtime class
+ * @throws ClassNotFoundException if the class is not in the
+ * Repository, and its representation could not be found
+ */
+ public JavaClass loadClass( Class clazz ) throws ClassNotFoundException {
+ String className = clazz.getName();
+ JavaClass repositoryClass = findClass(className);
+ if (repositoryClass != null) {
+ return repositoryClass;
+ }
+ String name = className;
+ int i = name.lastIndexOf('.');
+ if (i > 0) {
+ name = name.substring(i + 1);
+ }
+ return loadClass(clazz.getResourceAsStream(name + ".class"), className);
+ }
+
+
+ private JavaClass loadClass( InputStream is, String className ) throws ClassNotFoundException {
+ try {
+ if (is != null) {
+ ClassParser parser = new ClassParser(is, className);
+ JavaClass clazz = parser.parse();
+ storeClass(clazz);
+ return clazz;
+ }
+ } catch (IOException e) {
+ throw new ClassNotFoundException("Exception while looking for class " + className
+ + ": " + e.toString());
+ }
+ throw new ClassNotFoundException("SyntheticRepository could not load " + className);
+ }
+
+
+ /** ClassPath associated with the Repository.
+ */
+ public ClassPath getClassPath() {
+ return _path;
+ }
+
+
+ /** Clear all entries from cache.
+ */
+ public void clear() {
+ _loadedClasses.clear();
+ }
+}
diff --git a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/package.html b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/package.html
index a58b20f5..dd76f4c1 100755
--- a/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/package.html
+++ b/Core/org.emftext.language.java.resource.bcel/src-bcel/org/apache/bcel5_2_0/util/package.html
@@ -1,25 +1,25 @@
-
-
-
-
-
-
-
-This package contains utility classes for the
-Byte Code Engineering
-Library, namely:
-
-
-
-- Collection classes for JavaClass objects
-- A converter for class files to HTML
-- A tool to find instructions patterns via regular expressions
-- A class to find classes as defined in the CLASSPATH
-- A class loader that allows to create classes at run time
-
-
-
-
-
+
+
+
+
+
+
+
+This package contains utility classes for the
+Byte Code Engineering
+Library, namely:
+
+
+
+- Collection classes for JavaClass objects
+- A converter for class files to HTML
+- A tool to find instructions patterns via regular expressions
+- A class to find classes as defined in the CLASSPATH
+- A class loader that allows to create classes at run time
+
+
+
+
+
diff --git a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/JavaReferenceResolverSwitchFactory.java b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/JavaReferenceResolverSwitchFactory.java
new file mode 100644
index 00000000..6677b9b9
--- /dev/null
+++ b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/JavaReferenceResolverSwitchFactory.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2006-2013
+ * Software Technology Group, Dresden University of Technology
+ * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Software Technology Group - TU Dresden, Germany;
+ * DevBoost GmbH - Berlin, Germany
+ * Benjamin Klatt - initial API and implementation
+ ******************************************************************************/
+package org.emftext.language.java.resource.java;
+
+import org.emftext.language.java.resource.java.mopp.JavaReferenceResolverSwitch;
+
+/**
+ * Factory to receive a JavaReferenceResolverSwitch instances.
+ *
+ * Returns a singleton instance of the switch.
+ */
+public class JavaReferenceResolverSwitchFactory {
+
+ /** The singleton instance. */
+ private static JavaReferenceResolverSwitch resolverSwitch = new JavaReferenceResolverSwitch();
+
+ /**
+ * Get the switch instance to use.
+ *
+ * @return The global singleton.
+ */
+ public static JavaReferenceResolverSwitch getSwitch() {
+ return resolverSwitch;
+ }
+
+}
diff --git a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/decider/ConcreteClassifierDecider.java b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/decider/ConcreteClassifierDecider.java
index c6e3d944..19a53911 100644
--- a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/decider/ConcreteClassifierDecider.java
+++ b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/decider/ConcreteClassifierDecider.java
@@ -2,12 +2,12 @@
* Copyright (c) 2006-2012
* Software Technology Group, Dresden University of Technology
* DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
- *
+ *
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Software Technology Group - TU Dresden, Germany;
* DevBoost GmbH - Berlin, Germany
@@ -85,8 +85,7 @@ public EList extends EObject> getAdditionalCandidates(String identifier, EObje
if (container instanceof PackageReference) {
PackageReference p = (PackageReference) container;
String packageName = packageName(p);
- resultList.addAll(JavaClasspath.get(resource).getClassifiers(
- packageName, "*"));
+ resultList.addAll(JavaClasspath.get(resource).getClassifiers(packageName, "*"));
}
if(container instanceof Classifier
@@ -136,9 +135,9 @@ public EList extends EObject> getAdditionalCandidates(String identifier, EObje
//this is required for classes that contain '$' in their name
if(container instanceof CompilationUnit && identifier.contains(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR)) {
- String[] path = identifier.split("\\" + JavaUniquePathConstructor.CLASSIFIER_SEPARATOR, -1);
+ String[] path = JavaUniquePathConstructor.CLASSIFIER_SEPARATOR_REGEX_PATTERN.split(identifier, -1);
EList innerClassifiers = new BasicEList(resultList);
- String outerName = null;
+ StringBuilder outerName = null;
outer: for(int i = 0; i < path.length; i++) {
for(EObject cand : innerClassifiers) {
if (cand instanceof ConcreteClassifier) {
@@ -146,12 +145,15 @@ public EList extends EObject> getAdditionalCandidates(String identifier, EObje
if(path[i].equals(innerClassifier.getName())) {
innerClassifiers.clear();
if (outerName != null) {
- outerName = outerName + path[i] + "$";
+ outerName.append(path[i]);
+ outerName.append(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR);
}
if (!innerClassifier.eIsProxy()) {
if (outerName == null) {
- outerName = innerClassifier.getContainingCompilationUnit().getNamespacesAsString() +
- innerClassifier.getName() + "$";
+ outerName = new StringBuilder();
+ outerName.append(innerClassifier.getContainingCompilationUnit().getNamespacesAsString());
+ outerName.append(innerClassifier.getName());
+ outerName.append(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR);
}
innerClassifiers.addAll(innerClassifier.getInnerClassifiers());
for(ConcreteClassifier superClassifier : innerClassifier.getAllSuperClassifiers()) {
@@ -164,46 +166,55 @@ public EList extends EObject> getAdditionalCandidates(String identifier, EObje
//(without $) is a class. The proxy we have points at the class, but the
//class does not exist as such.
if (outerName == null) {
- outerName = ((InternalEObject) innerClassifier).eProxyURI().trimFragment().toString().substring(
- JavaUniquePathConstructor.JAVA_CLASSIFIER_PATHMAP.length());
- outerName = outerName.subSequence(
- 0, outerName.length() - JavaUniquePathConstructor.JAVA_FILE_EXTENSION.length()) + "$";
+ outerName = new StringBuilder();
+ String classifierURI = ((InternalEObject) innerClassifier).eProxyURI().trimFragment().toString().substring(JavaUniquePathConstructor.JAVA_CLASSIFIER_PATHMAP.length());
+ outerName.append(classifierURI.subSequence(0, classifierURI.length() - JavaUniquePathConstructor.JAVA_FILE_EXTENSION.length()));
+ outerName.append(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR);
}
- for(EObject innerClassifierProxy : JavaClasspath.get(container).getClassifiers(
- outerName, "*")) {
- innerClassifiers.add((ConcreteClassifier) EcoreUtil.resolve(
- innerClassifierProxy, container));
+ for(EObject innerClassifierProxy : JavaClasspath.get(container).getClassifiers(outerName.toString(), "*")) {
+ innerClassifiers.add((ConcreteClassifier) EcoreUtil.resolve(innerClassifierProxy, container));
}
}
if (i + 1 == path.length - 1) {
resultList.addAll(innerClassifiers);
}
continue outer;
- }
+ }
}
}
}
}
-
+
return resultList;
}
- private String packageName(PackageReference p) {
- String s = "";
- while (p != null) {
- s = p.getName() + "." + s;
- EObject container = p.eContainer();
- if (container instanceof PackageReference) {
- p = (PackageReference) container;
- } else {
- p = null;
- }
- }
- return s;
+ /**
+ * Get the full qualified name of a package.
+ * @param pckg The package to get the name for.
+ * @return The full qualified name separated with "."
+ */
+ private String packageName(PackageReference pckg) {
+ StringBuilder builder = new StringBuilder();
+ packageName(pckg,builder);
+ return builder.toString();
}
- private void addImportsAndInnerClasses(EObject container,
+ /**
+ * Recursively fill the {@link StringBuilder} with the full qualified name.
+ * Recursively to fill the builder in a performance optimized way.
+ * @param pckg The package to get the name.
+ * @param builder The {@link StringBuilder} to fill.
+ */
+ private void packageName(PackageReference pckg, StringBuilder builder) {
+ if (pckg.eContainer() instanceof PackageReference) {
+ packageName((PackageReference) pckg.eContainer(),builder);
+ builder.append(JavaUniquePathConstructor.PACKAGE_SEPARATOR);
+ }
+ builder.append(pckg.getName());
+ }
+
+ private void addImportsAndInnerClasses(EObject container,
EList resultList) {
//1) Inner classifiers of superclasses
if(container instanceof JavaRoot) {
@@ -264,8 +275,8 @@ public boolean isPossibleTarget(String id, EObject element) {
}
// this is needed because classifiers with '$'-signs in their name are
// allowed which interferes with the usage of '$' as separator.
- if(id.contains("$")) {
- String mainID = id.substring(id.lastIndexOf("$") + 1);
+ if(id.contains(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR)) {
+ String mainID = id.substring(id.lastIndexOf(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR) + 1);
if (mainID.equals(concreteClassifier.getName())) {
//set the full id for reprint
if(concreteClassifier.eIsProxy()) {
diff --git a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/helper/ScopedTreeWalker.java b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/helper/ScopedTreeWalker.java
index a6883e77..72e7373d 100644
--- a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/helper/ScopedTreeWalker.java
+++ b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/analysis/helper/ScopedTreeWalker.java
@@ -2,12 +2,12 @@
* Copyright (c) 2006-2012
* Software Technology Group, Dresden University of Technology
* DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
- *
+ *
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Software Technology Group - TU Dresden, Germany;
* DevBoost GmbH - Berlin, Germany
@@ -212,14 +212,14 @@ private void searchInAdditionalContent(String identifier, EObject container, ERe
if (!currentBestResult.eIsProxy() && currentBestResult.eResource() == null) {
Resource containerResource = container.eResource();
if (containerResource != null) {
- //for package references and the array length field:
- //check if there already is a suitable element in
+ //for package references and the array length field:
+ //check if there already is a suitable element in
//the resource, or create one if not.
for (EObject content : container.eResource().getContents()) {
if (content.eClass().equals(currentBestResult.eClass())) {
if (content instanceof NamedElement) {
NamedElement cand = (NamedElement) content;
- if (((NamedElement) content).getName().equals(((NamedElement)currentBestResult).getName())) {
+ if (cand.getName().equals(((NamedElement)currentBestResult).getName())) {
currentBestResult = cand;
}
}
diff --git a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/grammar/JavaGrammarInformationProvider.java b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/grammar/JavaGrammarInformationProvider.java
new file mode 100644
index 00000000..cecf8d03
--- /dev/null
+++ b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/grammar/JavaGrammarInformationProvider.java
@@ -0,0 +1,1933 @@
+/*******************************************************************************
+ * Copyright (c) 2006-2013
+ * Software Technology Group, Dresden University of Technology
+ * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Software Technology Group - TU Dresden, Germany;
+ * DevBoost GmbH - Berlin, Germany
+ * - initial API and implementation
+ * Benjamin Klatt - Performance improvement
+ ******************************************************************************/
+package org.emftext.language.java.resource.java.grammar;
+
+import java.lang.reflect.Field;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcoreFactory;
+
+public class JavaGrammarInformationProvider {
+
+ public final static EStructuralFeature ANONYMOUS_FEATURE = EcoreFactory.eINSTANCE.createEAttribute();
+ static {
+ ANONYMOUS_FEATURE.setName("_");
+ }
+
+ public final static JavaGrammarInformationProvider INSTANCE = new JavaGrammarInformationProvider();
+
+ private java.util.Set keywords;
+
+ public final static JavaContainment JAVA_0_0_0_0_0_0_0 = new JavaContainment(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getEmptyModel().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.EMPTY_MODEL__IMPORTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getImport(), }, 0);
+ public final static JavaKeyword JAVA_0_0_0_0_0_0_1 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_0_0_0_0_0_0_2 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_0_0_0_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_0_0_0_0_0_0_0, JAVA_0_0_0_0_0_0_1, JAVA_0_0_0_0_0_0_2);
+ public final static JavaChoice JAVA_0_0_0_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_0_0_0_0_0_0);
+ public final static JavaCompound JAVA_0_0_0_0 = new JavaCompound(JAVA_0_0_0_0_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_0_0_0_1_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_0_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_0_0_0_1_0_0_0);
+ public final static JavaChoice JAVA_0_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_0_0_0_1_0_0);
+ public final static JavaCompound JAVA_0_0_0_1 = new JavaCompound(JAVA_0_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_0_0_0_0, JAVA_0_0_0_1);
+ public final static JavaChoice JAVA_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_0_0_0);
+ public final static JavaRule JAVA_0 = new JavaRule(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getEmptyModel(), JAVA_0_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_1_0_0_0 = new JavaContainment(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getPackage().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.PACKAGE__ANNOTATIONS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationInstance(), }, 0);
+ public final static JavaKeyword JAVA_1_0_0_1 = new JavaKeyword("package", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_1_0_0_2_0_0_0 = new JavaPlaceholder(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getPackage().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.PACKAGE__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_1_0_0_2_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_1_0_0_2_0_0_0, JAVA_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_1_0_0_2 = new JavaCompound(JAVA_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaPlaceholder JAVA_1_0_0_3 = new JavaPlaceholder(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getPackage().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.PACKAGE__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_1_0_0_4 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_1_0_0_5_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_1_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_1_0_0_5_0_0_0);
+ public final static JavaChoice JAVA_1_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_1_0_0_5_0_0);
+ public final static JavaCompound JAVA_1_0_0_5 = new JavaCompound(JAVA_1_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaLineBreak JAVA_1_0_0_6 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaLineBreak JAVA_1_0_0_7 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_1_0_0_8_0_0_0 = new JavaContainment(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getPackage().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.PACKAGE__IMPORTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getImport(), }, 0);
+ public final static JavaLineBreak JAVA_1_0_0_8_0_0_1 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_1_0_0_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_1_0_0_8_0_0_0, JAVA_1_0_0_8_0_0_1);
+ public final static JavaChoice JAVA_1_0_0_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_1_0_0_8_0_0);
+ public final static JavaCompound JAVA_1_0_0_8 = new JavaCompound(JAVA_1_0_0_8_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_1_0_0_9_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_1_0_0_9_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_1_0_0_9_0_0_0);
+ public final static JavaChoice JAVA_1_0_0_9_0 = new JavaChoice(JavaCardinality.ONE, JAVA_1_0_0_9_0_0);
+ public final static JavaCompound JAVA_1_0_0_9 = new JavaCompound(JAVA_1_0_0_9_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_1_0_0_0, JAVA_1_0_0_1, JAVA_1_0_0_2, JAVA_1_0_0_3, JAVA_1_0_0_4, JAVA_1_0_0_5, JAVA_1_0_0_6, JAVA_1_0_0_7, JAVA_1_0_0_8, JAVA_1_0_0_9);
+ public final static JavaChoice JAVA_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_1_0_0);
+ public final static JavaRule JAVA_1 = new JavaRule(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getPackage(), JAVA_1_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_2_0_0_0_0_0_0 = new JavaKeyword("package", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_2_0_0_0_0_0_1 = new JavaPlaceholder(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getCompilationUnit().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_2_0_0_0_0_0_2_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_2_0_0_0_0_0_2_0_0_1 = new JavaPlaceholder(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getCompilationUnit().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_2_0_0_0_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_0_0_0_2_0_0_0, JAVA_2_0_0_0_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_2_0_0_0_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0_0_0_0_2_0_0);
+ public final static JavaCompound JAVA_2_0_0_0_0_0_2 = new JavaCompound(JAVA_2_0_0_0_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_2_0_0_0_0_0_3 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_2_0_0_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_0_0_0_0, JAVA_2_0_0_0_0_0_1, JAVA_2_0_0_0_0_0_2, JAVA_2_0_0_0_0_0_3);
+ public final static JavaChoice JAVA_2_0_0_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0_0_0_0);
+ public final static JavaCompound JAVA_2_0_0_0 = new JavaCompound(JAVA_2_0_0_0_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaLineBreak JAVA_2_0_0_1 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaLineBreak JAVA_2_0_0_2 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_2_0_0_3_0_0_0 = new JavaContainment(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getCompilationUnit().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__IMPORTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getImport(), }, 0);
+ public final static JavaLineBreak JAVA_2_0_0_3_0_0_1 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_2_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_3_0_0_0, JAVA_2_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_2_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0_3_0_0);
+ public final static JavaCompound JAVA_2_0_0_3 = new JavaCompound(JAVA_2_0_0_3_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_2_0_0_4_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_2_0_0_4_0_0_1 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_2_0_0_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_4_0_0_0, JAVA_2_0_0_4_0_0_1);
+ public final static JavaChoice JAVA_2_0_0_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0_4_0_0);
+ public final static JavaCompound JAVA_2_0_0_4 = new JavaCompound(JAVA_2_0_0_4_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_2_0_0_5 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_2_0_0_6_0_0_0 = new JavaContainment(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getCompilationUnit().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__CLASSIFIERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getConcreteClassifier(), }, 0);
+ public final static JavaKeyword JAVA_2_0_0_6_0_0_1_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_2_0_0_6_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_6_0_0_1_0_0_0);
+ public final static JavaChoice JAVA_2_0_0_6_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0_6_0_0_1_0_0);
+ public final static JavaCompound JAVA_2_0_0_6_0_0_1 = new JavaCompound(JAVA_2_0_0_6_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_2_0_0_6_0_0_2 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaLineBreak JAVA_2_0_0_6_0_0_3 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_2_0_0_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_6_0_0_0, JAVA_2_0_0_6_0_0_1, JAVA_2_0_0_6_0_0_2, JAVA_2_0_0_6_0_0_3);
+ public final static JavaChoice JAVA_2_0_0_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0_6_0_0);
+ public final static JavaCompound JAVA_2_0_0_6 = new JavaCompound(JAVA_2_0_0_6_0, JavaCardinality.PLUS);
+ public final static JavaKeyword JAVA_2_0_0_7_0_0_0 = new JavaKeyword("\u001a", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_2_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_7_0_0_0);
+ public final static JavaChoice JAVA_2_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0_7_0_0);
+ public final static JavaCompound JAVA_2_0_0_7 = new JavaCompound(JAVA_2_0_0_7_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_2_0_0_0, JAVA_2_0_0_1, JAVA_2_0_0_2, JAVA_2_0_0_3, JAVA_2_0_0_4, JAVA_2_0_0_5, JAVA_2_0_0_6, JAVA_2_0_0_7);
+ public final static JavaChoice JAVA_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_2_0_0);
+ public final static JavaRule JAVA_2 = new JavaRule(org.emftext.language.java.containers.ContainersPackage.eINSTANCE.getCompilationUnit(), JAVA_2_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_3_0_0_0 = new JavaKeyword("import", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_3_0_0_1_0_0_0 = new JavaPlaceholder(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getClassifierImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.CLASSIFIER_IMPORT__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_3_0_0_1_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_3_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_3_0_0_1_0_0_0, JAVA_3_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_3_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_3_0_0_1_0_0);
+ public final static JavaCompound JAVA_3_0_0_1 = new JavaCompound(JAVA_3_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaPlaceholder JAVA_3_0_0_2 = new JavaPlaceholder(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getClassifierImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.CLASSIFIER_IMPORT__CLASSIFIER), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_3_0_0_3 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_3_0_0_0, JAVA_3_0_0_1, JAVA_3_0_0_2, JAVA_3_0_0_3);
+ public final static JavaChoice JAVA_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_3_0_0);
+ public final static JavaRule JAVA_3 = new JavaRule(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getClassifierImport(), JAVA_3_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_4_0_0_0 = new JavaKeyword("import", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_4_0_0_1_0_0_0 = new JavaPlaceholder(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getPackageImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.PACKAGE_IMPORT__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_4_0_0_1_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_4_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_4_0_0_1_0_0_0, JAVA_4_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_4_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_4_0_0_1_0_0);
+ public final static JavaCompound JAVA_4_0_0_1 = new JavaCompound(JAVA_4_0_0_1_0, JavaCardinality.PLUS);
+ public final static JavaKeyword JAVA_4_0_0_2 = new JavaKeyword("*", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_4_0_0_3 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_4_0_0_0, JAVA_4_0_0_1, JAVA_4_0_0_2, JAVA_4_0_0_3);
+ public final static JavaChoice JAVA_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_4_0_0);
+ public final static JavaRule JAVA_4 = new JavaRule(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getPackageImport(), JAVA_4_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_5_0_0_0 = new JavaKeyword("import", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_5_0_0_1 = new JavaContainment(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getStaticMemberImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__STATIC), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getStatic(), }, 0);
+ public final static JavaPlaceholder JAVA_5_0_0_2_0_0_0 = new JavaPlaceholder(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getStaticMemberImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_5_0_0_2_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_5_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_5_0_0_2_0_0_0, JAVA_5_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_5_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_5_0_0_2_0_0);
+ public final static JavaCompound JAVA_5_0_0_2 = new JavaCompound(JAVA_5_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaPlaceholder JAVA_5_0_0_3 = new JavaPlaceholder(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getStaticMemberImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__STATIC_MEMBERS), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_5_0_0_4 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_5_0_0_0, JAVA_5_0_0_1, JAVA_5_0_0_2, JAVA_5_0_0_3, JAVA_5_0_0_4);
+ public final static JavaChoice JAVA_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_5_0_0);
+ public final static JavaRule JAVA_5 = new JavaRule(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getStaticMemberImport(), JAVA_5_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_6_0_0_0 = new JavaKeyword("import", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_6_0_0_1 = new JavaContainment(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getStaticClassifierImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_CLASSIFIER_IMPORT__STATIC), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getStatic(), }, 0);
+ public final static JavaPlaceholder JAVA_6_0_0_2_0_0_0 = new JavaPlaceholder(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getStaticClassifierImport().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_CLASSIFIER_IMPORT__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_6_0_0_2_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_6_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_6_0_0_2_0_0_0, JAVA_6_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_6_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_6_0_0_2_0_0);
+ public final static JavaCompound JAVA_6_0_0_2 = new JavaCompound(JAVA_6_0_0_2_0, JavaCardinality.PLUS);
+ public final static JavaKeyword JAVA_6_0_0_3 = new JavaKeyword("*", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_6_0_0_4 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_6_0_0_0, JAVA_6_0_0_1, JAVA_6_0_0_2, JAVA_6_0_0_3, JAVA_6_0_0_4);
+ public final static JavaChoice JAVA_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_6_0_0);
+ public final static JavaRule JAVA_6 = new JavaRule(org.emftext.language.java.imports.ImportsPackage.eINSTANCE.getStaticClassifierImport(), JAVA_6_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_7_0_0_0 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_7_0_0_1 = new JavaKeyword("class", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_7_0_0_2 = new JavaPlaceholder(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_7_0_0_3_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_7_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaKeyword JAVA_7_0_0_3_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_7_0_0_3_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaSequence JAVA_7_0_0_3_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_3_0_0_2_0_0_0, JAVA_7_0_0_3_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_7_0_0_3_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0_3_0_0_2_0_0);
+ public final static JavaCompound JAVA_7_0_0_3_0_0_2 = new JavaCompound(JAVA_7_0_0_3_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_7_0_0_3_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_7_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_3_0_0_0, JAVA_7_0_0_3_0_0_1, JAVA_7_0_0_3_0_0_2, JAVA_7_0_0_3_0_0_3);
+ public final static JavaChoice JAVA_7_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0_3_0_0);
+ public final static JavaCompound JAVA_7_0_0_3 = new JavaCompound(JAVA_7_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_7_0_0_4_0_0_0 = new JavaKeyword("extends", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_7_0_0_4_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__EXTENDS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaSequence JAVA_7_0_0_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_4_0_0_0, JAVA_7_0_0_4_0_0_1);
+ public final static JavaChoice JAVA_7_0_0_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0_4_0_0);
+ public final static JavaCompound JAVA_7_0_0_4 = new JavaCompound(JAVA_7_0_0_4_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_7_0_0_5_0_0_0 = new JavaKeyword("implements", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_7_0_0_5_0_0_1_0_0_0 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__IMPLEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaKeyword JAVA_7_0_0_5_0_0_1_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_7_0_0_5_0_0_1_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__IMPLEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaSequence JAVA_7_0_0_5_0_0_1_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_5_0_0_1_0_0_1_0_0_0, JAVA_7_0_0_5_0_0_1_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_7_0_0_5_0_0_1_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0_5_0_0_1_0_0_1_0_0);
+ public final static JavaCompound JAVA_7_0_0_5_0_0_1_0_0_1 = new JavaCompound(JAVA_7_0_0_5_0_0_1_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_7_0_0_5_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_5_0_0_1_0_0_0, JAVA_7_0_0_5_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_7_0_0_5_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0_5_0_0_1_0_0);
+ public final static JavaCompound JAVA_7_0_0_5_0_0_1 = new JavaCompound(JAVA_7_0_0_5_0_0_1_0, JavaCardinality.ONE);
+ public final static JavaSequence JAVA_7_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_5_0_0_0, JAVA_7_0_0_5_0_0_1);
+ public final static JavaChoice JAVA_7_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0_5_0_0);
+ public final static JavaCompound JAVA_7_0_0_5 = new JavaCompound(JAVA_7_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaWhiteSpace JAVA_7_0_0_6 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_7_0_0_7 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_7_0_0_8_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_7_0_0_8_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__MEMBERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getMember(), }, 0);
+ public final static JavaSequence JAVA_7_0_0_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_8_0_0_0, JAVA_7_0_0_8_0_0_1);
+ public final static JavaChoice JAVA_7_0_0_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0_8_0_0);
+ public final static JavaCompound JAVA_7_0_0_8 = new JavaCompound(JAVA_7_0_0_8_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_7_0_0_9 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_7_0_0_10 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_7_0_0_0, JAVA_7_0_0_1, JAVA_7_0_0_2, JAVA_7_0_0_3, JAVA_7_0_0_4, JAVA_7_0_0_5, JAVA_7_0_0_6, JAVA_7_0_0_7, JAVA_7_0_0_8, JAVA_7_0_0_9, JAVA_7_0_0_10);
+ public final static JavaChoice JAVA_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_7_0_0);
+ public final static JavaRule JAVA_7 = new JavaRule(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getClass_(), JAVA_7_0, JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_8_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_8_0_0_1 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_8_0_0_2_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_8_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnonymousClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ANONYMOUS_CLASS__MEMBERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getMember(), }, 0);
+ public final static JavaSequence JAVA_8_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_8_0_0_2_0_0_0, JAVA_8_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_8_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_8_0_0_2_0_0);
+ public final static JavaCompound JAVA_8_0_0_2 = new JavaCompound(JAVA_8_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_8_0_0_3 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_8_0_0_4 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_8_0_0_0, JAVA_8_0_0_1, JAVA_8_0_0_2, JAVA_8_0_0_3, JAVA_8_0_0_4);
+ public final static JavaChoice JAVA_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_8_0_0);
+ public final static JavaRule JAVA_8 = new JavaRule(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnonymousClass(), JAVA_8_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_9_0_0_0 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_9_0_0_1 = new JavaKeyword("interface", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_9_0_0_2 = new JavaPlaceholder(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_9_0_0_3_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_9_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaKeyword JAVA_9_0_0_3_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_9_0_0_3_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaSequence JAVA_9_0_0_3_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_9_0_0_3_0_0_2_0_0_0, JAVA_9_0_0_3_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_9_0_0_3_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_9_0_0_3_0_0_2_0_0);
+ public final static JavaCompound JAVA_9_0_0_3_0_0_2 = new JavaCompound(JAVA_9_0_0_3_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_9_0_0_3_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_9_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_9_0_0_3_0_0_0, JAVA_9_0_0_3_0_0_1, JAVA_9_0_0_3_0_0_2, JAVA_9_0_0_3_0_0_3);
+ public final static JavaChoice JAVA_9_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_9_0_0_3_0_0);
+ public final static JavaCompound JAVA_9_0_0_3 = new JavaCompound(JAVA_9_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_9_0_0_4_0_0_0 = new JavaKeyword("extends", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_9_0_0_4_0_0_1_0_0_0 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__EXTENDS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaKeyword JAVA_9_0_0_4_0_0_1_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_9_0_0_4_0_0_1_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__EXTENDS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaSequence JAVA_9_0_0_4_0_0_1_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_9_0_0_4_0_0_1_0_0_1_0_0_0, JAVA_9_0_0_4_0_0_1_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_9_0_0_4_0_0_1_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_9_0_0_4_0_0_1_0_0_1_0_0);
+ public final static JavaCompound JAVA_9_0_0_4_0_0_1_0_0_1 = new JavaCompound(JAVA_9_0_0_4_0_0_1_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_9_0_0_4_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_9_0_0_4_0_0_1_0_0_0, JAVA_9_0_0_4_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_9_0_0_4_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_9_0_0_4_0_0_1_0_0);
+ public final static JavaCompound JAVA_9_0_0_4_0_0_1 = new JavaCompound(JAVA_9_0_0_4_0_0_1_0, JavaCardinality.ONE);
+ public final static JavaSequence JAVA_9_0_0_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_9_0_0_4_0_0_0, JAVA_9_0_0_4_0_0_1);
+ public final static JavaChoice JAVA_9_0_0_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_9_0_0_4_0_0);
+ public final static JavaCompound JAVA_9_0_0_4 = new JavaCompound(JAVA_9_0_0_4_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaWhiteSpace JAVA_9_0_0_5 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_9_0_0_6 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_9_0_0_7_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_9_0_0_7_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__MEMBERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getMember(), }, 0);
+ public final static JavaSequence JAVA_9_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_9_0_0_7_0_0_0, JAVA_9_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_9_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_9_0_0_7_0_0);
+ public final static JavaCompound JAVA_9_0_0_7 = new JavaCompound(JAVA_9_0_0_7_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_9_0_0_8 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_9_0_0_9 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_9_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_9_0_0_0, JAVA_9_0_0_1, JAVA_9_0_0_2, JAVA_9_0_0_3, JAVA_9_0_0_4, JAVA_9_0_0_5, JAVA_9_0_0_6, JAVA_9_0_0_7, JAVA_9_0_0_8, JAVA_9_0_0_9);
+ public final static JavaChoice JAVA_9_0 = new JavaChoice(JavaCardinality.ONE, JAVA_9_0_0);
+ public final static JavaRule JAVA_9 = new JavaRule(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getInterface(), JAVA_9_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_10_0_0_0 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_10_0_0_1 = new JavaKeyword("enum", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_10_0_0_2 = new JavaPlaceholder(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_10_0_0_3_0_0_0 = new JavaKeyword("implements", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_10_0_0_3_0_0_1_0_0_0 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__IMPLEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaKeyword JAVA_10_0_0_3_0_0_1_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_10_0_0_3_0_0_1_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__IMPLEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaSequence JAVA_10_0_0_3_0_0_1_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_3_0_0_1_0_0_1_0_0_0, JAVA_10_0_0_3_0_0_1_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_10_0_0_3_0_0_1_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_3_0_0_1_0_0_1_0_0);
+ public final static JavaCompound JAVA_10_0_0_3_0_0_1_0_0_1 = new JavaCompound(JAVA_10_0_0_3_0_0_1_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_10_0_0_3_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_3_0_0_1_0_0_0, JAVA_10_0_0_3_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_10_0_0_3_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_3_0_0_1_0_0);
+ public final static JavaCompound JAVA_10_0_0_3_0_0_1 = new JavaCompound(JAVA_10_0_0_3_0_0_1_0, JavaCardinality.ONE);
+ public final static JavaSequence JAVA_10_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_3_0_0_0, JAVA_10_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_10_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_3_0_0);
+ public final static JavaCompound JAVA_10_0_0_3 = new JavaCompound(JAVA_10_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaWhiteSpace JAVA_10_0_0_4 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_10_0_0_5 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_10_0_0_6_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_10_0_0_6_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__CONSTANTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant(), }, 0);
+ public final static JavaKeyword JAVA_10_0_0_6_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_10_0_0_6_0_0_2_0_0_1 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_10_0_0_6_0_0_2_0_0_2 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__CONSTANTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant(), }, 0);
+ public final static JavaSequence JAVA_10_0_0_6_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_6_0_0_2_0_0_0, JAVA_10_0_0_6_0_0_2_0_0_1, JAVA_10_0_0_6_0_0_2_0_0_2);
+ public final static JavaChoice JAVA_10_0_0_6_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_6_0_0_2_0_0);
+ public final static JavaCompound JAVA_10_0_0_6_0_0_2 = new JavaCompound(JAVA_10_0_0_6_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_10_0_0_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_6_0_0_0, JAVA_10_0_0_6_0_0_1, JAVA_10_0_0_6_0_0_2);
+ public final static JavaChoice JAVA_10_0_0_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_6_0_0);
+ public final static JavaCompound JAVA_10_0_0_6 = new JavaCompound(JAVA_10_0_0_6_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_10_0_0_7_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_10_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_7_0_0_0);
+ public final static JavaChoice JAVA_10_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_7_0_0);
+ public final static JavaCompound JAVA_10_0_0_7 = new JavaCompound(JAVA_10_0_0_7_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_10_0_0_8_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_10_0_0_8_0_0_1_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_10_0_0_8_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__MEMBERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getMember(), }, 0);
+ public final static JavaSequence JAVA_10_0_0_8_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_8_0_0_1_0_0_0, JAVA_10_0_0_8_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_10_0_0_8_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_8_0_0_1_0_0);
+ public final static JavaCompound JAVA_10_0_0_8_0_0_1 = new JavaCompound(JAVA_10_0_0_8_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_10_0_0_8_0_0_2 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_10_0_0_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_8_0_0_0, JAVA_10_0_0_8_0_0_1, JAVA_10_0_0_8_0_0_2);
+ public final static JavaChoice JAVA_10_0_0_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0_8_0_0);
+ public final static JavaCompound JAVA_10_0_0_8 = new JavaCompound(JAVA_10_0_0_8_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_10_0_0_9 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_10_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_10_0_0_0, JAVA_10_0_0_1, JAVA_10_0_0_2, JAVA_10_0_0_3, JAVA_10_0_0_4, JAVA_10_0_0_5, JAVA_10_0_0_6, JAVA_10_0_0_7, JAVA_10_0_0_8, JAVA_10_0_0_9);
+ public final static JavaChoice JAVA_10_0 = new JavaChoice(JavaCardinality.ONE, JAVA_10_0_0);
+ public final static JavaRule JAVA_10 = new JavaRule(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getEnumeration(), JAVA_10_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_11_0_0_0 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnnotation().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ANNOTATION__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_11_0_0_1 = new JavaKeyword("@", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_11_0_0_2 = new JavaKeyword("interface", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_11_0_0_3 = new JavaPlaceholder(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnnotation().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ANNOTATION__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaWhiteSpace JAVA_11_0_0_4 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_11_0_0_5 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_11_0_0_6_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_11_0_0_6_0_0_1 = new JavaContainment(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnnotation().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ANNOTATION__MEMBERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getMember(), }, 0);
+ public final static JavaSequence JAVA_11_0_0_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_11_0_0_6_0_0_0, JAVA_11_0_0_6_0_0_1);
+ public final static JavaChoice JAVA_11_0_0_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_11_0_0_6_0_0);
+ public final static JavaCompound JAVA_11_0_0_6 = new JavaCompound(JAVA_11_0_0_6_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_11_0_0_7 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_11_0_0_8 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_11_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_11_0_0_0, JAVA_11_0_0_1, JAVA_11_0_0_2, JAVA_11_0_0_3, JAVA_11_0_0_4, JAVA_11_0_0_5, JAVA_11_0_0_6, JAVA_11_0_0_7, JAVA_11_0_0_8);
+ public final static JavaChoice JAVA_11_0 = new JavaChoice(JavaCardinality.ONE, JAVA_11_0_0);
+ public final static JavaRule JAVA_11 = new JavaRule(org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnnotation(), JAVA_11_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_12_0_0_0 = new JavaKeyword("@", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_12_0_0_1_0_0_0 = new JavaPlaceholder(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationInstance().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_12_0_0_1_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_12_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_12_0_0_1_0_0_0, JAVA_12_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_12_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_12_0_0_1_0_0);
+ public final static JavaCompound JAVA_12_0_0_1 = new JavaCompound(JAVA_12_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaPlaceholder JAVA_12_0_0_2 = new JavaPlaceholder(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationInstance().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__ANNOTATION), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_12_0_0_3_0_0_0 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationInstance().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__PARAMETER), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationParameter(), }, 0);
+ public final static JavaSequence JAVA_12_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_12_0_0_3_0_0_0);
+ public final static JavaChoice JAVA_12_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_12_0_0_3_0_0);
+ public final static JavaCompound JAVA_12_0_0_3 = new JavaCompound(JAVA_12_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_12_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_12_0_0_0, JAVA_12_0_0_1, JAVA_12_0_0_2, JAVA_12_0_0_3);
+ public final static JavaChoice JAVA_12_0 = new JavaChoice(JavaCardinality.ONE, JAVA_12_0_0);
+ public final static JavaRule JAVA_12 = new JavaRule(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationInstance(), JAVA_12_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_13_0_0_0 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_13_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getSingleAnnotationParameter().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.SINGLE_ANNOTATION_PARAMETER__VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer(), org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression(), }, 0);
+ public final static JavaKeyword JAVA_13_0_0_2 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_13_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_13_0_0_0, JAVA_13_0_0_1, JAVA_13_0_0_2);
+ public final static JavaChoice JAVA_13_0 = new JavaChoice(JavaCardinality.ONE, JAVA_13_0_0);
+ public final static JavaRule JAVA_13 = new JavaRule(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getSingleAnnotationParameter(), JAVA_13_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_14_0_0_0 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_14_0_0_1_0_0_0 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationParameterList().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_PARAMETER_LIST__SETTINGS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttributeSetting(), }, 0);
+ public final static JavaKeyword JAVA_14_0_0_1_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_14_0_0_1_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationParameterList().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_PARAMETER_LIST__SETTINGS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttributeSetting(), }, 0);
+ public final static JavaSequence JAVA_14_0_0_1_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_14_0_0_1_0_0_1_0_0_0, JAVA_14_0_0_1_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_14_0_0_1_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_14_0_0_1_0_0_1_0_0);
+ public final static JavaCompound JAVA_14_0_0_1_0_0_1 = new JavaCompound(JAVA_14_0_0_1_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_14_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_14_0_0_1_0_0_0, JAVA_14_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_14_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_14_0_0_1_0_0);
+ public final static JavaCompound JAVA_14_0_0_1 = new JavaCompound(JAVA_14_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_14_0_0_2 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_14_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_14_0_0_0, JAVA_14_0_0_1, JAVA_14_0_0_2);
+ public final static JavaChoice JAVA_14_0 = new JavaChoice(JavaCardinality.ONE, JAVA_14_0_0);
+ public final static JavaRule JAVA_14 = new JavaRule(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationParameterList(), JAVA_14_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_15_0_0_0 = new JavaPlaceholder(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttributeSetting().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaWhiteSpace JAVA_15_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_15_0_0_2 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_15_0_0_3 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_15_0_0_4 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttributeSetting().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE_SETTING__VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer(), org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression(), }, 0);
+ public final static JavaSequence JAVA_15_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_15_0_0_0, JAVA_15_0_0_1, JAVA_15_0_0_2, JAVA_15_0_0_3, JAVA_15_0_0_4);
+ public final static JavaChoice JAVA_15_0 = new JavaChoice(JavaCardinality.ONE, JAVA_15_0_0);
+ public final static JavaRule JAVA_15 = new JavaRule(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttributeSetting(), JAVA_15_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_16_0_0_0 = new JavaPlaceholder(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.TYPE_PARAMETER__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_16_0_0_1_0_0_0 = new JavaKeyword("extends", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_16_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.TYPE_PARAMETER__EXTEND_TYPES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaKeyword JAVA_16_0_0_1_0_0_2_0_0_0 = new JavaKeyword("&", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_16_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.TYPE_PARAMETER__EXTEND_TYPES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaSequence JAVA_16_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_16_0_0_1_0_0_2_0_0_0, JAVA_16_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_16_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_16_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_16_0_0_1_0_0_2 = new JavaCompound(JAVA_16_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_16_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_16_0_0_1_0_0_0, JAVA_16_0_0_1_0_0_1, JAVA_16_0_0_1_0_0_2);
+ public final static JavaChoice JAVA_16_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_16_0_0_1_0_0);
+ public final static JavaCompound JAVA_16_0_0_1 = new JavaCompound(JAVA_16_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_16_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_16_0_0_0, JAVA_16_0_0_1);
+ public final static JavaChoice JAVA_16_0 = new JavaChoice(JavaCardinality.ONE, JAVA_16_0_0);
+ public final static JavaRule JAVA_16 = new JavaRule(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), JAVA_16_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_17_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ANNOTATIONS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationInstance(), }, 0);
+ public final static JavaPlaceholder JAVA_17_0_0_1 = new JavaPlaceholder(org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaWhiteSpace JAVA_17_0_0_2_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_17_0_0_2_0_0_1 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_17_0_0_2_0_0_2_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_17_0_0_2_0_0_2_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_17_0_0_2_0_0_2_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_17_0_0_2_0_0_2_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_17_0_0_2_0_0_2_0_0_1_0_0_0, JAVA_17_0_0_2_0_0_2_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_17_0_0_2_0_0_2_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_17_0_0_2_0_0_2_0_0_1_0_0);
+ public final static JavaCompound JAVA_17_0_0_2_0_0_2_0_0_1 = new JavaCompound(JAVA_17_0_0_2_0_0_2_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_17_0_0_2_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_17_0_0_2_0_0_2_0_0_0, JAVA_17_0_0_2_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_17_0_0_2_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_17_0_0_2_0_0_2_0_0);
+ public final static JavaCompound JAVA_17_0_0_2_0_0_2 = new JavaCompound(JAVA_17_0_0_2_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_17_0_0_2_0_0_3 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_17_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_17_0_0_2_0_0_0, JAVA_17_0_0_2_0_0_1, JAVA_17_0_0_2_0_0_2, JAVA_17_0_0_2_0_0_3);
+ public final static JavaChoice JAVA_17_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_17_0_0_2_0_0);
+ public final static JavaCompound JAVA_17_0_0_2 = new JavaCompound(JAVA_17_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_17_0_0_3_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ANONYMOUS_CLASS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnonymousClass(), }, 0);
+ public final static JavaSequence JAVA_17_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_17_0_0_3_0_0_0);
+ public final static JavaChoice JAVA_17_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_17_0_0_3_0_0);
+ public final static JavaCompound JAVA_17_0_0_3 = new JavaCompound(JAVA_17_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_17_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_17_0_0_0, JAVA_17_0_0_1, JAVA_17_0_0_2, JAVA_17_0_0_3);
+ public final static JavaChoice JAVA_17_0 = new JavaChoice(JavaCardinality.ONE, JAVA_17_0_0);
+ public final static JavaRule JAVA_17 = new JavaRule(org.emftext.language.java.members.MembersPackage.eINSTANCE.getEnumConstant(), JAVA_17_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_18_0_0_0 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.BLOCK__MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getModifier(), }, 0);
+ public final static JavaWhiteSpace JAVA_18_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_18_0_0_2 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_18_0_0_3_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_18_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.BLOCK__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_18_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_18_0_0_3_0_0_0, JAVA_18_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_18_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_18_0_0_3_0_0);
+ public final static JavaCompound JAVA_18_0_0_3 = new JavaCompound(JAVA_18_0_0_3_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_18_0_0_4 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_18_0_0_5 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_18_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_18_0_0_0, JAVA_18_0_0_1, JAVA_18_0_0_2, JAVA_18_0_0_3, JAVA_18_0_0_4, JAVA_18_0_0_5);
+ public final static JavaChoice JAVA_18_0 = new JavaChoice(JavaCardinality.ONE, JAVA_18_0_0);
+ public final static JavaRule JAVA_18 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getBlock(), JAVA_18_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_19_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_19_0_0_1_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_19_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaKeyword JAVA_19_0_0_1_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_19_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaSequence JAVA_19_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_1_0_0_2_0_0_0, JAVA_19_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_19_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_19_0_0_1_0_0_2 = new JavaCompound(JAVA_19_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_19_0_0_1_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_19_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_1_0_0_0, JAVA_19_0_0_1_0_0_1, JAVA_19_0_0_1_0_0_2, JAVA_19_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_19_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0_1_0_0);
+ public final static JavaCompound JAVA_19_0_0_1 = new JavaCompound(JAVA_19_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaPlaceholder JAVA_19_0_0_2 = new JavaPlaceholder(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_19_0_0_3 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_19_0_0_4_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaKeyword JAVA_19_0_0_4_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_19_0_0_4_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaSequence JAVA_19_0_0_4_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_4_0_0_1_0_0_0, JAVA_19_0_0_4_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_19_0_0_4_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0_4_0_0_1_0_0);
+ public final static JavaCompound JAVA_19_0_0_4_0_0_1 = new JavaCompound(JAVA_19_0_0_4_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_19_0_0_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_4_0_0_0, JAVA_19_0_0_4_0_0_1);
+ public final static JavaChoice JAVA_19_0_0_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0_4_0_0);
+ public final static JavaCompound JAVA_19_0_0_4 = new JavaCompound(JAVA_19_0_0_4_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_19_0_0_5 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_19_0_0_6_0_0_0 = new JavaKeyword("throws", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_19_0_0_6_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaKeyword JAVA_19_0_0_6_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_19_0_0_6_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaSequence JAVA_19_0_0_6_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_6_0_0_2_0_0_0, JAVA_19_0_0_6_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_19_0_0_6_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0_6_0_0_2_0_0);
+ public final static JavaCompound JAVA_19_0_0_6_0_0_2 = new JavaCompound(JAVA_19_0_0_6_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_19_0_0_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_6_0_0_0, JAVA_19_0_0_6_0_0_1, JAVA_19_0_0_6_0_0_2);
+ public final static JavaChoice JAVA_19_0_0_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0_6_0_0);
+ public final static JavaCompound JAVA_19_0_0_6 = new JavaCompound(JAVA_19_0_0_6_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaWhiteSpace JAVA_19_0_0_7 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_19_0_0_8 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_19_0_0_9_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 2);
+ public final static JavaContainment JAVA_19_0_0_9_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_19_0_0_9_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_9_0_0_0, JAVA_19_0_0_9_0_0_1);
+ public final static JavaChoice JAVA_19_0_0_9_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0_9_0_0);
+ public final static JavaCompound JAVA_19_0_0_9 = new JavaCompound(JAVA_19_0_0_9_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_19_0_0_10 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaKeyword JAVA_19_0_0_11 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_19_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_19_0_0_0, JAVA_19_0_0_1, JAVA_19_0_0_2, JAVA_19_0_0_3, JAVA_19_0_0_4, JAVA_19_0_0_5, JAVA_19_0_0_6, JAVA_19_0_0_7, JAVA_19_0_0_8, JAVA_19_0_0_9, JAVA_19_0_0_10, JAVA_19_0_0_11);
+ public final static JavaChoice JAVA_19_0 = new JavaChoice(JavaCardinality.ONE, JAVA_19_0_0);
+ public final static JavaRule JAVA_19 = new JavaRule(org.emftext.language.java.members.MembersPackage.eINSTANCE.getConstructor(), JAVA_19_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_20_0_0_1_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaKeyword JAVA_20_0_0_1_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaSequence JAVA_20_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_1_0_0_2_0_0_0, JAVA_20_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_20_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_20_0_0_1_0_0_2 = new JavaCompound(JAVA_20_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_20_0_0_1_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_20_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_1_0_0_0, JAVA_20_0_0_1_0_0_1, JAVA_20_0_0_1_0_0_2, JAVA_20_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_20_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0_1_0_0);
+ public final static JavaCompound JAVA_20_0_0_1 = new JavaCompound(JAVA_20_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_20_0_0_2_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_20_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_20_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_2_0_0_0, JAVA_20_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_20_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0_2_0_0);
+ public final static JavaCompound JAVA_20_0_0_2 = new JavaCompound(JAVA_20_0_0_2_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_20_0_0_3 = new JavaPlaceholder(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_20_0_0_4 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_5_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaKeyword JAVA_20_0_0_5_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_5_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaSequence JAVA_20_0_0_5_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_5_0_0_1_0_0_0, JAVA_20_0_0_5_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_20_0_0_5_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0_5_0_0_1_0_0);
+ public final static JavaCompound JAVA_20_0_0_5_0_0_1 = new JavaCompound(JAVA_20_0_0_5_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_20_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_5_0_0_0, JAVA_20_0_0_5_0_0_1);
+ public final static JavaChoice JAVA_20_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0_5_0_0);
+ public final static JavaCompound JAVA_20_0_0_5 = new JavaCompound(JAVA_20_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_20_0_0_6 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_7 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_20_0_0_8_0_0_0 = new JavaKeyword("throws", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_8_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaKeyword JAVA_20_0_0_8_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_20_0_0_8_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaSequence JAVA_20_0_0_8_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_8_0_0_2_0_0_0, JAVA_20_0_0_8_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_20_0_0_8_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0_8_0_0_2_0_0);
+ public final static JavaCompound JAVA_20_0_0_8_0_0_2 = new JavaCompound(JAVA_20_0_0_8_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_20_0_0_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_8_0_0_0, JAVA_20_0_0_8_0_0_1, JAVA_20_0_0_8_0_0_2);
+ public final static JavaChoice JAVA_20_0_0_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0_8_0_0);
+ public final static JavaCompound JAVA_20_0_0_8 = new JavaCompound(JAVA_20_0_0_8_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_20_0_0_9 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_20_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_20_0_0_0, JAVA_20_0_0_1, JAVA_20_0_0_2, JAVA_20_0_0_3, JAVA_20_0_0_4, JAVA_20_0_0_5, JAVA_20_0_0_6, JAVA_20_0_0_7, JAVA_20_0_0_8, JAVA_20_0_0_9);
+ public final static JavaChoice JAVA_20_0 = new JavaChoice(JavaCardinality.ONE, JAVA_20_0_0);
+ public final static JavaRule JAVA_20 = new JavaRule(org.emftext.language.java.members.MembersPackage.eINSTANCE.getInterfaceMethod(), JAVA_20_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_21_0_0_1_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaKeyword JAVA_21_0_0_1_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaSequence JAVA_21_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_1_0_0_2_0_0_0, JAVA_21_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_21_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_21_0_0_1_0_0_2 = new JavaCompound(JAVA_21_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_21_0_0_1_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_21_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_1_0_0_0, JAVA_21_0_0_1_0_0_1, JAVA_21_0_0_1_0_0_2, JAVA_21_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_21_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_1_0_0);
+ public final static JavaCompound JAVA_21_0_0_1 = new JavaCompound(JAVA_21_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_21_0_0_2_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_21_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_21_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_2_0_0_0, JAVA_21_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_21_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_2_0_0);
+ public final static JavaCompound JAVA_21_0_0_2 = new JavaCompound(JAVA_21_0_0_2_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_21_0_0_3 = new JavaPlaceholder(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_21_0_0_4 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_5_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaKeyword JAVA_21_0_0_5_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_5_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaSequence JAVA_21_0_0_5_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_5_0_0_1_0_0_0, JAVA_21_0_0_5_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_21_0_0_5_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_5_0_0_1_0_0);
+ public final static JavaCompound JAVA_21_0_0_5_0_0_1 = new JavaCompound(JAVA_21_0_0_5_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_21_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_5_0_0_0, JAVA_21_0_0_5_0_0_1);
+ public final static JavaChoice JAVA_21_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_5_0_0);
+ public final static JavaCompound JAVA_21_0_0_5 = new JavaCompound(JAVA_21_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_21_0_0_6 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_7 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_21_0_0_8_0_0_0 = new JavaKeyword("throws", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_8_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaKeyword JAVA_21_0_0_8_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_21_0_0_8_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaSequence JAVA_21_0_0_8_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_8_0_0_2_0_0_0, JAVA_21_0_0_8_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_21_0_0_8_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_8_0_0_2_0_0);
+ public final static JavaCompound JAVA_21_0_0_8_0_0_2 = new JavaCompound(JAVA_21_0_0_8_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_21_0_0_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_8_0_0_0, JAVA_21_0_0_8_0_0_1, JAVA_21_0_0_8_0_0_2);
+ public final static JavaChoice JAVA_21_0_0_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_8_0_0);
+ public final static JavaCompound JAVA_21_0_0_8 = new JavaCompound(JAVA_21_0_0_8_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaWhiteSpace JAVA_21_0_0_9 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_21_0_0_10 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_21_0_0_11_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 2);
+ public final static JavaContainment JAVA_21_0_0_11_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_21_0_0_11_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_11_0_0_0, JAVA_21_0_0_11_0_0_1);
+ public final static JavaChoice JAVA_21_0_0_11_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0_11_0_0);
+ public final static JavaCompound JAVA_21_0_0_11 = new JavaCompound(JAVA_21_0_0_11_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_21_0_0_12 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaKeyword JAVA_21_0_0_13 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_21_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_21_0_0_0, JAVA_21_0_0_1, JAVA_21_0_0_2, JAVA_21_0_0_3, JAVA_21_0_0_4, JAVA_21_0_0_5, JAVA_21_0_0_6, JAVA_21_0_0_7, JAVA_21_0_0_8, JAVA_21_0_0_9, JAVA_21_0_0_10, JAVA_21_0_0_11, JAVA_21_0_0_12, JAVA_21_0_0_13);
+ public final static JavaChoice JAVA_21_0 = new JavaChoice(JavaCardinality.ONE, JAVA_21_0_0);
+ public final static JavaRule JAVA_21 = new JavaRule(org.emftext.language.java.members.MembersPackage.eINSTANCE.getClassMethod(), JAVA_21_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_0 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaKeyword JAVA_22_0_0_1_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaKeyword JAVA_22_0_0_1_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__TYPE_PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeParameter(), }, 0);
+ public final static JavaSequence JAVA_22_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_1_0_0_2_0_0_0, JAVA_22_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_22_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_22_0_0_1_0_0_2 = new JavaCompound(JAVA_22_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_22_0_0_1_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_22_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_1_0_0_0, JAVA_22_0_0_1_0_0_1, JAVA_22_0_0_1_0_0_2, JAVA_22_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_22_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0_1_0_0);
+ public final static JavaCompound JAVA_22_0_0_1 = new JavaCompound(JAVA_22_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_22_0_0_2_0_0_0 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_22_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_22_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_2_0_0_0, JAVA_22_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_22_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0_2_0_0);
+ public final static JavaCompound JAVA_22_0_0_2 = new JavaCompound(JAVA_22_0_0_2_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_22_0_0_3 = new JavaPlaceholder(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_22_0_0_4 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_5_0_0_0 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaKeyword JAVA_22_0_0_5_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_5_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__PARAMETERS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getParameter(), }, 0);
+ public final static JavaSequence JAVA_22_0_0_5_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_5_0_0_1_0_0_0, JAVA_22_0_0_5_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_22_0_0_5_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0_5_0_0_1_0_0);
+ public final static JavaCompound JAVA_22_0_0_5_0_0_1 = new JavaCompound(JAVA_22_0_0_5_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_22_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_5_0_0_0, JAVA_22_0_0_5_0_0_1);
+ public final static JavaChoice JAVA_22_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0_5_0_0);
+ public final static JavaCompound JAVA_22_0_0_5 = new JavaCompound(JAVA_22_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_22_0_0_6 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_7 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_22_0_0_8_0_0_0 = new JavaKeyword("throws", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_8_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaKeyword JAVA_22_0_0_8_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_8_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__EXCEPTIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), }, 0);
+ public final static JavaSequence JAVA_22_0_0_8_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_8_0_0_2_0_0_0, JAVA_22_0_0_8_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_22_0_0_8_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0_8_0_0_2_0_0);
+ public final static JavaCompound JAVA_22_0_0_8_0_0_2 = new JavaCompound(JAVA_22_0_0_8_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_22_0_0_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_8_0_0_0, JAVA_22_0_0_8_0_0_1, JAVA_22_0_0_8_0_0_2);
+ public final static JavaChoice JAVA_22_0_0_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0_8_0_0);
+ public final static JavaCompound JAVA_22_0_0_8 = new JavaCompound(JAVA_22_0_0_8_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_22_0_0_9 = new JavaKeyword("default", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_22_0_0_10 = new JavaContainment(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__DEFAULT_VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_22_0_0_11 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_22_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_22_0_0_0, JAVA_22_0_0_1, JAVA_22_0_0_2, JAVA_22_0_0_3, JAVA_22_0_0_4, JAVA_22_0_0_5, JAVA_22_0_0_6, JAVA_22_0_0_7, JAVA_22_0_0_8, JAVA_22_0_0_9, JAVA_22_0_0_10, JAVA_22_0_0_11);
+ public final static JavaChoice JAVA_22_0 = new JavaChoice(JavaCardinality.ONE, JAVA_22_0_0);
+ public final static JavaRule JAVA_22 = new JavaRule(org.emftext.language.java.annotations.AnnotationsPackage.eINSTANCE.getAnnotationAttribute(), JAVA_22_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_23_0_0_0 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaContainment JAVA_23_0_0_1 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_23_0_0_2 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_23_0_0_3_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_23_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_23_0_0_3_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_23_0_0_3_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_23_0_0_3_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_23_0_0_3_0_0_2_0_0_0, JAVA_23_0_0_3_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_23_0_0_3_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_23_0_0_3_0_0_2_0_0);
+ public final static JavaCompound JAVA_23_0_0_3_0_0_2 = new JavaCompound(JAVA_23_0_0_3_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_23_0_0_3_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_23_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_23_0_0_3_0_0_0, JAVA_23_0_0_3_0_0_1, JAVA_23_0_0_3_0_0_2, JAVA_23_0_0_3_0_0_3);
+ public final static JavaChoice JAVA_23_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_23_0_0_3_0_0);
+ public final static JavaCompound JAVA_23_0_0_3 = new JavaCompound(JAVA_23_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaPlaceholder JAVA_23_0_0_4 = new JavaPlaceholder(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_23_0_0_5 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_23_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_23_0_0_0, JAVA_23_0_0_1, JAVA_23_0_0_2, JAVA_23_0_0_3, JAVA_23_0_0_4, JAVA_23_0_0_5);
+ public final static JavaChoice JAVA_23_0 = new JavaChoice(JavaCardinality.ONE, JAVA_23_0_0);
+ public final static JavaRule JAVA_23 = new JavaRule(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter(), JAVA_23_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_24_0_0_0 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getVariableLengthParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaContainment JAVA_24_0_0_1 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getVariableLengthParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_24_0_0_2 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getVariableLengthParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_24_0_0_3_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_24_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getVariableLengthParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_24_0_0_3_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_24_0_0_3_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getVariableLengthParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_24_0_0_3_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_24_0_0_3_0_0_2_0_0_0, JAVA_24_0_0_3_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_24_0_0_3_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_24_0_0_3_0_0_2_0_0);
+ public final static JavaCompound JAVA_24_0_0_3_0_0_2 = new JavaCompound(JAVA_24_0_0_3_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_24_0_0_3_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_24_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_24_0_0_3_0_0_0, JAVA_24_0_0_3_0_0_1, JAVA_24_0_0_3_0_0_2, JAVA_24_0_0_3_0_0_3);
+ public final static JavaChoice JAVA_24_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_24_0_0_3_0_0);
+ public final static JavaCompound JAVA_24_0_0_3 = new JavaCompound(JAVA_24_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_24_0_0_4 = new JavaKeyword("...", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_24_0_0_5 = new JavaPlaceholder(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getVariableLengthParameter().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_24_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_24_0_0_0, JAVA_24_0_0_1, JAVA_24_0_0_2, JAVA_24_0_0_3, JAVA_24_0_0_4, JAVA_24_0_0_5);
+ public final static JavaChoice JAVA_24_0 = new JavaChoice(JavaCardinality.ONE, JAVA_24_0_0);
+ public final static JavaRule JAVA_24 = new JavaRule(org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getVariableLengthParameter(), JAVA_24_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_25_0_0_0 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaContainment JAVA_25_0_0_1 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_25_0_0_2 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_25_0_0_3_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_25_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_25_0_0_3_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_25_0_0_3_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_25_0_0_3_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_25_0_0_3_0_0_2_0_0_0, JAVA_25_0_0_3_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_25_0_0_3_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_25_0_0_3_0_0_2_0_0);
+ public final static JavaCompound JAVA_25_0_0_3_0_0_2 = new JavaCompound(JAVA_25_0_0_3_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_25_0_0_3_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_25_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_25_0_0_3_0_0_0, JAVA_25_0_0_3_0_0_1, JAVA_25_0_0_3_0_0_2, JAVA_25_0_0_3_0_0_3);
+ public final static JavaChoice JAVA_25_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_25_0_0_3_0_0);
+ public final static JavaCompound JAVA_25_0_0_3 = new JavaCompound(JAVA_25_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaPlaceholder JAVA_25_0_0_4 = new JavaPlaceholder(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_25_0_0_5 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaWhiteSpace JAVA_25_0_0_6_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_25_0_0_6_0_0_1 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_25_0_0_6_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_25_0_0_6_0_0_3 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__INITIAL_VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_25_0_0_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_25_0_0_6_0_0_0, JAVA_25_0_0_6_0_0_1, JAVA_25_0_0_6_0_0_2, JAVA_25_0_0_6_0_0_3);
+ public final static JavaChoice JAVA_25_0_0_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_25_0_0_6_0_0);
+ public final static JavaCompound JAVA_25_0_0_6 = new JavaCompound(JAVA_25_0_0_6_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_25_0_0_7_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_25_0_0_7_0_0_1 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getAdditionalLocalVariable(), }, 0);
+ public final static JavaSequence JAVA_25_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_25_0_0_7_0_0_0, JAVA_25_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_25_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_25_0_0_7_0_0);
+ public final static JavaCompound JAVA_25_0_0_7 = new JavaCompound(JAVA_25_0_0_7_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_25_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_25_0_0_0, JAVA_25_0_0_1, JAVA_25_0_0_2, JAVA_25_0_0_3, JAVA_25_0_0_4, JAVA_25_0_0_5, JAVA_25_0_0_6, JAVA_25_0_0_7);
+ public final static JavaChoice JAVA_25_0 = new JavaChoice(JavaCardinality.ONE, JAVA_25_0_0);
+ public final static JavaRule JAVA_25 = new JavaRule(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable(), JAVA_25_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_26_0_0_0 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getLocalVariableStatement().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.LOCAL_VARIABLE_STATEMENT__VARIABLE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getLocalVariable(), }, 0);
+ public final static JavaKeyword JAVA_26_0_0_1 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_26_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_26_0_0_0, JAVA_26_0_0_1);
+ public final static JavaChoice JAVA_26_0 = new JavaChoice(JavaCardinality.ONE, JAVA_26_0_0);
+ public final static JavaRule JAVA_26 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getLocalVariableStatement(), JAVA_26_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_27_0_0_0 = new JavaPlaceholder(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getAdditionalLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.ADDITIONAL_LOCAL_VARIABLE__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_27_0_0_1 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getAdditionalLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.ADDITIONAL_LOCAL_VARIABLE__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaWhiteSpace JAVA_27_0_0_2_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_27_0_0_2_0_0_1 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_27_0_0_2_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_27_0_0_2_0_0_3 = new JavaContainment(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getAdditionalLocalVariable().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.ADDITIONAL_LOCAL_VARIABLE__INITIAL_VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_27_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_27_0_0_2_0_0_0, JAVA_27_0_0_2_0_0_1, JAVA_27_0_0_2_0_0_2, JAVA_27_0_0_2_0_0_3);
+ public final static JavaChoice JAVA_27_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_27_0_0_2_0_0);
+ public final static JavaCompound JAVA_27_0_0_2 = new JavaCompound(JAVA_27_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_27_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_27_0_0_0, JAVA_27_0_0_1, JAVA_27_0_0_2);
+ public final static JavaChoice JAVA_27_0 = new JavaChoice(JavaCardinality.ONE, JAVA_27_0_0);
+ public final static JavaRule JAVA_27 = new JavaRule(org.emftext.language.java.variables.VariablesPackage.eINSTANCE.getAdditionalLocalVariable(), JAVA_27_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_28_0_0_0 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__ANNOTATIONS_AND_MODIFIERS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAnnotationInstanceOrModifier(), }, 0);
+ public final static JavaContainment JAVA_28_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_28_0_0_2 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_28_0_0_3_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_28_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_28_0_0_3_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_28_0_0_3_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_28_0_0_3_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_28_0_0_3_0_0_2_0_0_0, JAVA_28_0_0_3_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_28_0_0_3_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_28_0_0_3_0_0_2_0_0);
+ public final static JavaCompound JAVA_28_0_0_3_0_0_2 = new JavaCompound(JAVA_28_0_0_3_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_28_0_0_3_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_28_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_28_0_0_3_0_0_0, JAVA_28_0_0_3_0_0_1, JAVA_28_0_0_3_0_0_2, JAVA_28_0_0_3_0_0_3);
+ public final static JavaChoice JAVA_28_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_28_0_0_3_0_0);
+ public final static JavaCompound JAVA_28_0_0_3 = new JavaCompound(JAVA_28_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaPlaceholder JAVA_28_0_0_4 = new JavaPlaceholder(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_28_0_0_5 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaWhiteSpace JAVA_28_0_0_6_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_28_0_0_6_0_0_1 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_28_0_0_6_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_28_0_0_6_0_0_3 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__INITIAL_VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_28_0_0_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_28_0_0_6_0_0_0, JAVA_28_0_0_6_0_0_1, JAVA_28_0_0_6_0_0_2, JAVA_28_0_0_6_0_0_3);
+ public final static JavaChoice JAVA_28_0_0_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_28_0_0_6_0_0);
+ public final static JavaCompound JAVA_28_0_0_6 = new JavaCompound(JAVA_28_0_0_6_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_28_0_0_7_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_28_0_0_7_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__ADDITIONAL_FIELDS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.members.MembersPackage.eINSTANCE.getAdditionalField(), }, 0);
+ public final static JavaSequence JAVA_28_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_28_0_0_7_0_0_0, JAVA_28_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_28_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_28_0_0_7_0_0);
+ public final static JavaCompound JAVA_28_0_0_7 = new JavaCompound(JAVA_28_0_0_7_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_28_0_0_8 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_28_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_28_0_0_0, JAVA_28_0_0_1, JAVA_28_0_0_2, JAVA_28_0_0_3, JAVA_28_0_0_4, JAVA_28_0_0_5, JAVA_28_0_0_6, JAVA_28_0_0_7, JAVA_28_0_0_8);
+ public final static JavaChoice JAVA_28_0 = new JavaChoice(JavaCardinality.ONE, JAVA_28_0_0);
+ public final static JavaRule JAVA_28 = new JavaRule(org.emftext.language.java.members.MembersPackage.eINSTANCE.getField(), JAVA_28_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_29_0_0_0 = new JavaPlaceholder(org.emftext.language.java.members.MembersPackage.eINSTANCE.getAdditionalField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ADDITIONAL_FIELD__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaContainment JAVA_29_0_0_1 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getAdditionalField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ADDITIONAL_FIELD__ARRAY_DIMENSIONS_AFTER), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaWhiteSpace JAVA_29_0_0_2_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_29_0_0_2_0_0_1 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_29_0_0_2_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_29_0_0_2_0_0_3 = new JavaContainment(org.emftext.language.java.members.MembersPackage.eINSTANCE.getAdditionalField().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ADDITIONAL_FIELD__INITIAL_VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_29_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_29_0_0_2_0_0_0, JAVA_29_0_0_2_0_0_1, JAVA_29_0_0_2_0_0_2, JAVA_29_0_0_2_0_0_3);
+ public final static JavaChoice JAVA_29_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_29_0_0_2_0_0);
+ public final static JavaCompound JAVA_29_0_0_2 = new JavaCompound(JAVA_29_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_29_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_29_0_0_0, JAVA_29_0_0_1, JAVA_29_0_0_2);
+ public final static JavaChoice JAVA_29_0 = new JavaChoice(JavaCardinality.ONE, JAVA_29_0_0);
+ public final static JavaRule JAVA_29 = new JavaRule(org.emftext.language.java.members.MembersPackage.eINSTANCE.getAdditionalField(), JAVA_29_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_30_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_30_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_30_0_0_0);
+ public final static JavaChoice JAVA_30_0 = new JavaChoice(JavaCardinality.ONE, JAVA_30_0_0);
+ public final static JavaRule JAVA_30 = new JavaRule(org.emftext.language.java.members.MembersPackage.eINSTANCE.getEmptyMember(), JAVA_30_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_31_0_0_0 = new JavaKeyword("new", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_31_0_0_1_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_31_0_0_1_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_31_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_1_0_0_2_0_0_0, JAVA_31_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_31_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_31_0_0_1_0_0_2 = new JavaCompound(JAVA_31_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_31_0_0_1_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_31_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_1_0_0_0, JAVA_31_0_0_1_0_0_1, JAVA_31_0_0_1_0_0_2, JAVA_31_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_31_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0_1_0_0);
+ public final static JavaCompound JAVA_31_0_0_1 = new JavaCompound(JAVA_31_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_31_0_0_2 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaKeyword JAVA_31_0_0_3_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__CALL_TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_31_0_0_3_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_3_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__CALL_TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_31_0_0_3_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_3_0_0_2_0_0_0, JAVA_31_0_0_3_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_31_0_0_3_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0_3_0_0_2_0_0);
+ public final static JavaCompound JAVA_31_0_0_3_0_0_2 = new JavaCompound(JAVA_31_0_0_3_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_31_0_0_3_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_31_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_3_0_0_0, JAVA_31_0_0_3_0_0_1, JAVA_31_0_0_3_0_0_2, JAVA_31_0_0_3_0_0_3);
+ public final static JavaChoice JAVA_31_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0_3_0_0);
+ public final static JavaCompound JAVA_31_0_0_3 = new JavaCompound(JAVA_31_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_31_0_0_4 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_5_0_0_0 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_31_0_0_5_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_5_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_31_0_0_5_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_5_0_0_1_0_0_0, JAVA_31_0_0_5_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_31_0_0_5_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0_5_0_0_1_0_0);
+ public final static JavaCompound JAVA_31_0_0_5_0_0_1 = new JavaCompound(JAVA_31_0_0_5_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_31_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_5_0_0_0, JAVA_31_0_0_5_0_0_1);
+ public final static JavaChoice JAVA_31_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0_5_0_0);
+ public final static JavaCompound JAVA_31_0_0_5 = new JavaCompound(JAVA_31_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_31_0_0_6 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_7 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS), JavaCardinality.QUESTIONMARK, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.classifiers.ClassifiersPackage.eINSTANCE.getAnonymousClass(), }, 0);
+ public final static JavaKeyword JAVA_31_0_0_8_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_31_0_0_8_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_31_0_0_8_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_8_0_0_0, JAVA_31_0_0_8_0_0_1);
+ public final static JavaChoice JAVA_31_0_0_8_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0_8_0_0);
+ public final static JavaCompound JAVA_31_0_0_8 = new JavaCompound(JAVA_31_0_0_8_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_31_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_31_0_0_0, JAVA_31_0_0_1, JAVA_31_0_0_2, JAVA_31_0_0_3, JAVA_31_0_0_4, JAVA_31_0_0_5, JAVA_31_0_0_6, JAVA_31_0_0_7, JAVA_31_0_0_8);
+ public final static JavaChoice JAVA_31_0 = new JavaChoice(JavaCardinality.ONE, JAVA_31_0_0);
+ public final static JavaRule JAVA_31 = new JavaRule(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getNewConstructorCall(), JAVA_31_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_32_0_0_0_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_32_0_0_0_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getExplicitConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_32_0_0_0_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_32_0_0_0_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getExplicitConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_32_0_0_0_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_32_0_0_0_0_0_2_0_0_0, JAVA_32_0_0_0_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_32_0_0_0_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_32_0_0_0_0_0_2_0_0);
+ public final static JavaCompound JAVA_32_0_0_0_0_0_2 = new JavaCompound(JAVA_32_0_0_0_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_32_0_0_0_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_32_0_0_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_32_0_0_0_0_0_0, JAVA_32_0_0_0_0_0_1, JAVA_32_0_0_0_0_0_2, JAVA_32_0_0_0_0_0_3);
+ public final static JavaChoice JAVA_32_0_0_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_32_0_0_0_0_0);
+ public final static JavaCompound JAVA_32_0_0_0 = new JavaCompound(JAVA_32_0_0_0_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_32_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getExplicitConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__CALL_TARGET), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getSelf(), }, 0);
+ public final static JavaKeyword JAVA_32_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_32_0_0_3_0_0_0 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getExplicitConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_32_0_0_3_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_32_0_0_3_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getExplicitConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_32_0_0_3_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_32_0_0_3_0_0_1_0_0_0, JAVA_32_0_0_3_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_32_0_0_3_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_32_0_0_3_0_0_1_0_0);
+ public final static JavaCompound JAVA_32_0_0_3_0_0_1 = new JavaCompound(JAVA_32_0_0_3_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_32_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_32_0_0_3_0_0_0, JAVA_32_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_32_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_32_0_0_3_0_0);
+ public final static JavaCompound JAVA_32_0_0_3 = new JavaCompound(JAVA_32_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_32_0_0_4 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_32_0_0_5_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_32_0_0_5_0_0_1 = new JavaContainment(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getExplicitConstructorCall().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_32_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_32_0_0_5_0_0_0, JAVA_32_0_0_5_0_0_1);
+ public final static JavaChoice JAVA_32_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_32_0_0_5_0_0);
+ public final static JavaCompound JAVA_32_0_0_5 = new JavaCompound(JAVA_32_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_32_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_32_0_0_0, JAVA_32_0_0_1, JAVA_32_0_0_2, JAVA_32_0_0_3, JAVA_32_0_0_4, JAVA_32_0_0_5);
+ public final static JavaChoice JAVA_32_0 = new JavaChoice(JavaCardinality.ONE, JAVA_32_0_0);
+ public final static JavaRule JAVA_32 = new JavaRule(org.emftext.language.java.instantiations.InstantiationsPackage.eINSTANCE.getExplicitConstructorCall(), JAVA_32_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_33_0_0_0 = new JavaKeyword("new", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_33_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesTyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_33_0_0_2 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesTyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.PLUS, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaContainment JAVA_33_0_0_3 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesTyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__ARRAY_INITIALIZER), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer(), }, 0);
+ public final static JavaContainment JAVA_33_0_0_4 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesTyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__ARRAY_SELECTORS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector(), }, 0);
+ public final static JavaKeyword JAVA_33_0_0_5_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_33_0_0_5_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesTyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_33_0_0_5_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_33_0_0_5_0_0_0, JAVA_33_0_0_5_0_0_1);
+ public final static JavaChoice JAVA_33_0_0_5_0 = new JavaChoice(JavaCardinality.ONE, JAVA_33_0_0_5_0_0);
+ public final static JavaCompound JAVA_33_0_0_5 = new JavaCompound(JAVA_33_0_0_5_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_33_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_33_0_0_0, JAVA_33_0_0_1, JAVA_33_0_0_2, JAVA_33_0_0_3, JAVA_33_0_0_4, JAVA_33_0_0_5);
+ public final static JavaChoice JAVA_33_0 = new JavaChoice(JavaCardinality.ONE, JAVA_33_0_0);
+ public final static JavaRule JAVA_33 = new JavaRule(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesTyped(), JAVA_33_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_34_0_0_0 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesUntyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_UNTYPED__ARRAY_INITIALIZER), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer(), }, 0);
+ public final static JavaContainment JAVA_34_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesUntyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_UNTYPED__ARRAY_SELECTORS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector(), }, 0);
+ public final static JavaKeyword JAVA_34_0_0_2_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_34_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesUntyped().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_UNTYPED__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_34_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_34_0_0_2_0_0_0, JAVA_34_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_34_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_34_0_0_2_0_0);
+ public final static JavaCompound JAVA_34_0_0_2 = new JavaCompound(JAVA_34_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_34_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_34_0_0_0, JAVA_34_0_0_1, JAVA_34_0_0_2);
+ public final static JavaChoice JAVA_34_0 = new JavaChoice(JavaCardinality.ONE, JAVA_34_0_0);
+ public final static JavaRule JAVA_34 = new JavaRule(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationByValuesUntyped(), JAVA_34_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_35_0_0_0 = new JavaKeyword("new", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_35_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationBySize().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaKeyword JAVA_35_0_0_2_0_0_0 = new JavaKeyword("[", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_35_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationBySize().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__SIZES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_35_0_0_2_0_0_2 = new JavaKeyword("]", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_35_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_35_0_0_2_0_0_0, JAVA_35_0_0_2_0_0_1, JAVA_35_0_0_2_0_0_2);
+ public final static JavaChoice JAVA_35_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_35_0_0_2_0_0);
+ public final static JavaCompound JAVA_35_0_0_2 = new JavaCompound(JAVA_35_0_0_2_0, JavaCardinality.PLUS);
+ public final static JavaContainment JAVA_35_0_0_3 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationBySize().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_35_0_0_4_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_35_0_0_4_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationBySize().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_35_0_0_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_35_0_0_4_0_0_0, JAVA_35_0_0_4_0_0_1);
+ public final static JavaChoice JAVA_35_0_0_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_35_0_0_4_0_0);
+ public final static JavaCompound JAVA_35_0_0_4 = new JavaCompound(JAVA_35_0_0_4_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_35_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_35_0_0_0, JAVA_35_0_0_1, JAVA_35_0_0_2, JAVA_35_0_0_3, JAVA_35_0_0_4);
+ public final static JavaChoice JAVA_35_0 = new JavaChoice(JavaCardinality.ONE, JAVA_35_0_0);
+ public final static JavaRule JAVA_35 = new JavaRule(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInstantiationBySize(), JAVA_35_0, JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_36_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_36_0_0_1 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_36_0_0_2_0_0_0 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INITIALIZER__INITIAL_VALUES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer(), }, 0);
+ public final static JavaKeyword JAVA_36_0_0_2_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_36_0_0_2_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INITIALIZER__INITIAL_VALUES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer(), }, 0);
+ public final static JavaSequence JAVA_36_0_0_2_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_36_0_0_2_0_0_1_0_0_0, JAVA_36_0_0_2_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_36_0_0_2_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_36_0_0_2_0_0_1_0_0);
+ public final static JavaCompound JAVA_36_0_0_2_0_0_1 = new JavaCompound(JAVA_36_0_0_2_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_36_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_36_0_0_2_0_0_0, JAVA_36_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_36_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_36_0_0_2_0_0);
+ public final static JavaCompound JAVA_36_0_0_2 = new JavaCompound(JAVA_36_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_36_0_0_3_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_36_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_36_0_0_3_0_0_0);
+ public final static JavaChoice JAVA_36_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_36_0_0_3_0_0);
+ public final static JavaCompound JAVA_36_0_0_3 = new JavaCompound(JAVA_36_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_36_0_0_4 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_36_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_36_0_0_0, JAVA_36_0_0_1, JAVA_36_0_0_2, JAVA_36_0_0_3, JAVA_36_0_0_4);
+ public final static JavaChoice JAVA_36_0 = new JavaChoice(JavaCardinality.ONE, JAVA_36_0_0);
+ public final static JavaRule JAVA_36 = new JavaRule(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayInitializer(), JAVA_36_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_37_0_0_0 = new JavaKeyword("[", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_37_0_0_1 = new JavaContainment(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_SELECTOR__POSITION), JavaCardinality.QUESTIONMARK, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_37_0_0_2 = new JavaKeyword("]", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_37_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_37_0_0_0, JAVA_37_0_0_1, JAVA_37_0_0_2);
+ public final static JavaChoice JAVA_37_0 = new JavaChoice(JavaCardinality.ONE, JAVA_37_0_0);
+ public final static JavaRule JAVA_37 = new JavaRule(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector(), JAVA_37_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_38_0_0_0_0_0_0 = new JavaPlaceholder(org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.NAMESPACE_CLASSIFIER_REFERENCE__NAMESPACES), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_38_0_0_0_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_38_0_0_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_38_0_0_0_0_0_0, JAVA_38_0_0_0_0_0_1);
+ public final static JavaChoice JAVA_38_0_0_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_38_0_0_0_0_0);
+ public final static JavaCompound JAVA_38_0_0_0 = new JavaCompound(JAVA_38_0_0_0_0, JavaCardinality.STAR);
+ public final static JavaContainment JAVA_38_0_0_1_0_0_0 = new JavaContainment(org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getClassifierReference(), }, 1);
+ public final static JavaKeyword JAVA_38_0_0_1_0_0_1 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_38_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_38_0_0_1_0_0_0, JAVA_38_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_38_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_38_0_0_1_0_0);
+ public final static JavaCompound JAVA_38_0_0_1 = new JavaCompound(JAVA_38_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaContainment JAVA_38_0_0_2 = new JavaContainment(org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getClassifierReference(), }, 0);
+ public final static JavaSequence JAVA_38_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_38_0_0_0, JAVA_38_0_0_1, JAVA_38_0_0_2);
+ public final static JavaChoice JAVA_38_0 = new JavaChoice(JavaCardinality.ONE, JAVA_38_0_0);
+ public final static JavaRule JAVA_38 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getNamespaceClassifierReference(), JAVA_38_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_39_0_0_0 = new JavaPlaceholder(org.emftext.language.java.types.TypesPackage.eINSTANCE.getClassifierReference().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TARGET), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_39_0_0_1_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_39_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.types.TypesPackage.eINSTANCE.getClassifierReference().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_39_0_0_1_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_39_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.types.TypesPackage.eINSTANCE.getClassifierReference().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_39_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_39_0_0_1_0_0_2_0_0_0, JAVA_39_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_39_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_39_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_39_0_0_1_0_0_2 = new JavaCompound(JAVA_39_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_39_0_0_1_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_39_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_39_0_0_1_0_0_0, JAVA_39_0_0_1_0_0_1, JAVA_39_0_0_1_0_0_2, JAVA_39_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_39_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_39_0_0_1_0_0);
+ public final static JavaCompound JAVA_39_0_0_1 = new JavaCompound(JAVA_39_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_39_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_39_0_0_0, JAVA_39_0_0_1);
+ public final static JavaChoice JAVA_39_0 = new JavaChoice(JavaCardinality.ONE, JAVA_39_0_0);
+ public final static JavaRule JAVA_39 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getClassifierReference(), JAVA_39_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_40_0_0_0_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_0_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__CALL_TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_40_0_0_0_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_0_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__CALL_TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_40_0_0_0_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_0_0_0_2_0_0_0, JAVA_40_0_0_0_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_40_0_0_0_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0_0_0_0_2_0_0);
+ public final static JavaCompound JAVA_40_0_0_0_0_0_2 = new JavaCompound(JAVA_40_0_0_0_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_40_0_0_0_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_40_0_0_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_0_0_0_0, JAVA_40_0_0_0_0_0_1, JAVA_40_0_0_0_0_0_2, JAVA_40_0_0_0_0_0_3);
+ public final static JavaChoice JAVA_40_0_0_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0_0_0_0);
+ public final static JavaCompound JAVA_40_0_0_0 = new JavaCompound(JAVA_40_0_0_0_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaPlaceholder JAVA_40_0_0_1 = new JavaPlaceholder(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TARGET), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_40_0_0_2_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_40_0_0_2_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_2_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_40_0_0_2_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_2_0_0_2_0_0_0, JAVA_40_0_0_2_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_40_0_0_2_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0_2_0_0_2_0_0);
+ public final static JavaCompound JAVA_40_0_0_2_0_0_2 = new JavaCompound(JAVA_40_0_0_2_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_40_0_0_2_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_40_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_2_0_0_0, JAVA_40_0_0_2_0_0_1, JAVA_40_0_0_2_0_0_2, JAVA_40_0_0_2_0_0_3);
+ public final static JavaChoice JAVA_40_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0_2_0_0);
+ public final static JavaCompound JAVA_40_0_0_2 = new JavaCompound(JAVA_40_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_40_0_0_3 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_4_0_0_0 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_40_0_0_4_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_4_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_40_0_0_4_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_4_0_0_1_0_0_0, JAVA_40_0_0_4_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_40_0_0_4_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0_4_0_0_1_0_0);
+ public final static JavaCompound JAVA_40_0_0_4_0_0_1 = new JavaCompound(JAVA_40_0_0_4_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_40_0_0_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_4_0_0_0, JAVA_40_0_0_4_0_0_1);
+ public final static JavaChoice JAVA_40_0_0_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0_4_0_0);
+ public final static JavaCompound JAVA_40_0_0_4 = new JavaCompound(JAVA_40_0_0_4_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_40_0_0_5 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_6 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__ARRAY_SELECTORS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector(), }, 0);
+ public final static JavaKeyword JAVA_40_0_0_7_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_40_0_0_7_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_40_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_7_0_0_0, JAVA_40_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_40_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0_7_0_0);
+ public final static JavaCompound JAVA_40_0_0_7 = new JavaCompound(JAVA_40_0_0_7_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_40_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_40_0_0_0, JAVA_40_0_0_1, JAVA_40_0_0_2, JAVA_40_0_0_3, JAVA_40_0_0_4, JAVA_40_0_0_5, JAVA_40_0_0_6, JAVA_40_0_0_7);
+ public final static JavaChoice JAVA_40_0 = new JavaChoice(JavaCardinality.ONE, JAVA_40_0_0);
+ public final static JavaRule JAVA_40 = new JavaRule(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getMethodCall(), JAVA_40_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_41_0_0_0 = new JavaPlaceholder(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getIdentifierReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TARGET), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_41_0_0_1_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_41_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getIdentifierReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaKeyword JAVA_41_0_0_1_0_0_2_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_41_0_0_1_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getIdentifierReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TYPE_ARGUMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getTypeArgument(), }, 0);
+ public final static JavaSequence JAVA_41_0_0_1_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_41_0_0_1_0_0_2_0_0_0, JAVA_41_0_0_1_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_41_0_0_1_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_41_0_0_1_0_0_2_0_0);
+ public final static JavaCompound JAVA_41_0_0_1_0_0_2 = new JavaCompound(JAVA_41_0_0_1_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaKeyword JAVA_41_0_0_1_0_0_3 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_41_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_41_0_0_1_0_0_0, JAVA_41_0_0_1_0_0_1, JAVA_41_0_0_1_0_0_2, JAVA_41_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_41_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_41_0_0_1_0_0);
+ public final static JavaCompound JAVA_41_0_0_1 = new JavaCompound(JAVA_41_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_41_0_0_2 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getIdentifierReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__ARRAY_SELECTORS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector(), }, 0);
+ public final static JavaKeyword JAVA_41_0_0_3_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_41_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getIdentifierReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_41_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_41_0_0_3_0_0_0, JAVA_41_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_41_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_41_0_0_3_0_0);
+ public final static JavaCompound JAVA_41_0_0_3 = new JavaCompound(JAVA_41_0_0_3_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_41_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_41_0_0_0, JAVA_41_0_0_1, JAVA_41_0_0_2, JAVA_41_0_0_3);
+ public final static JavaChoice JAVA_41_0 = new JavaChoice(JavaCardinality.ONE, JAVA_41_0_0);
+ public final static JavaRule JAVA_41 = new JavaRule(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getIdentifierReference(), JAVA_41_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_42_0_0_0 = new JavaKeyword("class", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_42_0_0_1_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_42_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReflectiveClassReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.REFLECTIVE_CLASS_REFERENCE__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_42_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_42_0_0_1_0_0_0, JAVA_42_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_42_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_42_0_0_1_0_0);
+ public final static JavaCompound JAVA_42_0_0_1 = new JavaCompound(JAVA_42_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_42_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_42_0_0_0, JAVA_42_0_0_1);
+ public final static JavaChoice JAVA_42_0 = new JavaChoice(JavaCardinality.ONE, JAVA_42_0_0);
+ public final static JavaRule JAVA_42 = new JavaRule(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReflectiveClassReference(), JAVA_42_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_43_0_0_0 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getSelfReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.SELF_REFERENCE__SELF), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getSelf(), }, 0);
+ public final static JavaKeyword JAVA_43_0_0_1_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_43_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getSelfReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.SELF_REFERENCE__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_43_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_43_0_0_1_0_0_0, JAVA_43_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_43_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_43_0_0_1_0_0);
+ public final static JavaCompound JAVA_43_0_0_1 = new JavaCompound(JAVA_43_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_43_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_43_0_0_0, JAVA_43_0_0_1);
+ public final static JavaChoice JAVA_43_0 = new JavaChoice(JavaCardinality.ONE, JAVA_43_0_0);
+ public final static JavaRule JAVA_43 = new JavaRule(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getSelfReference(), JAVA_43_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_44_0_0_0 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getPrimitiveTypeReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getPrimitiveType(), }, 0);
+ public final static JavaContainment JAVA_44_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getPrimitiveTypeReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.PRIMITIVE_TYPE_REFERENCE__ARRAY_SELECTORS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector(), }, 0);
+ public final static JavaKeyword JAVA_44_0_0_2_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_44_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getPrimitiveTypeReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.PRIMITIVE_TYPE_REFERENCE__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_44_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_44_0_0_2_0_0_0, JAVA_44_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_44_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_44_0_0_2_0_0);
+ public final static JavaCompound JAVA_44_0_0_2 = new JavaCompound(JAVA_44_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_44_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_44_0_0_0, JAVA_44_0_0_1, JAVA_44_0_0_2);
+ public final static JavaChoice JAVA_44_0 = new JavaChoice(JavaCardinality.ONE, JAVA_44_0_0);
+ public final static JavaRule JAVA_44 = new JavaRule(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getPrimitiveTypeReference(), JAVA_44_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_45_0_0_0 = new JavaKeyword("this", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_45_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_45_0_0_0);
+ public final static JavaChoice JAVA_45_0 = new JavaChoice(JavaCardinality.ONE, JAVA_45_0_0);
+ public final static JavaRule JAVA_45 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getThis(), JAVA_45_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_46_0_0_0 = new JavaKeyword("super", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_46_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_46_0_0_0);
+ public final static JavaChoice JAVA_46_0 = new JavaChoice(JavaCardinality.ONE, JAVA_46_0_0);
+ public final static JavaRule JAVA_46 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getSuper(), JAVA_46_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_47_0_0_0 = new JavaPlaceholder(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getStringReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.STRING_REFERENCE__VALUE), "STRING_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_47_0_0_1_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_47_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getStringReference().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.STRING_REFERENCE__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_47_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_47_0_0_1_0_0_0, JAVA_47_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_47_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_47_0_0_1_0_0);
+ public final static JavaCompound JAVA_47_0_0_1 = new JavaCompound(JAVA_47_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_47_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_47_0_0_0, JAVA_47_0_0_1);
+ public final static JavaChoice JAVA_47_0 = new JavaChoice(JavaCardinality.ONE, JAVA_47_0_0);
+ public final static JavaRule JAVA_47 = new JavaRule(org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getStringReference(), JAVA_47_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_48_0_0_0 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getQualifiedTypeArgument().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.QUALIFIED_TYPE_ARGUMENT__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_48_0_0_1 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getQualifiedTypeArgument().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.QUALIFIED_TYPE_ARGUMENT__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_48_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_48_0_0_0, JAVA_48_0_0_1);
+ public final static JavaChoice JAVA_48_0 = new JavaChoice(JavaCardinality.ONE, JAVA_48_0_0);
+ public final static JavaRule JAVA_48 = new JavaRule(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getQualifiedTypeArgument(), JAVA_48_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_49_0_0_0 = new JavaKeyword("?", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_49_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_49_0_0_0);
+ public final static JavaChoice JAVA_49_0 = new JavaChoice(JavaCardinality.ONE, JAVA_49_0_0);
+ public final static JavaRule JAVA_49 = new JavaRule(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getUnknownTypeArgument(), JAVA_49_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_50_0_0_0 = new JavaKeyword("?", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_50_0_0_1 = new JavaKeyword("extends", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_50_0_0_2 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getExtendsTypeArgument().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaKeyword JAVA_50_0_0_3_0_0_0 = new JavaKeyword("&", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_50_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getExtendsTypeArgument().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaSequence JAVA_50_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_50_0_0_3_0_0_0, JAVA_50_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_50_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_50_0_0_3_0_0);
+ public final static JavaCompound JAVA_50_0_0_3 = new JavaCompound(JAVA_50_0_0_3_0, JavaCardinality.STAR);
+ public final static JavaContainment JAVA_50_0_0_4 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getExtendsTypeArgument().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.EXTENDS_TYPE_ARGUMENT__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_50_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_50_0_0_0, JAVA_50_0_0_1, JAVA_50_0_0_2, JAVA_50_0_0_3, JAVA_50_0_0_4);
+ public final static JavaChoice JAVA_50_0 = new JavaChoice(JavaCardinality.ONE, JAVA_50_0_0);
+ public final static JavaRule JAVA_50 = new JavaRule(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getExtendsTypeArgument(), JAVA_50_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_51_0_0_0 = new JavaKeyword("?", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_51_0_0_1 = new JavaKeyword("super", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_51_0_0_2 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getSuperTypeArgument().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.SUPER_TYPE_ARGUMENT__SUPER_TYPE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_51_0_0_3 = new JavaContainment(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getSuperTypeArgument().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.SUPER_TYPE_ARGUMENT__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_51_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_51_0_0_0, JAVA_51_0_0_1, JAVA_51_0_0_2, JAVA_51_0_0_3);
+ public final static JavaChoice JAVA_51_0 = new JavaChoice(JavaCardinality.ONE, JAVA_51_0_0);
+ public final static JavaRule JAVA_51 = new JavaRule(org.emftext.language.java.generics.GenericsPackage.eINSTANCE.getSuperTypeArgument(), JAVA_51_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_52_0_0_0 = new JavaKeyword("assert", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_52_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getAssert().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.ASSERT__CONDITION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_52_0_0_2_0_0_0 = new JavaKeyword(":", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_52_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getAssert().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.ASSERT__ERROR_MESSAGE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_52_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_52_0_0_2_0_0_0, JAVA_52_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_52_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_52_0_0_2_0_0);
+ public final static JavaCompound JAVA_52_0_0_2 = new JavaCompound(JAVA_52_0_0_2_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_52_0_0_3 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_52_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_52_0_0_0, JAVA_52_0_0_1, JAVA_52_0_0_2, JAVA_52_0_0_3);
+ public final static JavaChoice JAVA_52_0 = new JavaChoice(JavaCardinality.ONE, JAVA_52_0_0);
+ public final static JavaRule JAVA_52 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getAssert(), JAVA_52_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_53_0_0_0 = new JavaKeyword("if", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_53_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_53_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_53_0_0_3 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCondition().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONDITION__CONDITION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_53_0_0_4 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_53_0_0_5 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCondition().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONDITION__STATEMENT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaKeyword JAVA_53_0_0_6_0_0_0 = new JavaKeyword("else", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_53_0_0_6_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCondition().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONDITION__ELSE_STATEMENT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_53_0_0_6_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_53_0_0_6_0_0_0, JAVA_53_0_0_6_0_0_1);
+ public final static JavaChoice JAVA_53_0_0_6_0 = new JavaChoice(JavaCardinality.ONE, JAVA_53_0_0_6_0_0);
+ public final static JavaCompound JAVA_53_0_0_6 = new JavaCompound(JAVA_53_0_0_6_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_53_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_53_0_0_0, JAVA_53_0_0_1, JAVA_53_0_0_2, JAVA_53_0_0_3, JAVA_53_0_0_4, JAVA_53_0_0_5, JAVA_53_0_0_6);
+ public final static JavaChoice JAVA_53_0 = new JavaChoice(JavaCardinality.ONE, JAVA_53_0_0);
+ public final static JavaRule JAVA_53 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCondition(), JAVA_53_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_54_0_0_0 = new JavaKeyword("for", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_54_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_54_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_54_0_0_3 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__INIT), JavaCardinality.QUESTIONMARK, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForLoopInitializer(), }, 0);
+ public final static JavaKeyword JAVA_54_0_0_4 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_54_0_0_5 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__CONDITION), JavaCardinality.QUESTIONMARK, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_54_0_0_6 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_54_0_0_7_0_0_0 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__UPDATES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_54_0_0_7_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_54_0_0_7_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__UPDATES), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_54_0_0_7_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_54_0_0_7_0_0_1_0_0_0, JAVA_54_0_0_7_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_54_0_0_7_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_54_0_0_7_0_0_1_0_0);
+ public final static JavaCompound JAVA_54_0_0_7_0_0_1 = new JavaCompound(JAVA_54_0_0_7_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_54_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_54_0_0_7_0_0_0, JAVA_54_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_54_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_54_0_0_7_0_0);
+ public final static JavaCompound JAVA_54_0_0_7 = new JavaCompound(JAVA_54_0_0_7_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_54_0_0_8 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_54_0_0_9 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__STATEMENT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_54_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_54_0_0_0, JAVA_54_0_0_1, JAVA_54_0_0_2, JAVA_54_0_0_3, JAVA_54_0_0_4, JAVA_54_0_0_5, JAVA_54_0_0_6, JAVA_54_0_0_7, JAVA_54_0_0_8, JAVA_54_0_0_9);
+ public final static JavaChoice JAVA_54_0 = new JavaChoice(JavaCardinality.ONE, JAVA_54_0_0);
+ public final static JavaRule JAVA_54 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForLoop(), JAVA_54_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_55_0_0_0 = new JavaKeyword("for", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_55_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_55_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_55_0_0_3 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForEachLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_EACH_LOOP__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter(), }, 0);
+ public final static JavaKeyword JAVA_55_0_0_4 = new JavaKeyword(":", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_55_0_0_5 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForEachLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_EACH_LOOP__COLLECTION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_55_0_0_6 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_55_0_0_7 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForEachLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_EACH_LOOP__STATEMENT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_55_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_55_0_0_0, JAVA_55_0_0_1, JAVA_55_0_0_2, JAVA_55_0_0_3, JAVA_55_0_0_4, JAVA_55_0_0_5, JAVA_55_0_0_6, JAVA_55_0_0_7);
+ public final static JavaChoice JAVA_55_0 = new JavaChoice(JavaCardinality.ONE, JAVA_55_0_0);
+ public final static JavaRule JAVA_55 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getForEachLoop(), JAVA_55_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_56_0_0_0 = new JavaKeyword("while", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_56_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_56_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_56_0_0_3 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getWhileLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.WHILE_LOOP__CONDITION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_56_0_0_4 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_56_0_0_5 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getWhileLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.WHILE_LOOP__STATEMENT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_56_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_56_0_0_0, JAVA_56_0_0_1, JAVA_56_0_0_2, JAVA_56_0_0_3, JAVA_56_0_0_4, JAVA_56_0_0_5);
+ public final static JavaChoice JAVA_56_0 = new JavaChoice(JavaCardinality.ONE, JAVA_56_0_0);
+ public final static JavaRule JAVA_56 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getWhileLoop(), JAVA_56_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_57_0_0_0 = new JavaKeyword("do", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_57_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getDoWhileLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.DO_WHILE_LOOP__STATEMENT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaKeyword JAVA_57_0_0_2 = new JavaKeyword("while", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_57_0_0_3 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_57_0_0_4 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_57_0_0_5 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getDoWhileLoop().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.DO_WHILE_LOOP__CONDITION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_57_0_0_6 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_57_0_0_7 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_57_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_57_0_0_0, JAVA_57_0_0_1, JAVA_57_0_0_2, JAVA_57_0_0_3, JAVA_57_0_0_4, JAVA_57_0_0_5, JAVA_57_0_0_6, JAVA_57_0_0_7);
+ public final static JavaChoice JAVA_57_0 = new JavaChoice(JavaCardinality.ONE, JAVA_57_0_0);
+ public final static JavaRule JAVA_57 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getDoWhileLoop(), JAVA_57_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_58_0_0_0 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_58_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_58_0_0_0);
+ public final static JavaChoice JAVA_58_0 = new JavaChoice(JavaCardinality.ONE, JAVA_58_0_0);
+ public final static JavaRule JAVA_58 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getEmptyStatement(), JAVA_58_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_59_0_0_0 = new JavaKeyword("synchronized", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_59_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_59_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_59_0_0_3 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getSynchronizedBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.SYNCHRONIZED_BLOCK__LOCK_PROVIDER), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_59_0_0_4 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_59_0_0_5 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_59_0_0_6 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_59_0_0_7_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_59_0_0_7_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getSynchronizedBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.SYNCHRONIZED_BLOCK__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_59_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_59_0_0_7_0_0_0, JAVA_59_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_59_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_59_0_0_7_0_0);
+ public final static JavaCompound JAVA_59_0_0_7 = new JavaCompound(JAVA_59_0_0_7_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_59_0_0_8 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_59_0_0_9 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_59_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_59_0_0_0, JAVA_59_0_0_1, JAVA_59_0_0_2, JAVA_59_0_0_3, JAVA_59_0_0_4, JAVA_59_0_0_5, JAVA_59_0_0_6, JAVA_59_0_0_7, JAVA_59_0_0_8, JAVA_59_0_0_9);
+ public final static JavaChoice JAVA_59_0 = new JavaChoice(JavaCardinality.ONE, JAVA_59_0_0);
+ public final static JavaRule JAVA_59 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getSynchronizedBlock(), JAVA_59_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_60_0_0_0 = new JavaKeyword("try", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_60_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_60_0_0_2 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_60_0_0_3_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_60_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getTryBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.TRY_BLOCK__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_60_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_60_0_0_3_0_0_0, JAVA_60_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_60_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_60_0_0_3_0_0);
+ public final static JavaCompound JAVA_60_0_0_3 = new JavaCompound(JAVA_60_0_0_3_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_60_0_0_4 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_60_0_0_5 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_60_0_0_6 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getTryBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.TRY_BLOCK__CATCHE_BLOCKS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCatchBlock(), }, 0);
+ public final static JavaKeyword JAVA_60_0_0_7_0_0_0 = new JavaKeyword("finally", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_60_0_0_7_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getTryBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.TRY_BLOCK__FINALLY_BLOCK), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getBlock(), }, 0);
+ public final static JavaSequence JAVA_60_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_60_0_0_7_0_0_0, JAVA_60_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_60_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_60_0_0_7_0_0);
+ public final static JavaCompound JAVA_60_0_0_7 = new JavaCompound(JAVA_60_0_0_7_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_60_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_60_0_0_0, JAVA_60_0_0_1, JAVA_60_0_0_2, JAVA_60_0_0_3, JAVA_60_0_0_4, JAVA_60_0_0_5, JAVA_60_0_0_6, JAVA_60_0_0_7);
+ public final static JavaChoice JAVA_60_0 = new JavaChoice(JavaCardinality.ONE, JAVA_60_0_0);
+ public final static JavaRule JAVA_60 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getTryBlock(), JAVA_60_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_61_0_0_0 = new JavaKeyword("catch", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_61_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_61_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_61_0_0_3 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCatchBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CATCH_BLOCK__PARAMETER), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.parameters.ParametersPackage.eINSTANCE.getOrdinaryParameter(), }, 0);
+ public final static JavaKeyword JAVA_61_0_0_4 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_61_0_0_5 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_61_0_0_6 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_61_0_0_7_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_61_0_0_7_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCatchBlock().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CATCH_BLOCK__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_61_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_61_0_0_7_0_0_0, JAVA_61_0_0_7_0_0_1);
+ public final static JavaChoice JAVA_61_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_61_0_0_7_0_0);
+ public final static JavaCompound JAVA_61_0_0_7 = new JavaCompound(JAVA_61_0_0_7_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_61_0_0_8 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_61_0_0_9 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_61_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_61_0_0_0, JAVA_61_0_0_1, JAVA_61_0_0_2, JAVA_61_0_0_3, JAVA_61_0_0_4, JAVA_61_0_0_5, JAVA_61_0_0_6, JAVA_61_0_0_7, JAVA_61_0_0_8, JAVA_61_0_0_9);
+ public final static JavaChoice JAVA_61_0 = new JavaChoice(JavaCardinality.ONE, JAVA_61_0_0);
+ public final static JavaRule JAVA_61 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getCatchBlock(), JAVA_61_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_62_0_0_0 = new JavaKeyword("switch", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_62_0_0_1 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_62_0_0_2 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_62_0_0_3 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getSwitch().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.SWITCH__VARIABLE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_62_0_0_4 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_62_0_0_5 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_62_0_0_6 = new JavaKeyword("{", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_62_0_0_7_0_0_0 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getSwitch().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.SWITCH__CASES), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getSwitchCase(), }, 0);
+ public final static JavaSequence JAVA_62_0_0_7_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_62_0_0_7_0_0_0);
+ public final static JavaChoice JAVA_62_0_0_7_0 = new JavaChoice(JavaCardinality.ONE, JAVA_62_0_0_7_0_0);
+ public final static JavaCompound JAVA_62_0_0_7 = new JavaCompound(JAVA_62_0_0_7_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_62_0_0_8 = new JavaKeyword("}", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_62_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_62_0_0_0, JAVA_62_0_0_1, JAVA_62_0_0_2, JAVA_62_0_0_3, JAVA_62_0_0_4, JAVA_62_0_0_5, JAVA_62_0_0_6, JAVA_62_0_0_7, JAVA_62_0_0_8);
+ public final static JavaChoice JAVA_62_0 = new JavaChoice(JavaCardinality.ONE, JAVA_62_0_0);
+ public final static JavaRule JAVA_62 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getSwitch(), JAVA_62_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_63_0_0_0 = new JavaKeyword("case", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_63_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getNormalSwitchCase().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.NORMAL_SWITCH_CASE__CONDITION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_63_0_0_2 = new JavaKeyword(":", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_63_0_0_3_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_63_0_0_3_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getNormalSwitchCase().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.NORMAL_SWITCH_CASE__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_63_0_0_3_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_63_0_0_3_0_0_0, JAVA_63_0_0_3_0_0_1);
+ public final static JavaChoice JAVA_63_0_0_3_0 = new JavaChoice(JavaCardinality.ONE, JAVA_63_0_0_3_0_0);
+ public final static JavaCompound JAVA_63_0_0_3 = new JavaCompound(JAVA_63_0_0_3_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_63_0_0_4 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_63_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_63_0_0_0, JAVA_63_0_0_1, JAVA_63_0_0_2, JAVA_63_0_0_3, JAVA_63_0_0_4);
+ public final static JavaChoice JAVA_63_0 = new JavaChoice(JavaCardinality.ONE, JAVA_63_0_0);
+ public final static JavaRule JAVA_63 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getNormalSwitchCase(), JAVA_63_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_64_0_0_0 = new JavaKeyword("default", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_64_0_0_1 = new JavaKeyword(":", JavaCardinality.ONE);
+ public final static JavaLineBreak JAVA_64_0_0_2_0_0_0 = new JavaLineBreak(JavaCardinality.ONE, 1);
+ public final static JavaContainment JAVA_64_0_0_2_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getDefaultSwitchCase().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.DEFAULT_SWITCH_CASE__STATEMENTS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_64_0_0_2_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_64_0_0_2_0_0_0, JAVA_64_0_0_2_0_0_1);
+ public final static JavaChoice JAVA_64_0_0_2_0 = new JavaChoice(JavaCardinality.ONE, JAVA_64_0_0_2_0_0);
+ public final static JavaCompound JAVA_64_0_0_2 = new JavaCompound(JAVA_64_0_0_2_0, JavaCardinality.STAR);
+ public final static JavaLineBreak JAVA_64_0_0_3 = new JavaLineBreak(JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_64_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_64_0_0_0, JAVA_64_0_0_1, JAVA_64_0_0_2, JAVA_64_0_0_3);
+ public final static JavaChoice JAVA_64_0 = new JavaChoice(JavaCardinality.ONE, JAVA_64_0_0);
+ public final static JavaRule JAVA_64 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getDefaultSwitchCase(), JAVA_64_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_65_0_0_0 = new JavaKeyword("return", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_65_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getReturn().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.RETURN__RETURN_VALUE), JavaCardinality.QUESTIONMARK, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_65_0_0_2 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_65_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_65_0_0_0, JAVA_65_0_0_1, JAVA_65_0_0_2);
+ public final static JavaChoice JAVA_65_0 = new JavaChoice(JavaCardinality.ONE, JAVA_65_0_0);
+ public final static JavaRule JAVA_65 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getReturn(), JAVA_65_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_66_0_0_0 = new JavaKeyword("throw", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_66_0_0_1 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getThrow().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.THROW__THROWABLE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_66_0_0_2 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_66_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_66_0_0_0, JAVA_66_0_0_1, JAVA_66_0_0_2);
+ public final static JavaChoice JAVA_66_0 = new JavaChoice(JavaCardinality.ONE, JAVA_66_0_0);
+ public final static JavaRule JAVA_66 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getThrow(), JAVA_66_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_67_0_0_0 = new JavaKeyword("break", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_67_0_0_1_0_0_0 = new JavaPlaceholder(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getBreak().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.BREAK__TARGET), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_67_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_67_0_0_1_0_0_0);
+ public final static JavaChoice JAVA_67_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_67_0_0_1_0_0);
+ public final static JavaCompound JAVA_67_0_0_1 = new JavaCompound(JAVA_67_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_67_0_0_2 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_67_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_67_0_0_0, JAVA_67_0_0_1, JAVA_67_0_0_2);
+ public final static JavaChoice JAVA_67_0 = new JavaChoice(JavaCardinality.ONE, JAVA_67_0_0);
+ public final static JavaRule JAVA_67 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getBreak(), JAVA_67_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_68_0_0_0 = new JavaKeyword("continue", JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_68_0_0_1_0_0_0 = new JavaPlaceholder(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getContinue().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONTINUE__TARGET), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_68_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_68_0_0_1_0_0_0);
+ public final static JavaChoice JAVA_68_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_68_0_0_1_0_0);
+ public final static JavaCompound JAVA_68_0_0_1 = new JavaCompound(JAVA_68_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaKeyword JAVA_68_0_0_2 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_68_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_68_0_0_0, JAVA_68_0_0_1, JAVA_68_0_0_2);
+ public final static JavaChoice JAVA_68_0 = new JavaChoice(JavaCardinality.ONE, JAVA_68_0_0);
+ public final static JavaRule JAVA_68 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getContinue(), JAVA_68_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_69_0_0_0 = new JavaPlaceholder(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getJumpLabel().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.JUMP_LABEL__NAME), "IDENTIFIER", JavaCardinality.ONE, 0);
+ public final static JavaKeyword JAVA_69_0_0_1 = new JavaKeyword(":", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_69_0_0_2 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getJumpLabel().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.JUMP_LABEL__STATEMENT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getStatement(), }, 0);
+ public final static JavaSequence JAVA_69_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_69_0_0_0, JAVA_69_0_0_1, JAVA_69_0_0_2);
+ public final static JavaChoice JAVA_69_0 = new JavaChoice(JavaCardinality.ONE, JAVA_69_0_0);
+ public final static JavaRule JAVA_69 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getJumpLabel(), JAVA_69_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_70_0_0_0 = new JavaContainment(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getExpressionStatement().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.EXPRESSION_STATEMENT__EXPRESSION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_70_0_0_1 = new JavaKeyword(";", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_70_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_70_0_0_0, JAVA_70_0_0_1);
+ public final static JavaChoice JAVA_70_0 = new JavaChoice(JavaCardinality.ONE, JAVA_70_0_0);
+ public final static JavaRule JAVA_70 = new JavaRule(org.emftext.language.java.statements.StatementsPackage.eINSTANCE.getExpressionStatement(), JAVA_70_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_71_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExpressionList().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.EXPRESSION_LIST__EXPRESSIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_71_0_0_1_0_0_0 = new JavaKeyword(",", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_71_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExpressionList().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.EXPRESSION_LIST__EXPRESSIONS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_71_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_71_0_0_1_0_0_0, JAVA_71_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_71_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_71_0_0_1_0_0);
+ public final static JavaCompound JAVA_71_0_0_1 = new JavaCompound(JAVA_71_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_71_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_71_0_0_0, JAVA_71_0_0_1);
+ public final static JavaChoice JAVA_71_0 = new JavaChoice(JavaCardinality.ONE, JAVA_71_0_0);
+ public final static JavaRule JAVA_71 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExpressionList(), JAVA_71_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_72_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ASSIGNMENT_EXPRESSION__CHILD), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression(), }, 0);
+ public final static JavaWhiteSpace JAVA_72_0_0_1_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_72_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ASSIGNMENT_EXPRESSION__ASSIGNMENT_OPERATOR), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentOperator(), }, 0);
+ public final static JavaWhiteSpace JAVA_72_0_0_1_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_72_0_0_1_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ASSIGNMENT_EXPRESSION__VALUE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaSequence JAVA_72_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_72_0_0_1_0_0_0, JAVA_72_0_0_1_0_0_1, JAVA_72_0_0_1_0_0_2, JAVA_72_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_72_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_72_0_0_1_0_0);
+ public final static JavaCompound JAVA_72_0_0_1 = new JavaCompound(JAVA_72_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_72_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_72_0_0_0, JAVA_72_0_0_1);
+ public final static JavaChoice JAVA_72_0 = new JavaChoice(JavaCardinality.ONE, JAVA_72_0_0);
+ public final static JavaRule JAVA_72 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), JAVA_72_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_73_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_EXPRESSION__CHILD), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalOrExpression(), }, 0);
+ public final static JavaKeyword JAVA_73_0_0_1_0_0_0 = new JavaKeyword("?", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_73_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_EXPRESSION__EXPRESSION_IF), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_73_0_0_1_0_0_2 = new JavaKeyword(":", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_73_0_0_1_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_EXPRESSION__EXPRESSION_ELSE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression(), }, 0);
+ public final static JavaSequence JAVA_73_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_73_0_0_1_0_0_0, JAVA_73_0_0_1_0_0_1, JAVA_73_0_0_1_0_0_2, JAVA_73_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_73_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_73_0_0_1_0_0);
+ public final static JavaCompound JAVA_73_0_0_1 = new JavaCompound(JAVA_73_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_73_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_73_0_0_0, JAVA_73_0_0_1);
+ public final static JavaChoice JAVA_73_0 = new JavaChoice(JavaCardinality.ONE, JAVA_73_0_0);
+ public final static JavaRule JAVA_73 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalExpression(), JAVA_73_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_74_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalOrExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_OR_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalAndExpression(), }, 0);
+ public final static JavaKeyword JAVA_74_0_0_1_0_0_0 = new JavaKeyword("||", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_74_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalOrExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_OR_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalAndExpression(), }, 0);
+ public final static JavaSequence JAVA_74_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_74_0_0_1_0_0_0, JAVA_74_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_74_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_74_0_0_1_0_0);
+ public final static JavaCompound JAVA_74_0_0_1 = new JavaCompound(JAVA_74_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_74_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_74_0_0_0, JAVA_74_0_0_1);
+ public final static JavaChoice JAVA_74_0 = new JavaChoice(JavaCardinality.ONE, JAVA_74_0_0);
+ public final static JavaRule JAVA_74 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalOrExpression(), JAVA_74_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_75_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalAndExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_AND_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInclusiveOrExpression(), }, 0);
+ public final static JavaKeyword JAVA_75_0_0_1_0_0_0 = new JavaKeyword("&&", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_75_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalAndExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_AND_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInclusiveOrExpression(), }, 0);
+ public final static JavaSequence JAVA_75_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_75_0_0_1_0_0_0, JAVA_75_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_75_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_75_0_0_1_0_0);
+ public final static JavaCompound JAVA_75_0_0_1 = new JavaCompound(JAVA_75_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_75_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_75_0_0_0, JAVA_75_0_0_1);
+ public final static JavaChoice JAVA_75_0 = new JavaChoice(JavaCardinality.ONE, JAVA_75_0_0);
+ public final static JavaRule JAVA_75 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getConditionalAndExpression(), JAVA_75_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_76_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInclusiveOrExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.INCLUSIVE_OR_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExclusiveOrExpression(), }, 0);
+ public final static JavaKeyword JAVA_76_0_0_1_0_0_0 = new JavaKeyword("|", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_76_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInclusiveOrExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.INCLUSIVE_OR_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExclusiveOrExpression(), }, 0);
+ public final static JavaSequence JAVA_76_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_76_0_0_1_0_0_0, JAVA_76_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_76_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_76_0_0_1_0_0);
+ public final static JavaCompound JAVA_76_0_0_1 = new JavaCompound(JAVA_76_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_76_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_76_0_0_0, JAVA_76_0_0_1);
+ public final static JavaChoice JAVA_76_0 = new JavaChoice(JavaCardinality.ONE, JAVA_76_0_0);
+ public final static JavaRule JAVA_76 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInclusiveOrExpression(), JAVA_76_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_77_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExclusiveOrExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.EXCLUSIVE_OR_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAndExpression(), }, 0);
+ public final static JavaKeyword JAVA_77_0_0_1_0_0_0 = new JavaKeyword("^", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_77_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExclusiveOrExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.EXCLUSIVE_OR_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAndExpression(), }, 0);
+ public final static JavaSequence JAVA_77_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_77_0_0_1_0_0_0, JAVA_77_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_77_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_77_0_0_1_0_0);
+ public final static JavaCompound JAVA_77_0_0_1 = new JavaCompound(JAVA_77_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_77_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_77_0_0_0, JAVA_77_0_0_1);
+ public final static JavaChoice JAVA_77_0 = new JavaChoice(JavaCardinality.ONE, JAVA_77_0_0);
+ public final static JavaRule JAVA_77 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getExclusiveOrExpression(), JAVA_77_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_78_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAndExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.AND_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getEqualityExpression(), }, 0);
+ public final static JavaKeyword JAVA_78_0_0_1_0_0_0 = new JavaKeyword("&", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_78_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAndExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.AND_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getEqualityExpression(), }, 0);
+ public final static JavaSequence JAVA_78_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_78_0_0_1_0_0_0, JAVA_78_0_0_1_0_0_1);
+ public final static JavaChoice JAVA_78_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_78_0_0_1_0_0);
+ public final static JavaCompound JAVA_78_0_0_1 = new JavaCompound(JAVA_78_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_78_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_78_0_0_0, JAVA_78_0_0_1);
+ public final static JavaChoice JAVA_78_0 = new JavaChoice(JavaCardinality.ONE, JAVA_78_0_0);
+ public final static JavaRule JAVA_78 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAndExpression(), JAVA_78_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_79_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getEqualityExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.EQUALITY_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInstanceOfExpression(), }, 0);
+ public final static JavaWhiteSpace JAVA_79_0_0_1_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_79_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getEqualityExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.EQUALITY_EXPRESSION__EQUALITY_OPERATORS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getEqualityOperator(), }, 0);
+ public final static JavaWhiteSpace JAVA_79_0_0_1_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_79_0_0_1_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getEqualityExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.EQUALITY_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInstanceOfExpression(), }, 0);
+ public final static JavaSequence JAVA_79_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_79_0_0_1_0_0_0, JAVA_79_0_0_1_0_0_1, JAVA_79_0_0_1_0_0_2, JAVA_79_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_79_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_79_0_0_1_0_0);
+ public final static JavaCompound JAVA_79_0_0_1 = new JavaCompound(JAVA_79_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_79_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_79_0_0_0, JAVA_79_0_0_1);
+ public final static JavaChoice JAVA_79_0 = new JavaChoice(JavaCardinality.ONE, JAVA_79_0_0);
+ public final static JavaRule JAVA_79 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getEqualityExpression(), JAVA_79_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_80_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInstanceOfExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.INSTANCE_OF_EXPRESSION__CHILD), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getRelationExpression(), }, 0);
+ public final static JavaKeyword JAVA_80_0_0_1_0_0_0 = new JavaKeyword("instanceof", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_80_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInstanceOfExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.INSTANCE_OF_EXPRESSION__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_80_0_0_1_0_0_2 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInstanceOfExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.INSTANCE_OF_EXPRESSION__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaSequence JAVA_80_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_80_0_0_1_0_0_0, JAVA_80_0_0_1_0_0_1, JAVA_80_0_0_1_0_0_2);
+ public final static JavaChoice JAVA_80_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_80_0_0_1_0_0);
+ public final static JavaCompound JAVA_80_0_0_1 = new JavaCompound(JAVA_80_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_80_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_80_0_0_0, JAVA_80_0_0_1);
+ public final static JavaChoice JAVA_80_0 = new JavaChoice(JavaCardinality.ONE, JAVA_80_0_0);
+ public final static JavaRule JAVA_80 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getInstanceOfExpression(), JAVA_80_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_81_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getRelationExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.RELATION_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getShiftExpression(), }, 0);
+ public final static JavaWhiteSpace JAVA_81_0_0_1_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_81_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getRelationExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.RELATION_EXPRESSION__RELATION_OPERATORS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getRelationOperator(), }, 0);
+ public final static JavaWhiteSpace JAVA_81_0_0_1_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_81_0_0_1_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getRelationExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.RELATION_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getShiftExpression(), }, 0);
+ public final static JavaSequence JAVA_81_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_81_0_0_1_0_0_0, JAVA_81_0_0_1_0_0_1, JAVA_81_0_0_1_0_0_2, JAVA_81_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_81_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_81_0_0_1_0_0);
+ public final static JavaCompound JAVA_81_0_0_1 = new JavaCompound(JAVA_81_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_81_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_81_0_0_0, JAVA_81_0_0_1);
+ public final static JavaChoice JAVA_81_0 = new JavaChoice(JavaCardinality.ONE, JAVA_81_0_0);
+ public final static JavaRule JAVA_81 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getRelationExpression(), JAVA_81_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_82_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getShiftExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.SHIFT_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAdditiveExpression(), }, 0);
+ public final static JavaWhiteSpace JAVA_82_0_0_1_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_82_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getShiftExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.SHIFT_EXPRESSION__SHIFT_OPERATORS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getShiftOperator(), }, 0);
+ public final static JavaWhiteSpace JAVA_82_0_0_1_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_82_0_0_1_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getShiftExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.SHIFT_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAdditiveExpression(), }, 0);
+ public final static JavaSequence JAVA_82_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_82_0_0_1_0_0_0, JAVA_82_0_0_1_0_0_1, JAVA_82_0_0_1_0_0_2, JAVA_82_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_82_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_82_0_0_1_0_0);
+ public final static JavaCompound JAVA_82_0_0_1 = new JavaCompound(JAVA_82_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_82_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_82_0_0_0, JAVA_82_0_0_1);
+ public final static JavaChoice JAVA_82_0 = new JavaChoice(JavaCardinality.ONE, JAVA_82_0_0);
+ public final static JavaRule JAVA_82 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getShiftExpression(), JAVA_82_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_83_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAdditiveExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ADDITIVE_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getMultiplicativeExpression(), }, 0);
+ public final static JavaWhiteSpace JAVA_83_0_0_1_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_83_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAdditiveExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAdditiveOperator(), }, 0);
+ public final static JavaWhiteSpace JAVA_83_0_0_1_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_83_0_0_1_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAdditiveExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ADDITIVE_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getMultiplicativeExpression(), }, 0);
+ public final static JavaSequence JAVA_83_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_83_0_0_1_0_0_0, JAVA_83_0_0_1_0_0_1, JAVA_83_0_0_1_0_0_2, JAVA_83_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_83_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_83_0_0_1_0_0);
+ public final static JavaCompound JAVA_83_0_0_1 = new JavaCompound(JAVA_83_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_83_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_83_0_0_0, JAVA_83_0_0_1);
+ public final static JavaChoice JAVA_83_0 = new JavaChoice(JavaCardinality.ONE, JAVA_83_0_0);
+ public final static JavaRule JAVA_83 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAdditiveExpression(), JAVA_83_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_84_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getMultiplicativeExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.MULTIPLICATIVE_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryExpression(), }, 0);
+ public final static JavaWhiteSpace JAVA_84_0_0_1_0_0_0 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_84_0_0_1_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getMultiplicativeExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getMultiplicativeOperator(), }, 0);
+ public final static JavaWhiteSpace JAVA_84_0_0_1_0_0_2 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_84_0_0_1_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getMultiplicativeExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.MULTIPLICATIVE_EXPRESSION__CHILDREN), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryExpression(), }, 0);
+ public final static JavaSequence JAVA_84_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_84_0_0_1_0_0_0, JAVA_84_0_0_1_0_0_1, JAVA_84_0_0_1_0_0_2, JAVA_84_0_0_1_0_0_3);
+ public final static JavaChoice JAVA_84_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_84_0_0_1_0_0);
+ public final static JavaCompound JAVA_84_0_0_1 = new JavaCompound(JAVA_84_0_0_1_0, JavaCardinality.STAR);
+ public final static JavaSequence JAVA_84_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_84_0_0_0, JAVA_84_0_0_1);
+ public final static JavaChoice JAVA_84_0 = new JavaChoice(JavaCardinality.ONE, JAVA_84_0_0);
+ public final static JavaRule JAVA_84 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getMultiplicativeExpression(), JAVA_84_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_85_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.UNARY_EXPRESSION__OPERATORS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getUnaryOperator(), }, 0);
+ public final static JavaContainment JAVA_85_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.UNARY_EXPRESSION__CHILD), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryModificationExpression(), }, 0);
+ public final static JavaSequence JAVA_85_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_85_0_0_0, JAVA_85_0_0_1);
+ public final static JavaChoice JAVA_85_0 = new JavaChoice(JavaCardinality.ONE, JAVA_85_0_0);
+ public final static JavaRule JAVA_85 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryExpression(), JAVA_85_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_86_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getSuffixUnaryModificationExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.SUFFIX_UNARY_MODIFICATION_EXPRESSION__CHILD), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryModificationExpressionChild(), }, 0);
+ public final static JavaContainment JAVA_86_0_0_1_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getSuffixUnaryModificationExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.SUFFIX_UNARY_MODIFICATION_EXPRESSION__OPERATOR), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getUnaryModificationOperator(), }, 0);
+ public final static JavaSequence JAVA_86_0_0_1_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_86_0_0_1_0_0_0);
+ public final static JavaChoice JAVA_86_0_0_1_0 = new JavaChoice(JavaCardinality.ONE, JAVA_86_0_0_1_0_0);
+ public final static JavaCompound JAVA_86_0_0_1 = new JavaCompound(JAVA_86_0_0_1_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_86_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_86_0_0_0, JAVA_86_0_0_1);
+ public final static JavaChoice JAVA_86_0 = new JavaChoice(JavaCardinality.ONE, JAVA_86_0_0);
+ public final static JavaRule JAVA_86 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getSuffixUnaryModificationExpression(), JAVA_86_0, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_87_0_0_0_0_0_0 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getPrefixUnaryModificationExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.PREFIX_UNARY_MODIFICATION_EXPRESSION__OPERATOR), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getUnaryModificationOperator(), }, 0);
+ public final static JavaSequence JAVA_87_0_0_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_87_0_0_0_0_0_0);
+ public final static JavaChoice JAVA_87_0_0_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_87_0_0_0_0_0);
+ public final static JavaCompound JAVA_87_0_0_0 = new JavaCompound(JAVA_87_0_0_0_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaContainment JAVA_87_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getPrefixUnaryModificationExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.PREFIX_UNARY_MODIFICATION_EXPRESSION__CHILD), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryModificationExpressionChild(), }, 0);
+ public final static JavaSequence JAVA_87_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_87_0_0_0, JAVA_87_0_0_1);
+ public final static JavaChoice JAVA_87_0 = new JavaChoice(JavaCardinality.ONE, JAVA_87_0_0);
+ public final static JavaRule JAVA_87 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getPrefixUnaryModificationExpression(), JAVA_87_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_88_0_0_0 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_88_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getCastExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CAST_EXPRESSION__TYPE_REFERENCE), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.types.TypesPackage.eINSTANCE.getTypeReference(), }, 0);
+ public final static JavaContainment JAVA_88_0_0_2 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getCastExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CAST_EXPRESSION__ARRAY_DIMENSIONS_BEFORE), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), }, 0);
+ public final static JavaKeyword JAVA_88_0_0_3 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaWhiteSpace JAVA_88_0_0_4 = new JavaWhiteSpace(1, JavaCardinality.ONE);
+ public final static JavaContainment JAVA_88_0_0_5 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getCastExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CAST_EXPRESSION__CHILD), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getUnaryExpression(), }, 0);
+ public final static JavaSequence JAVA_88_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_88_0_0_0, JAVA_88_0_0_1, JAVA_88_0_0_2, JAVA_88_0_0_3, JAVA_88_0_0_4, JAVA_88_0_0_5);
+ public final static JavaChoice JAVA_88_0 = new JavaChoice(JavaCardinality.ONE, JAVA_88_0_0);
+ public final static JavaRule JAVA_88 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getCastExpression(), JAVA_88_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_89_0_0_0 = new JavaKeyword("(", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_89_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getNestedExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.NESTED_EXPRESSION__EXPRESSION), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getAssignmentExpression(), }, 0);
+ public final static JavaKeyword JAVA_89_0_0_2 = new JavaKeyword(")", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_89_0_0_3 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getNestedExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.NESTED_EXPRESSION__ARRAY_SELECTORS), JavaCardinality.STAR, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArraySelector(), }, 0);
+ public final static JavaKeyword JAVA_89_0_0_4_0_0_0 = new JavaKeyword(".", JavaCardinality.ONE);
+ public final static JavaContainment JAVA_89_0_0_4_0_0_1 = new JavaContainment(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getNestedExpression().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.NESTED_EXPRESSION__NEXT), JavaCardinality.ONE, new org.eclipse.emf.ecore.EClass[] {org.emftext.language.java.references.ReferencesPackage.eINSTANCE.getReference(), }, 0);
+ public final static JavaSequence JAVA_89_0_0_4_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_89_0_0_4_0_0_0, JAVA_89_0_0_4_0_0_1);
+ public final static JavaChoice JAVA_89_0_0_4_0 = new JavaChoice(JavaCardinality.ONE, JAVA_89_0_0_4_0_0);
+ public final static JavaCompound JAVA_89_0_0_4 = new JavaCompound(JAVA_89_0_0_4_0, JavaCardinality.QUESTIONMARK);
+ public final static JavaSequence JAVA_89_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_89_0_0_0, JAVA_89_0_0_1, JAVA_89_0_0_2, JAVA_89_0_0_3, JAVA_89_0_0_4);
+ public final static JavaChoice JAVA_89_0 = new JavaChoice(JavaCardinality.ONE, JAVA_89_0_0);
+ public final static JavaRule JAVA_89 = new JavaRule(org.emftext.language.java.expressions.ExpressionsPackage.eINSTANCE.getNestedExpression(), JAVA_89_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_90_0_0_0 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_90_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_90_0_0_0);
+ public final static JavaChoice JAVA_90_0 = new JavaChoice(JavaCardinality.ONE, JAVA_90_0_0);
+ public final static JavaRule JAVA_90 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignment(), JAVA_90_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_91_0_0_0 = new JavaKeyword("+=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_91_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_91_0_0_0);
+ public final static JavaChoice JAVA_91_0 = new JavaChoice(JavaCardinality.ONE, JAVA_91_0_0);
+ public final static JavaRule JAVA_91 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentPlus(), JAVA_91_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_92_0_0_0 = new JavaKeyword("-=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_92_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_92_0_0_0);
+ public final static JavaChoice JAVA_92_0 = new JavaChoice(JavaCardinality.ONE, JAVA_92_0_0);
+ public final static JavaRule JAVA_92 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentMinus(), JAVA_92_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_93_0_0_0 = new JavaKeyword("*=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_93_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_93_0_0_0);
+ public final static JavaChoice JAVA_93_0 = new JavaChoice(JavaCardinality.ONE, JAVA_93_0_0);
+ public final static JavaRule JAVA_93 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentMultiplication(), JAVA_93_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_94_0_0_0 = new JavaKeyword("/=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_94_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_94_0_0_0);
+ public final static JavaChoice JAVA_94_0 = new JavaChoice(JavaCardinality.ONE, JAVA_94_0_0);
+ public final static JavaRule JAVA_94 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentDivision(), JAVA_94_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_95_0_0_0 = new JavaKeyword("&=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_95_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_95_0_0_0);
+ public final static JavaChoice JAVA_95_0 = new JavaChoice(JavaCardinality.ONE, JAVA_95_0_0);
+ public final static JavaRule JAVA_95 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentAnd(), JAVA_95_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_96_0_0_0 = new JavaKeyword("|=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_96_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_96_0_0_0);
+ public final static JavaChoice JAVA_96_0 = new JavaChoice(JavaCardinality.ONE, JAVA_96_0_0);
+ public final static JavaRule JAVA_96 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentOr(), JAVA_96_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_97_0_0_0 = new JavaKeyword("^=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_97_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_97_0_0_0);
+ public final static JavaChoice JAVA_97_0 = new JavaChoice(JavaCardinality.ONE, JAVA_97_0_0);
+ public final static JavaRule JAVA_97 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentExclusiveOr(), JAVA_97_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_98_0_0_0 = new JavaKeyword("%=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_98_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_98_0_0_0);
+ public final static JavaChoice JAVA_98_0 = new JavaChoice(JavaCardinality.ONE, JAVA_98_0_0);
+ public final static JavaRule JAVA_98 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentModulo(), JAVA_98_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_99_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_99_0_0_1 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_99_0_0_2 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_99_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_99_0_0_0, JAVA_99_0_0_1, JAVA_99_0_0_2);
+ public final static JavaChoice JAVA_99_0 = new JavaChoice(JavaCardinality.ONE, JAVA_99_0_0);
+ public final static JavaRule JAVA_99 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentLeftShift(), JAVA_99_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_100_0_0_0 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_100_0_0_1 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_100_0_0_2 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_100_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_100_0_0_0, JAVA_100_0_0_1, JAVA_100_0_0_2);
+ public final static JavaChoice JAVA_100_0 = new JavaChoice(JavaCardinality.ONE, JAVA_100_0_0);
+ public final static JavaRule JAVA_100 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentRightShift(), JAVA_100_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_101_0_0_0 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_101_0_0_1 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_101_0_0_2 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_101_0_0_3 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_101_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_101_0_0_0, JAVA_101_0_0_1, JAVA_101_0_0_2, JAVA_101_0_0_3);
+ public final static JavaChoice JAVA_101_0 = new JavaChoice(JavaCardinality.ONE, JAVA_101_0_0);
+ public final static JavaRule JAVA_101 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAssignmentUnsignedRightShift(), JAVA_101_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_102_0_0_0 = new JavaKeyword("+", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_102_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_102_0_0_0);
+ public final static JavaChoice JAVA_102_0 = new JavaChoice(JavaCardinality.ONE, JAVA_102_0_0);
+ public final static JavaRule JAVA_102 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getAddition(), JAVA_102_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_103_0_0_0 = new JavaKeyword("-", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_103_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_103_0_0_0);
+ public final static JavaChoice JAVA_103_0 = new JavaChoice(JavaCardinality.ONE, JAVA_103_0_0);
+ public final static JavaRule JAVA_103 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getSubtraction(), JAVA_103_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_104_0_0_0 = new JavaKeyword("*", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_104_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_104_0_0_0);
+ public final static JavaChoice JAVA_104_0 = new JavaChoice(JavaCardinality.ONE, JAVA_104_0_0);
+ public final static JavaRule JAVA_104 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getMultiplication(), JAVA_104_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_105_0_0_0 = new JavaKeyword("/", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_105_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_105_0_0_0);
+ public final static JavaChoice JAVA_105_0 = new JavaChoice(JavaCardinality.ONE, JAVA_105_0_0);
+ public final static JavaRule JAVA_105 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getDivision(), JAVA_105_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_106_0_0_0 = new JavaKeyword("%", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_106_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_106_0_0_0);
+ public final static JavaChoice JAVA_106_0 = new JavaChoice(JavaCardinality.ONE, JAVA_106_0_0);
+ public final static JavaRule JAVA_106 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getRemainder(), JAVA_106_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_107_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_107_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_107_0_0_0);
+ public final static JavaChoice JAVA_107_0 = new JavaChoice(JavaCardinality.ONE, JAVA_107_0_0);
+ public final static JavaRule JAVA_107 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getLessThan(), JAVA_107_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_108_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_108_0_0_1 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_108_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_108_0_0_0, JAVA_108_0_0_1);
+ public final static JavaChoice JAVA_108_0 = new JavaChoice(JavaCardinality.ONE, JAVA_108_0_0);
+ public final static JavaRule JAVA_108 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getLessThanOrEqual(), JAVA_108_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_109_0_0_0 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_109_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_109_0_0_0);
+ public final static JavaChoice JAVA_109_0 = new JavaChoice(JavaCardinality.ONE, JAVA_109_0_0);
+ public final static JavaRule JAVA_109 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getGreaterThan(), JAVA_109_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_110_0_0_0 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_110_0_0_1 = new JavaKeyword("=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_110_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_110_0_0_0, JAVA_110_0_0_1);
+ public final static JavaChoice JAVA_110_0 = new JavaChoice(JavaCardinality.ONE, JAVA_110_0_0);
+ public final static JavaRule JAVA_110 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getGreaterThanOrEqual(), JAVA_110_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_111_0_0_0 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_111_0_0_1 = new JavaKeyword("<", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_111_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_111_0_0_0, JAVA_111_0_0_1);
+ public final static JavaChoice JAVA_111_0 = new JavaChoice(JavaCardinality.ONE, JAVA_111_0_0);
+ public final static JavaRule JAVA_111 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getLeftShift(), JAVA_111_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_112_0_0_0 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_112_0_0_1 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_112_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_112_0_0_0, JAVA_112_0_0_1);
+ public final static JavaChoice JAVA_112_0 = new JavaChoice(JavaCardinality.ONE, JAVA_112_0_0);
+ public final static JavaRule JAVA_112 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getRightShift(), JAVA_112_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_113_0_0_0 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_113_0_0_1 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_113_0_0_2 = new JavaKeyword(">", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_113_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_113_0_0_0, JAVA_113_0_0_1, JAVA_113_0_0_2);
+ public final static JavaChoice JAVA_113_0 = new JavaChoice(JavaCardinality.ONE, JAVA_113_0_0);
+ public final static JavaRule JAVA_113 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getUnsignedRightShift(), JAVA_113_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_114_0_0_0 = new JavaKeyword("==", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_114_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_114_0_0_0);
+ public final static JavaChoice JAVA_114_0 = new JavaChoice(JavaCardinality.ONE, JAVA_114_0_0);
+ public final static JavaRule JAVA_114 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getEqual(), JAVA_114_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_115_0_0_0 = new JavaKeyword("!=", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_115_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_115_0_0_0);
+ public final static JavaChoice JAVA_115_0 = new JavaChoice(JavaCardinality.ONE, JAVA_115_0_0);
+ public final static JavaRule JAVA_115 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getNotEqual(), JAVA_115_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_116_0_0_0 = new JavaKeyword("++", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_116_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_116_0_0_0);
+ public final static JavaChoice JAVA_116_0 = new JavaChoice(JavaCardinality.ONE, JAVA_116_0_0);
+ public final static JavaRule JAVA_116 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getPlusPlus(), JAVA_116_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_117_0_0_0 = new JavaKeyword("--", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_117_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_117_0_0_0);
+ public final static JavaChoice JAVA_117_0 = new JavaChoice(JavaCardinality.ONE, JAVA_117_0_0);
+ public final static JavaRule JAVA_117 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getMinusMinus(), JAVA_117_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_118_0_0_0 = new JavaKeyword("~", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_118_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_118_0_0_0);
+ public final static JavaChoice JAVA_118_0 = new JavaChoice(JavaCardinality.ONE, JAVA_118_0_0);
+ public final static JavaRule JAVA_118 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getComplement(), JAVA_118_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_119_0_0_0 = new JavaKeyword("!", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_119_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_119_0_0_0);
+ public final static JavaChoice JAVA_119_0 = new JavaChoice(JavaCardinality.ONE, JAVA_119_0_0);
+ public final static JavaRule JAVA_119 = new JavaRule(org.emftext.language.java.operators.OperatorsPackage.eINSTANCE.getNegate(), JAVA_119_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_120_0_0_0_0_0_0 = new JavaKeyword("[", JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_120_0_0_0_0_0_1 = new JavaKeyword("]", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_120_0_0_0_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_120_0_0_0_0_0_0, JAVA_120_0_0_0_0_0_1);
+ public final static JavaChoice JAVA_120_0_0_0_0 = new JavaChoice(JavaCardinality.ONE, JAVA_120_0_0_0_0_0);
+ public final static JavaCompound JAVA_120_0_0_0 = new JavaCompound(JAVA_120_0_0_0_0, JavaCardinality.ONE);
+ public final static JavaSequence JAVA_120_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_120_0_0_0);
+ public final static JavaChoice JAVA_120_0 = new JavaChoice(JavaCardinality.ONE, JAVA_120_0_0);
+ public final static JavaRule JAVA_120 = new JavaRule(org.emftext.language.java.arrays.ArraysPackage.eINSTANCE.getArrayDimension(), JAVA_120_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_121_0_0_0 = new JavaKeyword("null", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_121_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_121_0_0_0);
+ public final static JavaChoice JAVA_121_0 = new JavaChoice(JavaCardinality.ONE, JAVA_121_0_0);
+ public final static JavaRule JAVA_121 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getNullLiteral(), JAVA_121_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_122_0_0_0 = new JavaKeyword("public", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_122_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_122_0_0_0);
+ public final static JavaChoice JAVA_122_0 = new JavaChoice(JavaCardinality.ONE, JAVA_122_0_0);
+ public final static JavaRule JAVA_122 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getPublic(), JAVA_122_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_123_0_0_0 = new JavaKeyword("abstract", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_123_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_123_0_0_0);
+ public final static JavaChoice JAVA_123_0 = new JavaChoice(JavaCardinality.ONE, JAVA_123_0_0);
+ public final static JavaRule JAVA_123 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getAbstract(), JAVA_123_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_124_0_0_0 = new JavaKeyword("protected", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_124_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_124_0_0_0);
+ public final static JavaChoice JAVA_124_0 = new JavaChoice(JavaCardinality.ONE, JAVA_124_0_0);
+ public final static JavaRule JAVA_124 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getProtected(), JAVA_124_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_125_0_0_0 = new JavaKeyword("private", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_125_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_125_0_0_0);
+ public final static JavaChoice JAVA_125_0 = new JavaChoice(JavaCardinality.ONE, JAVA_125_0_0);
+ public final static JavaRule JAVA_125 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getPrivate(), JAVA_125_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_126_0_0_0 = new JavaKeyword("final", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_126_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_126_0_0_0);
+ public final static JavaChoice JAVA_126_0 = new JavaChoice(JavaCardinality.ONE, JAVA_126_0_0);
+ public final static JavaRule JAVA_126 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getFinal(), JAVA_126_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_127_0_0_0 = new JavaKeyword("static", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_127_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_127_0_0_0);
+ public final static JavaChoice JAVA_127_0 = new JavaChoice(JavaCardinality.ONE, JAVA_127_0_0);
+ public final static JavaRule JAVA_127 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getStatic(), JAVA_127_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_128_0_0_0 = new JavaKeyword("native", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_128_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_128_0_0_0);
+ public final static JavaChoice JAVA_128_0 = new JavaChoice(JavaCardinality.ONE, JAVA_128_0_0);
+ public final static JavaRule JAVA_128 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getNative(), JAVA_128_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_129_0_0_0 = new JavaKeyword("synchronized", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_129_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_129_0_0_0);
+ public final static JavaChoice JAVA_129_0 = new JavaChoice(JavaCardinality.ONE, JAVA_129_0_0);
+ public final static JavaRule JAVA_129 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getSynchronized(), JAVA_129_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_130_0_0_0 = new JavaKeyword("transient", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_130_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_130_0_0_0);
+ public final static JavaChoice JAVA_130_0 = new JavaChoice(JavaCardinality.ONE, JAVA_130_0_0);
+ public final static JavaRule JAVA_130 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getTransient(), JAVA_130_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_131_0_0_0 = new JavaKeyword("volatile", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_131_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_131_0_0_0);
+ public final static JavaChoice JAVA_131_0 = new JavaChoice(JavaCardinality.ONE, JAVA_131_0_0);
+ public final static JavaRule JAVA_131 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getVolatile(), JAVA_131_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_132_0_0_0 = new JavaKeyword("strictfp", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_132_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_132_0_0_0);
+ public final static JavaChoice JAVA_132_0 = new JavaChoice(JavaCardinality.ONE, JAVA_132_0_0);
+ public final static JavaRule JAVA_132 = new JavaRule(org.emftext.language.java.modifiers.ModifiersPackage.eINSTANCE.getStrictfp(), JAVA_132_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_133_0_0_0 = new JavaKeyword("void", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_133_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_133_0_0_0);
+ public final static JavaChoice JAVA_133_0 = new JavaChoice(JavaCardinality.ONE, JAVA_133_0_0);
+ public final static JavaRule JAVA_133 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getVoid(), JAVA_133_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_134_0_0_0 = new JavaKeyword("boolean", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_134_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_134_0_0_0);
+ public final static JavaChoice JAVA_134_0 = new JavaChoice(JavaCardinality.ONE, JAVA_134_0_0);
+ public final static JavaRule JAVA_134 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getBoolean(), JAVA_134_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_135_0_0_0 = new JavaKeyword("char", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_135_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_135_0_0_0);
+ public final static JavaChoice JAVA_135_0 = new JavaChoice(JavaCardinality.ONE, JAVA_135_0_0);
+ public final static JavaRule JAVA_135 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getChar(), JAVA_135_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_136_0_0_0 = new JavaKeyword("byte", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_136_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_136_0_0_0);
+ public final static JavaChoice JAVA_136_0 = new JavaChoice(JavaCardinality.ONE, JAVA_136_0_0);
+ public final static JavaRule JAVA_136 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getByte(), JAVA_136_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_137_0_0_0 = new JavaKeyword("short", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_137_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_137_0_0_0);
+ public final static JavaChoice JAVA_137_0 = new JavaChoice(JavaCardinality.ONE, JAVA_137_0_0);
+ public final static JavaRule JAVA_137 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getShort(), JAVA_137_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_138_0_0_0 = new JavaKeyword("int", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_138_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_138_0_0_0);
+ public final static JavaChoice JAVA_138_0 = new JavaChoice(JavaCardinality.ONE, JAVA_138_0_0);
+ public final static JavaRule JAVA_138 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getInt(), JAVA_138_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_139_0_0_0 = new JavaKeyword("long", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_139_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_139_0_0_0);
+ public final static JavaChoice JAVA_139_0 = new JavaChoice(JavaCardinality.ONE, JAVA_139_0_0);
+ public final static JavaRule JAVA_139 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getLong(), JAVA_139_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_140_0_0_0 = new JavaKeyword("float", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_140_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_140_0_0_0);
+ public final static JavaChoice JAVA_140_0 = new JavaChoice(JavaCardinality.ONE, JAVA_140_0_0);
+ public final static JavaRule JAVA_140 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getFloat(), JAVA_140_0, JavaCardinality.ONE);
+ public final static JavaKeyword JAVA_141_0_0_0 = new JavaKeyword("double", JavaCardinality.ONE);
+ public final static JavaSequence JAVA_141_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_141_0_0_0);
+ public final static JavaChoice JAVA_141_0 = new JavaChoice(JavaCardinality.ONE, JAVA_141_0_0);
+ public final static JavaRule JAVA_141 = new JavaRule(org.emftext.language.java.types.TypesPackage.eINSTANCE.getDouble(), JAVA_141_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_142_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalLongLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_LONG_LITERAL__DECIMAL_VALUE), "DECIMAL_LONG_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_142_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_142_0_0_0);
+ public final static JavaChoice JAVA_142_0 = new JavaChoice(JavaCardinality.ONE, JAVA_142_0_0);
+ public final static JavaRule JAVA_142 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalLongLiteral(), JAVA_142_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_143_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalFloatLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_FLOAT_LITERAL__DECIMAL_VALUE), "DECIMAL_FLOAT_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_143_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_143_0_0_0);
+ public final static JavaChoice JAVA_143_0 = new JavaChoice(JavaCardinality.ONE, JAVA_143_0_0);
+ public final static JavaRule JAVA_143 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalFloatLiteral(), JAVA_143_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_144_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalIntegerLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_INTEGER_LITERAL__DECIMAL_VALUE), "DECIMAL_INTEGER_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_144_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_144_0_0_0);
+ public final static JavaChoice JAVA_144_0 = new JavaChoice(JavaCardinality.ONE, JAVA_144_0_0);
+ public final static JavaRule JAVA_144 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalIntegerLiteral(), JAVA_144_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_145_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalDoubleLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_DOUBLE_LITERAL__DECIMAL_VALUE), "DECIMAL_DOUBLE_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_145_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_145_0_0_0);
+ public final static JavaChoice JAVA_145_0 = new JavaChoice(JavaCardinality.ONE, JAVA_145_0_0);
+ public final static JavaRule JAVA_145 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getDecimalDoubleLiteral(), JAVA_145_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_146_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexLongLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_LONG_LITERAL__HEX_VALUE), "HEX_LONG_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_146_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_146_0_0_0);
+ public final static JavaChoice JAVA_146_0 = new JavaChoice(JavaCardinality.ONE, JAVA_146_0_0);
+ public final static JavaRule JAVA_146 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexLongLiteral(), JAVA_146_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_147_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexFloatLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_FLOAT_LITERAL__HEX_VALUE), "HEX_FLOAT_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_147_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_147_0_0_0);
+ public final static JavaChoice JAVA_147_0 = new JavaChoice(JavaCardinality.ONE, JAVA_147_0_0);
+ public final static JavaRule JAVA_147 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexFloatLiteral(), JAVA_147_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_148_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexDoubleLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_DOUBLE_LITERAL__HEX_VALUE), "HEX_DOUBLE_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_148_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_148_0_0_0);
+ public final static JavaChoice JAVA_148_0 = new JavaChoice(JavaCardinality.ONE, JAVA_148_0_0);
+ public final static JavaRule JAVA_148 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexDoubleLiteral(), JAVA_148_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_149_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexIntegerLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_INTEGER_LITERAL__HEX_VALUE), "HEX_INTEGER_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_149_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_149_0_0_0);
+ public final static JavaChoice JAVA_149_0 = new JavaChoice(JavaCardinality.ONE, JAVA_149_0_0);
+ public final static JavaRule JAVA_149 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getHexIntegerLiteral(), JAVA_149_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_150_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getOctalLongLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.OCTAL_LONG_LITERAL__OCTAL_VALUE), "OCTAL_LONG_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_150_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_150_0_0_0);
+ public final static JavaChoice JAVA_150_0 = new JavaChoice(JavaCardinality.ONE, JAVA_150_0_0);
+ public final static JavaRule JAVA_150 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getOctalLongLiteral(), JAVA_150_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_151_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getOctalIntegerLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.OCTAL_INTEGER_LITERAL__OCTAL_VALUE), "OCTAL_INTEGER_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_151_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_151_0_0_0);
+ public final static JavaChoice JAVA_151_0 = new JavaChoice(JavaCardinality.ONE, JAVA_151_0_0);
+ public final static JavaRule JAVA_151 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getOctalIntegerLiteral(), JAVA_151_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_152_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getCharacterLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.CHARACTER_LITERAL__VALUE), "CHARACTER_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_152_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_152_0_0_0);
+ public final static JavaChoice JAVA_152_0 = new JavaChoice(JavaCardinality.ONE, JAVA_152_0_0);
+ public final static JavaRule JAVA_152 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getCharacterLiteral(), JAVA_152_0, JavaCardinality.ONE);
+ public final static JavaPlaceholder JAVA_153_0_0_0 = new JavaPlaceholder(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getBooleanLiteral().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.BOOLEAN_LITERAL__VALUE), "BOOLEAN_LITERAL", JavaCardinality.ONE, 0);
+ public final static JavaSequence JAVA_153_0_0 = new JavaSequence(JavaCardinality.ONE, JAVA_153_0_0_0);
+ public final static JavaChoice JAVA_153_0 = new JavaChoice(JavaCardinality.ONE, JAVA_153_0_0);
+ public final static JavaRule JAVA_153 = new JavaRule(org.emftext.language.java.literals.LiteralsPackage.eINSTANCE.getBooleanLiteral(), JAVA_153_0, JavaCardinality.ONE);
+
+
+ /** A statically pre-loaded cache to speed up the syntax element id look up. */
+ private static LinkedHashMap syntaxElementIDCache = new LinkedHashMap();
+
+ /** A statically pre-loaded cache to speed up the syntax element look up. */
+ private static LinkedHashMap syntaxElementCache = new LinkedHashMap();
+
+ /** Preload the caches */
+ static {
+ syntaxElementIDCache.put(null, "");
+ for (Field field : JavaGrammarInformationProvider.class.getFields()) {
+ try {
+ Object fieldValue = field.get(null);
+ syntaxElementIDCache.put((JavaSyntaxElement) fieldValue, field.getName());
+ syntaxElementCache.put(field.getName(), (JavaSyntaxElement) fieldValue);
+ } catch (Exception e) { }
+ }
+ }
+
+ public static String getSyntaxElementID(JavaSyntaxElement syntaxElement) {
+ return syntaxElementIDCache.get(syntaxElement);
+ }
+
+ public static JavaSyntaxElement getSyntaxElementByID(String syntaxElementID) {
+ return syntaxElementCache.get(syntaxElementID);
+ }
+
+ public final static JavaRule[] RULES = new JavaRule[] {
+ JAVA_0,
+ JAVA_1,
+ JAVA_2,
+ JAVA_3,
+ JAVA_4,
+ JAVA_5,
+ JAVA_6,
+ JAVA_7,
+ JAVA_8,
+ JAVA_9,
+ JAVA_10,
+ JAVA_11,
+ JAVA_12,
+ JAVA_13,
+ JAVA_14,
+ JAVA_15,
+ JAVA_16,
+ JAVA_17,
+ JAVA_18,
+ JAVA_19,
+ JAVA_20,
+ JAVA_21,
+ JAVA_22,
+ JAVA_23,
+ JAVA_24,
+ JAVA_25,
+ JAVA_26,
+ JAVA_27,
+ JAVA_28,
+ JAVA_29,
+ JAVA_30,
+ JAVA_31,
+ JAVA_32,
+ JAVA_33,
+ JAVA_34,
+ JAVA_35,
+ JAVA_36,
+ JAVA_37,
+ JAVA_38,
+ JAVA_39,
+ JAVA_40,
+ JAVA_41,
+ JAVA_42,
+ JAVA_43,
+ JAVA_44,
+ JAVA_45,
+ JAVA_46,
+ JAVA_47,
+ JAVA_48,
+ JAVA_49,
+ JAVA_50,
+ JAVA_51,
+ JAVA_52,
+ JAVA_53,
+ JAVA_54,
+ JAVA_55,
+ JAVA_56,
+ JAVA_57,
+ JAVA_58,
+ JAVA_59,
+ JAVA_60,
+ JAVA_61,
+ JAVA_62,
+ JAVA_63,
+ JAVA_64,
+ JAVA_65,
+ JAVA_66,
+ JAVA_67,
+ JAVA_68,
+ JAVA_69,
+ JAVA_70,
+ JAVA_71,
+ JAVA_72,
+ JAVA_73,
+ JAVA_74,
+ JAVA_75,
+ JAVA_76,
+ JAVA_77,
+ JAVA_78,
+ JAVA_79,
+ JAVA_80,
+ JAVA_81,
+ JAVA_82,
+ JAVA_83,
+ JAVA_84,
+ JAVA_85,
+ JAVA_86,
+ JAVA_87,
+ JAVA_88,
+ JAVA_89,
+ JAVA_90,
+ JAVA_91,
+ JAVA_92,
+ JAVA_93,
+ JAVA_94,
+ JAVA_95,
+ JAVA_96,
+ JAVA_97,
+ JAVA_98,
+ JAVA_99,
+ JAVA_100,
+ JAVA_101,
+ JAVA_102,
+ JAVA_103,
+ JAVA_104,
+ JAVA_105,
+ JAVA_106,
+ JAVA_107,
+ JAVA_108,
+ JAVA_109,
+ JAVA_110,
+ JAVA_111,
+ JAVA_112,
+ JAVA_113,
+ JAVA_114,
+ JAVA_115,
+ JAVA_116,
+ JAVA_117,
+ JAVA_118,
+ JAVA_119,
+ JAVA_120,
+ JAVA_121,
+ JAVA_122,
+ JAVA_123,
+ JAVA_124,
+ JAVA_125,
+ JAVA_126,
+ JAVA_127,
+ JAVA_128,
+ JAVA_129,
+ JAVA_130,
+ JAVA_131,
+ JAVA_132,
+ JAVA_133,
+ JAVA_134,
+ JAVA_135,
+ JAVA_136,
+ JAVA_137,
+ JAVA_138,
+ JAVA_139,
+ JAVA_140,
+ JAVA_141,
+ JAVA_142,
+ JAVA_143,
+ JAVA_144,
+ JAVA_145,
+ JAVA_146,
+ JAVA_147,
+ JAVA_148,
+ JAVA_149,
+ JAVA_150,
+ JAVA_151,
+ JAVA_152,
+ JAVA_153,
+ };
+
+ /**
+ * Returns all keywords of the grammar. This includes all literals for boolean and
+ * enumeration terminals.
+ */
+ public java.util.Set getKeywords() {
+ if (this.keywords == null) {
+ this.keywords = new LinkedHashSet();
+ for (JavaRule rule : RULES) {
+ findKeywords(rule, this.keywords);
+ }
+ }
+ return keywords;
+ }
+
+ /**
+ * Finds all keywords in the given element and its children and adds them to the
+ * set. This includes all literals for boolean and enumeration terminals.
+ */
+ private void findKeywords(JavaSyntaxElement element, Set keywords) {
+ if (element instanceof JavaKeyword) {
+ keywords.add(((JavaKeyword) element).getValue());
+ } else if (element instanceof JavaBooleanTerminal) {
+ keywords.add(((JavaBooleanTerminal) element).getTrueLiteral());
+ keywords.add(((JavaBooleanTerminal) element).getFalseLiteral());
+ } else if (element instanceof JavaEnumerationTerminal) {
+ JavaEnumerationTerminal terminal = (JavaEnumerationTerminal) element;
+ for (String key : terminal.getLiteralMapping().keySet()) {
+ keywords.add(key);
+ }
+ }
+ for (JavaSyntaxElement child : element.getChildren()) {
+ findKeywords(child, this.keywords);
+ }
+ }
+
+}
diff --git a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaMetaInformation.java b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaMetaInformation.java
new file mode 100644
index 00000000..0f85c280
--- /dev/null
+++ b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaMetaInformation.java
@@ -0,0 +1,132 @@
+/**
+ *
+ *
+ *
+ *
+ */
+package org.emftext.language.java.resource.java.mopp;
+
+import org.emftext.language.java.resource.java.IJavaNameProvider;
+import org.emftext.language.java.resource.java.JavaReferenceResolverSwitchFactory;
+
+public class JavaMetaInformation implements org.emftext.language.java.resource.java.IJavaMetaInformation {
+
+ /** The name provider to be always returned by this {@link JavaMetaInformation} instance. */
+ private IJavaNameProvider nameProvider = new org.emftext.language.java.resource.java.analysis.JavaDefaultNameProvider();
+
+ public String getSyntaxName() {
+ return "java";
+ }
+
+ public String getURI() {
+ return "http://www.emftext.org/java";
+ }
+
+ public org.emftext.language.java.resource.java.IJavaTextScanner createLexer() {
+ return new org.emftext.language.java.resource.java.mopp.JavaAntlrScanner(new org.emftext.language.java.resource.java.mopp.JavaLexer());
+ }
+
+ public org.emftext.language.java.resource.java.IJavaTextParser createParser(java.io.InputStream inputStream, String encoding) {
+ return new org.emftext.language.java.resource.java.mopp.JavaParser().createInstance(inputStream, encoding);
+ }
+
+ public org.emftext.language.java.resource.java.IJavaTextPrinter createPrinter(java.io.OutputStream outputStream, org.emftext.language.java.resource.java.IJavaTextResource resource) {
+ return new org.emftext.language.java.resource.java.mopp.JavaPrinter2(outputStream, resource);
+ }
+
+ public org.eclipse.emf.ecore.EClass[] getClassesWithSyntax() {
+ return new org.emftext.language.java.resource.java.mopp.JavaSyntaxCoverageInformationProvider().getClassesWithSyntax();
+ }
+
+ public org.eclipse.emf.ecore.EClass[] getStartSymbols() {
+ return new org.emftext.language.java.resource.java.mopp.JavaSyntaxCoverageInformationProvider().getStartSymbols();
+ }
+
+ public org.emftext.language.java.resource.java.IJavaReferenceResolverSwitch getReferenceResolverSwitch() {
+ return JavaReferenceResolverSwitchFactory.getSwitch();
+ }
+
+ public org.emftext.language.java.resource.java.IJavaTokenResolverFactory getTokenResolverFactory() {
+ return new org.emftext.language.java.resource.java.mopp.JavaTokenResolverFactory();
+ }
+
+ public String getPathToCSDefinition() {
+ return "org.emftext.language.java/metamodel/java.cs";
+ }
+
+ public String[] getTokenNames() {
+ return org.emftext.language.java.resource.java.mopp.JavaParser.tokenNames;
+ }
+
+ public org.emftext.language.java.resource.java.IJavaTokenStyle getDefaultTokenStyle(String tokenName) {
+ return new org.emftext.language.java.resource.java.mopp.JavaTokenStyleInformationProvider().getDefaultTokenStyle(tokenName);
+ }
+
+ public java.util.Collection getBracketPairs() {
+ return new org.emftext.language.java.resource.java.mopp.JavaBracketInformationProvider().getBracketPairs();
+ }
+
+ public org.eclipse.emf.ecore.EClass[] getFoldableClasses() {
+ return new org.emftext.language.java.resource.java.mopp.JavaFoldingInformationProvider().getFoldableClasses();
+ }
+
+ public org.eclipse.emf.ecore.resource.Resource.Factory createResourceFactory() {
+ return new org.emftext.language.java.resource.java.mopp.JavaResourceFactory();
+ }
+
+ public org.emftext.language.java.resource.java.mopp.JavaNewFileContentProvider getNewFileContentProvider() {
+ return new org.emftext.language.java.resource.java.mopp.JavaNewFileContentProvider();
+ }
+
+ public void registerResourceFactory() {
+ org.eclipse.emf.ecore.resource.Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(getSyntaxName(), new org.emftext.language.java.resource.java.mopp.JavaResourceFactory());
+ }
+
+ /**
+ * Returns the key of the option that can be used to register a preprocessor that
+ * is used as a pipe when loading resources. This key is language-specific. To
+ * register one preprocessor for multiple resource types, it must be registered
+ * individually using all keys.
+ */
+ public String getInputStreamPreprocessorProviderOptionKey() {
+ return getSyntaxName() + "_" + "INPUT_STREAM_PREPROCESSOR_PROVIDER";
+ }
+
+ /**
+ * Returns the key of the option that can be used to register a post-processors
+ * that are invoked after loading resources. This key is language-specific. To
+ * register one post-processor for multiple resource types, it must be registered
+ * individually using all keys.
+ */
+ public String getResourcePostProcessorProviderOptionKey() {
+ return getSyntaxName() + "_" + "RESOURCE_POSTPROCESSOR_PROVIDER";
+ }
+
+ public String getLaunchConfigurationType() {
+ return "org.emftext.language.java.resource.java.ui.launchConfigurationType";
+ }
+
+ public org.emftext.language.java.resource.java.IJavaNameProvider createNameProvider() {
+ return nameProvider;
+ }
+
+ public String[] getSyntaxHighlightableTokenNames() {
+ org.emftext.language.java.resource.java.mopp.JavaAntlrTokenHelper tokenHelper = new org.emftext.language.java.resource.java.mopp.JavaAntlrTokenHelper();
+ java.util.List highlightableTokens = new java.util.ArrayList();
+ String[] parserTokenNames = getTokenNames();
+ for (int i = 0; i < parserTokenNames.length; i++) {
+ // If ANTLR is used we need to normalize the token names
+ if (!tokenHelper.canBeUsedForSyntaxHighlighting(i)) {
+ continue;
+ }
+ String tokenName = tokenHelper.getTokenName(parserTokenNames, i);
+ if (tokenName == null) {
+ continue;
+ }
+ highlightableTokens.add(tokenName);
+ }
+ highlightableTokens.add(org.emftext.language.java.resource.java.mopp.JavaTokenStyleInformationProvider.TASK_ITEM_TOKEN_NAME);
+ return highlightableTokens.toArray(new String[highlightableTokens.size()]);
+ }
+
+}
diff --git a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaParser.java b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaParser.java
new file mode 100644
index 00000000..97012469
--- /dev/null
+++ b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaParser.java
@@ -0,0 +1,63582 @@
+// $ANTLR 3.4
+
+ package org.emftext.language.java.resource.java.mopp;
+
+
+import org.antlr.runtime3_4_0.*;
+import org.eclipse.emf.ecore.EClass;
+import org.emftext.language.java.annotations.AnnotationAttributeSetting;
+import org.emftext.language.java.annotations.AnnotationInstance;
+import org.emftext.language.java.classifiers.Classifier;
+import org.emftext.language.java.classifiers.ConcreteClassifier;
+import org.emftext.language.java.imports.ClassifierImport;
+import org.emftext.language.java.imports.StaticMemberImport;
+import org.emftext.language.java.members.InterfaceMethod;
+import org.emftext.language.java.references.ElementReference;
+import org.emftext.language.java.references.ReferenceableElement;
+import org.emftext.language.java.resource.java.grammar.JavaContainmentTrace;
+import org.emftext.language.java.resource.java.grammar.JavaFollowSetProvider;
+import org.emftext.language.java.statements.Jump;
+import org.emftext.language.java.statements.JumpLabel;
+import org.emftext.language.java.types.ClassifierReference;
+
+import java.util.LinkedHashMap;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+
+@SuppressWarnings({"all", "warnings", "unchecked"})
+public class JavaParser extends JavaANTLRParserBase {
+ public static final String[] tokenNames = new String[] {
+ "", "", "", "", "BOOLEAN_LITERAL", "CHARACTER_LITERAL", "DECIMAL_DOUBLE_LITERAL", "DECIMAL_FLOAT_LITERAL", "DECIMAL_INTEGER_LITERAL", "DECIMAL_LONG_LITERAL", "HEX_DOUBLE_LITERAL", "HEX_FLOAT_LITERAL", "HEX_INTEGER_LITERAL", "HEX_LONG_LITERAL", "IDENTIFIER", "ML_COMMENT", "OCTAL_INTEGER_LITERAL", "OCTAL_LONG_LITERAL", "SL_COMMENT", "STRING_LITERAL", "WHITESPACE", "'!'", "'!='", "'&&'", "'&'", "'&='", "'('", "')'", "'*'", "'*='", "'+'", "'++'", "'+='", "','", "'-'", "'--'", "'-='", "'.'", "'...'", "'/'", "'/='", "':'", "';'", "'<'", "'='", "'=='", "'>'", "'?'", "'@'", "'['", "'\\u001a'", "'\\u0025'", "'\\u0025='", "']'", "'^'", "'^='", "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'", "'catch'", "'char'", "'class'", "'continue'", "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'", "'finally'", "'float'", "'for'", "'if'", "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", "'long'", "'native'", "'new'", "'null'", "'package'", "'private'", "'protected'", "'public'", "'return'", "'short'", "'static'", "'strictfp'", "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", "'throws'", "'transient'", "'try'", "'void'", "'volatile'", "'while'", "'{'", "'|'", "'|='", "'||'", "'}'", "'~'"
+ };
+
+ public static final int EOF=-1;
+ public static final int T__21=21;
+ public static final int T__22=22;
+ public static final int T__23=23;
+ public static final int T__24=24;
+ public static final int T__25=25;
+ public static final int T__26=26;
+ public static final int T__27=27;
+ public static final int T__28=28;
+ public static final int T__29=29;
+ public static final int T__30=30;
+ public static final int T__31=31;
+ public static final int T__32=32;
+ public static final int T__33=33;
+ public static final int T__34=34;
+ public static final int T__35=35;
+ public static final int T__36=36;
+ public static final int T__37=37;
+ public static final int T__38=38;
+ public static final int T__39=39;
+ public static final int T__40=40;
+ public static final int T__41=41;
+ public static final int T__42=42;
+ public static final int T__43=43;
+ public static final int T__44=44;
+ public static final int T__45=45;
+ public static final int T__46=46;
+ public static final int T__47=47;
+ public static final int T__48=48;
+ public static final int T__49=49;
+ public static final int T__50=50;
+ public static final int T__51=51;
+ public static final int T__52=52;
+ public static final int T__53=53;
+ public static final int T__54=54;
+ public static final int T__55=55;
+ public static final int T__56=56;
+ public static final int T__57=57;
+ public static final int T__58=58;
+ public static final int T__59=59;
+ public static final int T__60=60;
+ public static final int T__61=61;
+ public static final int T__62=62;
+ public static final int T__63=63;
+ public static final int T__64=64;
+ public static final int T__65=65;
+ public static final int T__66=66;
+ public static final int T__67=67;
+ public static final int T__68=68;
+ public static final int T__69=69;
+ public static final int T__70=70;
+ public static final int T__71=71;
+ public static final int T__72=72;
+ public static final int T__73=73;
+ public static final int T__74=74;
+ public static final int T__75=75;
+ public static final int T__76=76;
+ public static final int T__77=77;
+ public static final int T__78=78;
+ public static final int T__79=79;
+ public static final int T__80=80;
+ public static final int T__81=81;
+ public static final int T__82=82;
+ public static final int T__83=83;
+ public static final int T__84=84;
+ public static final int T__85=85;
+ public static final int T__86=86;
+ public static final int T__87=87;
+ public static final int T__88=88;
+ public static final int T__89=89;
+ public static final int T__90=90;
+ public static final int T__91=91;
+ public static final int T__92=92;
+ public static final int T__93=93;
+ public static final int T__94=94;
+ public static final int T__95=95;
+ public static final int T__96=96;
+ public static final int T__97=97;
+ public static final int T__98=98;
+ public static final int T__99=99;
+ public static final int T__100=100;
+ public static final int T__101=101;
+ public static final int T__102=102;
+ public static final int T__103=103;
+ public static final int T__104=104;
+ public static final int T__105=105;
+ public static final int T__106=106;
+ public static final int T__107=107;
+ public static final int T__108=108;
+ public static final int T__109=109;
+ public static final int T__110=110;
+ public static final int BOOLEAN_LITERAL=4;
+ public static final int CHARACTER_LITERAL=5;
+ public static final int DECIMAL_DOUBLE_LITERAL=6;
+ public static final int DECIMAL_FLOAT_LITERAL=7;
+ public static final int DECIMAL_INTEGER_LITERAL=8;
+ public static final int DECIMAL_LONG_LITERAL=9;
+ public static final int HEX_DOUBLE_LITERAL=10;
+ public static final int HEX_FLOAT_LITERAL=11;
+ public static final int HEX_INTEGER_LITERAL=12;
+ public static final int HEX_LONG_LITERAL=13;
+ public static final int IDENTIFIER=14;
+ public static final int ML_COMMENT=15;
+ public static final int OCTAL_INTEGER_LITERAL=16;
+ public static final int OCTAL_LONG_LITERAL=17;
+ public static final int SL_COMMENT=18;
+ public static final int STRING_LITERAL=19;
+ public static final int WHITESPACE=20;
+
+ // delegates
+ public JavaANTLRParserBase[] getDelegates() {
+ return new JavaANTLRParserBase[] {};
+ }
+
+ // delegators
+
+
+ public JavaParser(TokenStream input) {
+ this(input, new RecognizerSharedState());
+ }
+ public JavaParser(TokenStream input, RecognizerSharedState state) {
+ super(input, state);
+ this.state.initializeRuleMemo(541 + 1);
+
+
+ }
+
+ public String[] getTokenNames() { return JavaParser.tokenNames; }
+ public String getGrammarFileName() { return "Java.g"; }
+
+
+ private org.emftext.language.java.resource.java.IJavaTokenResolverFactory tokenResolverFactory = new org.emftext.language.java.resource.java.mopp.JavaTokenResolverFactory();
+
+ /**
+ * the index of the last token that was handled by collectHiddenTokens()
+ */
+ private int lastPosition;
+
+ /**
+ * A flag that indicates whether the parser should remember all expected elements.
+ * This flag is set to true when using the parse for code completion. Otherwise it
+ * is set to false.
+ */
+ private boolean rememberExpectedElements = false;
+
+ private Object parseToIndexTypeObject;
+ private int lastTokenIndex = 0;
+
+ /**
+ * A list of expected elements the were collected while parsing the input stream.
+ * This list is only filled if rememberExpectedElements
is set to
+ * true.
+ */
+ private java.util.List expectedElements = new java.util.ArrayList();
+
+ private int mismatchedTokenRecoveryTries = 0;
+ /**
+ * A helper list to allow a lexer to pass errors to its parser
+ */
+ protected java.util.List lexerExceptions = java.util.Collections.synchronizedList(new java.util.ArrayList());
+
+ /**
+ * Another helper list to allow a lexer to pass positions of errors to its parser
+ */
+ protected java.util.List lexerExceptionsPosition = java.util.Collections.synchronizedList(new java.util.ArrayList());
+
+ /**
+ * A stack for incomplete objects. This stack is used filled when the parser is
+ * used for code completion. Whenever the parser starts to read an object it is
+ * pushed on the stack. Once the element was parser completely it is popped from
+ * the stack.
+ */
+ java.util.List incompleteObjects = new java.util.ArrayList();
+
+ private int stopIncludingHiddenTokens;
+ private int stopExcludingHiddenTokens;
+ private int tokenIndexOfLastCompleteElement;
+
+ private int expectedElementsIndexOfLastCompleteElement;
+
+ /**
+ * The offset indicating the cursor position when the parser is used for code
+ * completion by calling parseToExpectedElements().
+ */
+ private int cursorOffset;
+
+ /**
+ * The offset of the first hidden token of the last expected element. This offset
+ * is used to discard expected elements, which are not needed for code completion.
+ */
+ private int lastStartIncludingHidden;
+
+ protected void addErrorToResource(final String errorMessage, final int column, final int line, final int startIndex, final int stopIndex) {
+ postParseCommands.add(new org.emftext.language.java.resource.java.IJavaCommand() {
+ public boolean execute(org.emftext.language.java.resource.java.IJavaTextResource resource) {
+ if (resource == null) {
+ // the resource can be null if the parser is used for code completion
+ return true;
+ }
+ resource.addProblem(new org.emftext.language.java.resource.java.IJavaProblem() {
+ public org.emftext.language.java.resource.java.JavaEProblemSeverity getSeverity() {
+ return org.emftext.language.java.resource.java.JavaEProblemSeverity.ERROR;
+ }
+ public org.emftext.language.java.resource.java.JavaEProblemType getType() {
+ return org.emftext.language.java.resource.java.JavaEProblemType.SYNTAX_ERROR;
+ }
+ public String getMessage() {
+ return errorMessage;
+ }
+ public java.util.Collection getQuickFixes() {
+ return null;
+ }
+ }, column, line, startIndex, stopIndex);
+ return true;
+ }
+ });
+ }
+
+ /**
+ * The statically initialized cache for containment traces.
+ * The initialization makes use of the 1:1 relationship between expectation IDs and defining EClasses.
+ * The cache allows to significantly reduces the number of instantiated JavaContainmentTrace objects.
+ *
+ */
+ private static LinkedHashMap containmentTraceCache = new LinkedHashMap();
+ static {
+ for(int index = 0; index < JavaExpectationConstants.EXPECTATIONS.length; index++) {
+ int[] ids = JavaExpectationConstants.EXPECTATIONS[index];
+ JavaContainedFeature[] containmentFeatures = new JavaContainedFeature[ids.length - 2];
+ for (int i = 2; i < ids.length; i++) {
+ containmentFeatures[i - 2] = JavaFollowSetProvider.LINKS[ids[i]];
+ }
+
+ EClass eClass = null;
+ if (containmentFeatures.length > 0) {
+ org.eclipse.emf.ecore.EStructuralFeature feature = containmentFeatures[containmentFeatures.length - 1].getFeature();
+ eClass = feature.getEContainingClass();
+ }
+
+ JavaContainmentTrace containmentTrace = new JavaContainmentTrace(eClass, containmentFeatures);
+ containmentTraceCache.put(index, containmentTrace);
+ }
+ }
+
+ public void addExpectedElement(int expectationId) {
+ if (!this.rememberExpectedElements) {
+ return;
+ }
+ int[] ids = JavaExpectationConstants.EXPECTATIONS[expectationId];
+ int terminalID = ids[0];
+ int followSetID = ids[1];
+ org.emftext.language.java.resource.java.IJavaExpectedElement terminal = org.emftext.language.java.resource.java.grammar.JavaFollowSetProvider.TERMINALS[terminalID];
+ JavaContainmentTrace containmentTrace = containmentTraceCache.get(expectationId);
+ org.eclipse.emf.ecore.EObject container = getLastIncompleteElement();
+ org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal expectedElement = new org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal(container, terminal, followSetID, containmentTrace);
+ setPosition(expectedElement, input.index());
+ int startIncludingHiddenTokens = expectedElement.getStartIncludingHiddenTokens();
+ if (lastStartIncludingHidden >= 0 && lastStartIncludingHidden < startIncludingHiddenTokens && cursorOffset > startIncludingHiddenTokens) {
+ // clear list of expected elements
+ this.expectedElements.clear();
+ this.expectedElementsIndexOfLastCompleteElement = 0;
+ }
+ lastStartIncludingHidden = startIncludingHiddenTokens;
+ this.expectedElements.add(expectedElement);
+ }
+
+ protected void collectHiddenTokens(org.eclipse.emf.ecore.EObject element) {
+ }
+
+ protected void copyLocalizationInfos(final org.eclipse.emf.ecore.EObject source, final org.eclipse.emf.ecore.EObject target) {
+ if (disableLocationMap) {
+ return;
+ }
+ postParseCommands.add(new org.emftext.language.java.resource.java.IJavaCommand() {
+ public boolean execute(org.emftext.language.java.resource.java.IJavaTextResource resource) {
+ org.emftext.language.java.resource.java.IJavaLocationMap locationMap = resource.getLocationMap();
+ if (locationMap == null) {
+ // the locationMap can be null if the parser is used for code completion
+ return true;
+ }
+ locationMap.setCharStart(target, locationMap.getCharStart(source));
+ locationMap.setCharEnd(target, locationMap.getCharEnd(source));
+ locationMap.setColumn(target, locationMap.getColumn(source));
+ locationMap.setLine(target, locationMap.getLine(source));
+ return true;
+ }
+ });
+ }
+
+ protected void copyLocalizationInfos(final org.antlr.runtime3_4_0.CommonToken source, final org.eclipse.emf.ecore.EObject target) {
+ if (disableLocationMap) {
+ return;
+ }
+ postParseCommands.add(new org.emftext.language.java.resource.java.IJavaCommand() {
+ public boolean execute(org.emftext.language.java.resource.java.IJavaTextResource resource) {
+ org.emftext.language.java.resource.java.IJavaLocationMap locationMap = resource.getLocationMap();
+ if (locationMap == null) {
+ // the locationMap can be null if the parser is used for code completion
+ return true;
+ }
+ if (source == null) {
+ return true;
+ }
+ locationMap.setCharStart(target, source.getStartIndex());
+ locationMap.setCharEnd(target, source.getStopIndex());
+ locationMap.setColumn(target, source.getCharPositionInLine());
+ locationMap.setLine(target, source.getLine());
+ return true;
+ }
+ });
+ }
+
+ /**
+ * Sets the end character index and the last line for the given object in the
+ * location map.
+ */
+ protected void setLocalizationEnd(java.util.Collection> postParseCommands , final org.eclipse.emf.ecore.EObject object, final int endChar, final int endLine) {
+ if (disableLocationMap) {
+ return;
+ }
+ postParseCommands.add(new org.emftext.language.java.resource.java.IJavaCommand() {
+ public boolean execute(org.emftext.language.java.resource.java.IJavaTextResource resource) {
+ org.emftext.language.java.resource.java.IJavaLocationMap locationMap = resource.getLocationMap();
+ if (locationMap == null) {
+ // the locationMap can be null if the parser is used for code completion
+ return true;
+ }
+ locationMap.setCharEnd(object, endChar);
+ locationMap.setLine(object, endLine);
+ return true;
+ }
+ });
+ }
+
+ public org.emftext.language.java.resource.java.IJavaTextParser createInstance(java.io.InputStream actualInputStream, String encoding) {
+ try {
+ if (encoding == null) {
+ return new JavaParser(new org.antlr.runtime3_4_0.CommonTokenStream(new JavaLexer(new org.antlr.runtime3_4_0.ANTLRInputStream(actualInputStream))));
+ } else {
+ return new JavaParser(new org.antlr.runtime3_4_0.CommonTokenStream(new JavaLexer(new org.antlr.runtime3_4_0.ANTLRInputStream(actualInputStream, encoding))));
+ }
+ } catch (java.io.IOException e) {
+ new org.emftext.language.java.resource.java.util.JavaRuntimeUtil().logError("Error while creating parser.", e);
+ return null;
+ }
+ }
+
+ /**
+ * This default constructor is only used to call createInstance() on it.
+ */
+ public JavaParser() {
+ super(null);
+ }
+
+ protected org.eclipse.emf.ecore.EObject doParse() throws org.antlr.runtime3_4_0.RecognitionException {
+ this.lastPosition = 0;
+ // required because the lexer class can not be subclassed
+ ((JavaLexer) getTokenStream().getTokenSource()).lexerExceptions = lexerExceptions;
+ ((JavaLexer) getTokenStream().getTokenSource()).lexerExceptionsPosition = lexerExceptionsPosition;
+ Object typeObject = getTypeObject();
+ if (typeObject == null) {
+ return start();
+ } else if (typeObject instanceof org.eclipse.emf.ecore.EClass) {
+ org.eclipse.emf.ecore.EClass type = (org.eclipse.emf.ecore.EClass) typeObject;
+ if (type.getInstanceClass() == org.emftext.language.java.containers.EmptyModel.class) {
+ return parse_org_emftext_language_java_containers_EmptyModel();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.containers.Package.class) {
+ return parse_org_emftext_language_java_containers_Package();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.containers.CompilationUnit.class) {
+ return parse_org_emftext_language_java_containers_CompilationUnit();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.imports.ClassifierImport.class) {
+ return parse_org_emftext_language_java_imports_ClassifierImport();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.imports.PackageImport.class) {
+ return parse_org_emftext_language_java_imports_PackageImport();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.imports.StaticMemberImport.class) {
+ return parse_org_emftext_language_java_imports_StaticMemberImport();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.imports.StaticClassifierImport.class) {
+ return parse_org_emftext_language_java_imports_StaticClassifierImport();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.classifiers.Class.class) {
+ return parse_org_emftext_language_java_classifiers_Class();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.classifiers.AnonymousClass.class) {
+ return parse_org_emftext_language_java_classifiers_AnonymousClass();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.classifiers.Interface.class) {
+ return parse_org_emftext_language_java_classifiers_Interface();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.classifiers.Enumeration.class) {
+ return parse_org_emftext_language_java_classifiers_Enumeration();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.classifiers.Annotation.class) {
+ return parse_org_emftext_language_java_classifiers_Annotation();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.annotations.AnnotationInstance.class) {
+ return parse_org_emftext_language_java_annotations_AnnotationInstance();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.annotations.SingleAnnotationParameter.class) {
+ return parse_org_emftext_language_java_annotations_SingleAnnotationParameter();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.annotations.AnnotationParameterList.class) {
+ return parse_org_emftext_language_java_annotations_AnnotationParameterList();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.annotations.AnnotationAttributeSetting.class) {
+ return parse_org_emftext_language_java_annotations_AnnotationAttributeSetting();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.generics.TypeParameter.class) {
+ return parse_org_emftext_language_java_generics_TypeParameter();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.members.EnumConstant.class) {
+ return parse_org_emftext_language_java_members_EnumConstant();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Block.class) {
+ return parse_org_emftext_language_java_statements_Block();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.members.Constructor.class) {
+ return parse_org_emftext_language_java_members_Constructor();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.members.InterfaceMethod.class) {
+ return parse_org_emftext_language_java_members_InterfaceMethod();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.members.ClassMethod.class) {
+ return parse_org_emftext_language_java_members_ClassMethod();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.annotations.AnnotationAttribute.class) {
+ return parse_org_emftext_language_java_annotations_AnnotationAttribute();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.parameters.OrdinaryParameter.class) {
+ return parse_org_emftext_language_java_parameters_OrdinaryParameter();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.parameters.VariableLengthParameter.class) {
+ return parse_org_emftext_language_java_parameters_VariableLengthParameter();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.variables.LocalVariable.class) {
+ return parse_org_emftext_language_java_variables_LocalVariable();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.LocalVariableStatement.class) {
+ return parse_org_emftext_language_java_statements_LocalVariableStatement();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.variables.AdditionalLocalVariable.class) {
+ return parse_org_emftext_language_java_variables_AdditionalLocalVariable();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.members.Field.class) {
+ return parse_org_emftext_language_java_members_Field();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.members.AdditionalField.class) {
+ return parse_org_emftext_language_java_members_AdditionalField();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.members.EmptyMember.class) {
+ return parse_org_emftext_language_java_members_EmptyMember();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.instantiations.NewConstructorCall.class) {
+ return parse_org_emftext_language_java_instantiations_NewConstructorCall();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.instantiations.ExplicitConstructorCall.class) {
+ return parse_org_emftext_language_java_instantiations_ExplicitConstructorCall();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped.class) {
+ return parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped.class) {
+ return parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.arrays.ArrayInstantiationBySize.class) {
+ return parse_org_emftext_language_java_arrays_ArrayInstantiationBySize();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.arrays.ArrayInitializer.class) {
+ return parse_org_emftext_language_java_arrays_ArrayInitializer();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.arrays.ArraySelector.class) {
+ return parse_org_emftext_language_java_arrays_ArraySelector();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.NamespaceClassifierReference.class) {
+ return parse_org_emftext_language_java_types_NamespaceClassifierReference();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.ClassifierReference.class) {
+ return parse_org_emftext_language_java_types_ClassifierReference();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.references.MethodCall.class) {
+ return parse_org_emftext_language_java_references_MethodCall();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.references.IdentifierReference.class) {
+ return parse_org_emftext_language_java_references_IdentifierReference();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.references.ReflectiveClassReference.class) {
+ return parse_org_emftext_language_java_references_ReflectiveClassReference();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.references.SelfReference.class) {
+ return parse_org_emftext_language_java_references_SelfReference();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.references.PrimitiveTypeReference.class) {
+ return parse_org_emftext_language_java_references_PrimitiveTypeReference();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.This.class) {
+ return parse_org_emftext_language_java_literals_This();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.Super.class) {
+ return parse_org_emftext_language_java_literals_Super();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.references.StringReference.class) {
+ return parse_org_emftext_language_java_references_StringReference();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.generics.QualifiedTypeArgument.class) {
+ return parse_org_emftext_language_java_generics_QualifiedTypeArgument();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.generics.UnknownTypeArgument.class) {
+ return parse_org_emftext_language_java_generics_UnknownTypeArgument();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.generics.ExtendsTypeArgument.class) {
+ return parse_org_emftext_language_java_generics_ExtendsTypeArgument();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.generics.SuperTypeArgument.class) {
+ return parse_org_emftext_language_java_generics_SuperTypeArgument();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Assert.class) {
+ return parse_org_emftext_language_java_statements_Assert();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Condition.class) {
+ return parse_org_emftext_language_java_statements_Condition();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.ForLoop.class) {
+ return parse_org_emftext_language_java_statements_ForLoop();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.ForEachLoop.class) {
+ return parse_org_emftext_language_java_statements_ForEachLoop();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.WhileLoop.class) {
+ return parse_org_emftext_language_java_statements_WhileLoop();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.DoWhileLoop.class) {
+ return parse_org_emftext_language_java_statements_DoWhileLoop();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.EmptyStatement.class) {
+ return parse_org_emftext_language_java_statements_EmptyStatement();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.SynchronizedBlock.class) {
+ return parse_org_emftext_language_java_statements_SynchronizedBlock();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.TryBlock.class) {
+ return parse_org_emftext_language_java_statements_TryBlock();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.CatchBlock.class) {
+ return parse_org_emftext_language_java_statements_CatchBlock();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Switch.class) {
+ return parse_org_emftext_language_java_statements_Switch();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.NormalSwitchCase.class) {
+ return parse_org_emftext_language_java_statements_NormalSwitchCase();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.DefaultSwitchCase.class) {
+ return parse_org_emftext_language_java_statements_DefaultSwitchCase();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Return.class) {
+ return parse_org_emftext_language_java_statements_Return();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Throw.class) {
+ return parse_org_emftext_language_java_statements_Throw();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Break.class) {
+ return parse_org_emftext_language_java_statements_Break();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.Continue.class) {
+ return parse_org_emftext_language_java_statements_Continue();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.JumpLabel.class) {
+ return parse_org_emftext_language_java_statements_JumpLabel();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.statements.ExpressionStatement.class) {
+ return parse_org_emftext_language_java_statements_ExpressionStatement();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.ExpressionList.class) {
+ return parse_org_emftext_language_java_expressions_ExpressionList();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.AssignmentExpression.class) {
+ return parse_org_emftext_language_java_expressions_AssignmentExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.ConditionalExpression.class) {
+ return parse_org_emftext_language_java_expressions_ConditionalExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.ConditionalOrExpression.class) {
+ return parse_org_emftext_language_java_expressions_ConditionalOrExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.ConditionalAndExpression.class) {
+ return parse_org_emftext_language_java_expressions_ConditionalAndExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.InclusiveOrExpression.class) {
+ return parse_org_emftext_language_java_expressions_InclusiveOrExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.ExclusiveOrExpression.class) {
+ return parse_org_emftext_language_java_expressions_ExclusiveOrExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.AndExpression.class) {
+ return parse_org_emftext_language_java_expressions_AndExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.EqualityExpression.class) {
+ return parse_org_emftext_language_java_expressions_EqualityExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.InstanceOfExpression.class) {
+ return parse_org_emftext_language_java_expressions_InstanceOfExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.RelationExpression.class) {
+ return parse_org_emftext_language_java_expressions_RelationExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.ShiftExpression.class) {
+ return parse_org_emftext_language_java_expressions_ShiftExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.AdditiveExpression.class) {
+ return parse_org_emftext_language_java_expressions_AdditiveExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.MultiplicativeExpression.class) {
+ return parse_org_emftext_language_java_expressions_MultiplicativeExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.UnaryExpression.class) {
+ return parse_org_emftext_language_java_expressions_UnaryExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.SuffixUnaryModificationExpression.class) {
+ return parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.PrefixUnaryModificationExpression.class) {
+ return parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.CastExpression.class) {
+ return parse_org_emftext_language_java_expressions_CastExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.expressions.NestedExpression.class) {
+ return parse_org_emftext_language_java_expressions_NestedExpression();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Assignment.class) {
+ return parse_org_emftext_language_java_operators_Assignment();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentPlus.class) {
+ return parse_org_emftext_language_java_operators_AssignmentPlus();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentMinus.class) {
+ return parse_org_emftext_language_java_operators_AssignmentMinus();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentMultiplication.class) {
+ return parse_org_emftext_language_java_operators_AssignmentMultiplication();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentDivision.class) {
+ return parse_org_emftext_language_java_operators_AssignmentDivision();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentAnd.class) {
+ return parse_org_emftext_language_java_operators_AssignmentAnd();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentOr.class) {
+ return parse_org_emftext_language_java_operators_AssignmentOr();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentExclusiveOr.class) {
+ return parse_org_emftext_language_java_operators_AssignmentExclusiveOr();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentModulo.class) {
+ return parse_org_emftext_language_java_operators_AssignmentModulo();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentLeftShift.class) {
+ return parse_org_emftext_language_java_operators_AssignmentLeftShift();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentRightShift.class) {
+ return parse_org_emftext_language_java_operators_AssignmentRightShift();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.AssignmentUnsignedRightShift.class) {
+ return parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Addition.class) {
+ return parse_org_emftext_language_java_operators_Addition();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Subtraction.class) {
+ return parse_org_emftext_language_java_operators_Subtraction();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Multiplication.class) {
+ return parse_org_emftext_language_java_operators_Multiplication();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Division.class) {
+ return parse_org_emftext_language_java_operators_Division();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Remainder.class) {
+ return parse_org_emftext_language_java_operators_Remainder();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.LessThan.class) {
+ return parse_org_emftext_language_java_operators_LessThan();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.LessThanOrEqual.class) {
+ return parse_org_emftext_language_java_operators_LessThanOrEqual();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.GreaterThan.class) {
+ return parse_org_emftext_language_java_operators_GreaterThan();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.GreaterThanOrEqual.class) {
+ return parse_org_emftext_language_java_operators_GreaterThanOrEqual();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.LeftShift.class) {
+ return parse_org_emftext_language_java_operators_LeftShift();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.RightShift.class) {
+ return parse_org_emftext_language_java_operators_RightShift();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.UnsignedRightShift.class) {
+ return parse_org_emftext_language_java_operators_UnsignedRightShift();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Equal.class) {
+ return parse_org_emftext_language_java_operators_Equal();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.NotEqual.class) {
+ return parse_org_emftext_language_java_operators_NotEqual();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.PlusPlus.class) {
+ return parse_org_emftext_language_java_operators_PlusPlus();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.MinusMinus.class) {
+ return parse_org_emftext_language_java_operators_MinusMinus();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Complement.class) {
+ return parse_org_emftext_language_java_operators_Complement();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.operators.Negate.class) {
+ return parse_org_emftext_language_java_operators_Negate();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.arrays.ArrayDimension.class) {
+ return parse_org_emftext_language_java_arrays_ArrayDimension();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.NullLiteral.class) {
+ return parse_org_emftext_language_java_literals_NullLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Public.class) {
+ return parse_org_emftext_language_java_modifiers_Public();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Abstract.class) {
+ return parse_org_emftext_language_java_modifiers_Abstract();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Protected.class) {
+ return parse_org_emftext_language_java_modifiers_Protected();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Private.class) {
+ return parse_org_emftext_language_java_modifiers_Private();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Final.class) {
+ return parse_org_emftext_language_java_modifiers_Final();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Static.class) {
+ return parse_org_emftext_language_java_modifiers_Static();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Native.class) {
+ return parse_org_emftext_language_java_modifiers_Native();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Synchronized.class) {
+ return parse_org_emftext_language_java_modifiers_Synchronized();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Transient.class) {
+ return parse_org_emftext_language_java_modifiers_Transient();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Volatile.class) {
+ return parse_org_emftext_language_java_modifiers_Volatile();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.modifiers.Strictfp.class) {
+ return parse_org_emftext_language_java_modifiers_Strictfp();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Void.class) {
+ return parse_org_emftext_language_java_types_Void();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Boolean.class) {
+ return parse_org_emftext_language_java_types_Boolean();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Char.class) {
+ return parse_org_emftext_language_java_types_Char();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Byte.class) {
+ return parse_org_emftext_language_java_types_Byte();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Short.class) {
+ return parse_org_emftext_language_java_types_Short();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Int.class) {
+ return parse_org_emftext_language_java_types_Int();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Long.class) {
+ return parse_org_emftext_language_java_types_Long();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Float.class) {
+ return parse_org_emftext_language_java_types_Float();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.types.Double.class) {
+ return parse_org_emftext_language_java_types_Double();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.DecimalLongLiteral.class) {
+ return parse_org_emftext_language_java_literals_DecimalLongLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.DecimalFloatLiteral.class) {
+ return parse_org_emftext_language_java_literals_DecimalFloatLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.DecimalIntegerLiteral.class) {
+ return parse_org_emftext_language_java_literals_DecimalIntegerLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.DecimalDoubleLiteral.class) {
+ return parse_org_emftext_language_java_literals_DecimalDoubleLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.HexLongLiteral.class) {
+ return parse_org_emftext_language_java_literals_HexLongLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.HexFloatLiteral.class) {
+ return parse_org_emftext_language_java_literals_HexFloatLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.HexDoubleLiteral.class) {
+ return parse_org_emftext_language_java_literals_HexDoubleLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.HexIntegerLiteral.class) {
+ return parse_org_emftext_language_java_literals_HexIntegerLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.OctalLongLiteral.class) {
+ return parse_org_emftext_language_java_literals_OctalLongLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.OctalIntegerLiteral.class) {
+ return parse_org_emftext_language_java_literals_OctalIntegerLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.CharacterLiteral.class) {
+ return parse_org_emftext_language_java_literals_CharacterLiteral();
+ }
+ if (type.getInstanceClass() == org.emftext.language.java.literals.BooleanLiteral.class) {
+ return parse_org_emftext_language_java_literals_BooleanLiteral();
+ }
+ }
+ throw new org.emftext.language.java.resource.java.mopp.JavaUnexpectedContentTypeException(typeObject);
+ }
+
+ public int getMismatchedTokenRecoveryTries() {
+ return mismatchedTokenRecoveryTries;
+ }
+
+ public Object getMissingSymbol(org.antlr.runtime3_4_0.IntStream arg0, org.antlr.runtime3_4_0.RecognitionException arg1, int arg2, org.antlr.runtime3_4_0.BitSet arg3) {
+ mismatchedTokenRecoveryTries++;
+ return super.getMissingSymbol(arg0, arg1, arg2, arg3);
+ }
+
+ public Object getParseToIndexTypeObject() {
+ return parseToIndexTypeObject;
+ }
+
+ protected Object getTypeObject() {
+ Object typeObject = getParseToIndexTypeObject();
+ if (typeObject != null) {
+ return typeObject;
+ }
+ java.util.Map,?> options = getOptions();
+ if (options != null) {
+ typeObject = options.get(org.emftext.language.java.resource.java.IJavaOptions.RESOURCE_CONTENT_TYPE);
+ }
+ return typeObject;
+ }
+
+ /**
+ * Implementation that calls {@link #doParse()} and handles the thrown
+ * RecognitionExceptions.
+ */
+ public org.emftext.language.java.resource.java.IJavaParseResult parse() {
+ terminateParsing = false;
+ postParseCommands = new java.util.ArrayList>();
+ org.emftext.language.java.resource.java.mopp.JavaParseResult parseResult = new org.emftext.language.java.resource.java.mopp.JavaParseResult();
+ try {
+ org.eclipse.emf.ecore.EObject result = doParse();
+ if (lexerExceptions.isEmpty()) {
+ parseResult.setRoot(result);
+ }
+ } catch (org.antlr.runtime3_4_0.RecognitionException re) {
+ reportError(re);
+ } catch (java.lang.IllegalArgumentException iae) {
+ if ("The 'no null' constraint is violated".equals(iae.getMessage())) {
+ // can be caused if a null is set on EMF models where not allowed. this will just
+ // happen if other errors occurred before
+ } else {
+ iae.printStackTrace();
+ }
+ }
+ for (org.antlr.runtime3_4_0.RecognitionException re : lexerExceptions) {
+ reportLexicalError(re);
+ }
+ parseResult.getPostParseCommands().addAll(postParseCommands);
+ return parseResult;
+ }
+
+ public java.util.List parseToExpectedElements(org.eclipse.emf.ecore.EClass type, org.emftext.language.java.resource.java.IJavaTextResource dummyResource, int cursorOffset) {
+ this.rememberExpectedElements = true;
+ this.parseToIndexTypeObject = type;
+ this.cursorOffset = cursorOffset;
+ this.lastStartIncludingHidden = -1;
+ final org.antlr.runtime3_4_0.CommonTokenStream tokenStream = (org.antlr.runtime3_4_0.CommonTokenStream) getTokenStream();
+ org.emftext.language.java.resource.java.IJavaParseResult result = parse();
+ for (org.eclipse.emf.ecore.EObject incompleteObject : incompleteObjects) {
+ org.antlr.runtime3_4_0.Lexer lexer = (org.antlr.runtime3_4_0.Lexer) tokenStream.getTokenSource();
+ int endChar = lexer.getCharIndex();
+ int endLine = lexer.getLine();
+ setLocalizationEnd(result.getPostParseCommands(), incompleteObject, endChar, endLine);
+ }
+ if (result != null) {
+ org.eclipse.emf.ecore.EObject root = result.getRoot();
+ if (root != null) {
+ dummyResource.getContentsInternal().add(root);
+ }
+ for (org.emftext.language.java.resource.java.IJavaCommand command : result.getPostParseCommands()) {
+ command.execute(dummyResource);
+ }
+ }
+ // remove all expected elements that were added after the last complete element
+ expectedElements = expectedElements.subList(0, expectedElementsIndexOfLastCompleteElement + 1);
+ int lastFollowSetID = expectedElements.get(expectedElementsIndexOfLastCompleteElement).getFollowSetID();
+ java.util.Set currentFollowSet = new java.util.LinkedHashSet();
+ java.util.List newFollowSet = new java.util.ArrayList();
+ for (int i = expectedElementsIndexOfLastCompleteElement; i >= 0; i--) {
+ org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal expectedElementI = expectedElements.get(i);
+ if (expectedElementI.getFollowSetID() == lastFollowSetID) {
+ currentFollowSet.add(expectedElementI);
+ } else {
+ break;
+ }
+ }
+ int followSetID = 804;
+ int i;
+ for (i = tokenIndexOfLastCompleteElement; i < tokenStream.size(); i++) {
+ org.antlr.runtime3_4_0.CommonToken nextToken = (org.antlr.runtime3_4_0.CommonToken) tokenStream.get(i);
+ if (nextToken.getType() < 0) {
+ break;
+ }
+ if (nextToken.getChannel() == 99) {
+ // hidden tokens do not reduce the follow set
+ } else {
+ // now that we have found the next visible token the position for that expected
+ // terminals can be set
+ for (org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal nextFollow : newFollowSet) {
+ lastTokenIndex = 0;
+ setPosition(nextFollow, i);
+ }
+ newFollowSet.clear();
+ // normal tokens do reduce the follow set - only elements that match the token are
+ // kept
+ for (org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal nextFollow : currentFollowSet) {
+ if (nextFollow.getTerminal().getTokenNames().contains(getTokenNames()[nextToken.getType()])) {
+ // keep this one - it matches
+ java.util.Collection> newFollowers = nextFollow.getTerminal().getFollowers();
+ for (org.emftext.language.java.resource.java.util.JavaPair newFollowerPair : newFollowers) {
+ org.emftext.language.java.resource.java.IJavaExpectedElement newFollower = newFollowerPair.getLeft();
+ org.eclipse.emf.ecore.EObject container = getLastIncompleteElement();
+ org.emftext.language.java.resource.java.grammar.JavaContainmentTrace containmentTrace = new org.emftext.language.java.resource.java.grammar.JavaContainmentTrace(null, newFollowerPair.getRight());
+ org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal newFollowTerminal = new org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal(container, newFollower, followSetID, containmentTrace);
+ newFollowSet.add(newFollowTerminal);
+ expectedElements.add(newFollowTerminal);
+ }
+ }
+ }
+ currentFollowSet.clear();
+ currentFollowSet.addAll(newFollowSet);
+ }
+ followSetID++;
+ }
+ // after the last token in the stream we must set the position for the elements
+ // that were added during the last iteration of the loop
+ for (org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal nextFollow : newFollowSet) {
+ lastTokenIndex = 0;
+ setPosition(nextFollow, i);
+ }
+ return this.expectedElements;
+ }
+
+ public void setPosition(org.emftext.language.java.resource.java.mopp.JavaExpectedTerminal expectedElement, int tokenIndex) {
+ int currentIndex = Math.max(0, tokenIndex);
+ for (int index = lastTokenIndex; index < currentIndex; index++) {
+ if (index >= input.size()) {
+ break;
+ }
+ org.antlr.runtime3_4_0.CommonToken tokenAtIndex = (org.antlr.runtime3_4_0.CommonToken) input.get(index);
+ stopIncludingHiddenTokens = tokenAtIndex.getStopIndex() + 1;
+ if (tokenAtIndex.getChannel() != 99 && !anonymousTokens.contains(tokenAtIndex)) {
+ stopExcludingHiddenTokens = tokenAtIndex.getStopIndex() + 1;
+ }
+ }
+ lastTokenIndex = Math.max(0, currentIndex);
+ expectedElement.setPosition(stopExcludingHiddenTokens, stopIncludingHiddenTokens);
+ }
+
+ public Object recoverFromMismatchedToken(org.antlr.runtime3_4_0.IntStream input, int ttype, org.antlr.runtime3_4_0.BitSet follow) throws org.antlr.runtime3_4_0.RecognitionException {
+ if (!rememberExpectedElements) {
+ return super.recoverFromMismatchedToken(input, ttype, follow);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Translates errors thrown by the parser into human readable messages.
+ */
+ public void reportError(final org.antlr.runtime3_4_0.RecognitionException e) {
+ String message = e.getMessage();
+ if (e instanceof org.antlr.runtime3_4_0.MismatchedTokenException) {
+ org.antlr.runtime3_4_0.MismatchedTokenException mte = (org.antlr.runtime3_4_0.MismatchedTokenException) e;
+ String expectedTokenName = formatTokenName(mte.expecting);
+ String actualTokenName = formatTokenName(e.token.getType());
+ message = "Syntax error on token \"" + e.token.getText() + " (" + actualTokenName + ")\", \"" + expectedTokenName + "\" expected";
+ } else if (e instanceof org.antlr.runtime3_4_0.MismatchedTreeNodeException) {
+ org.antlr.runtime3_4_0.MismatchedTreeNodeException mtne = (org.antlr.runtime3_4_0.MismatchedTreeNodeException) e;
+ String expectedTokenName = formatTokenName(mtne.expecting);
+ message = "mismatched tree node: " + "xxx" + "; tokenName " + expectedTokenName;
+ } else if (e instanceof org.antlr.runtime3_4_0.NoViableAltException) {
+ message = "Syntax error on token \"" + e.token.getText() + "\", check following tokens";
+ } else if (e instanceof org.antlr.runtime3_4_0.EarlyExitException) {
+ message = "Syntax error on token \"" + e.token.getText() + "\", delete this token";
+ } else if (e instanceof org.antlr.runtime3_4_0.MismatchedSetException) {
+ org.antlr.runtime3_4_0.MismatchedSetException mse = (org.antlr.runtime3_4_0.MismatchedSetException) e;
+ message = "mismatched token: " + e.token + "; expecting set " + mse.expecting;
+ } else if (e instanceof org.antlr.runtime3_4_0.MismatchedNotSetException) {
+ org.antlr.runtime3_4_0.MismatchedNotSetException mse = (org.antlr.runtime3_4_0.MismatchedNotSetException) e;
+ message = "mismatched token: " + e.token + "; expecting set " + mse.expecting;
+ } else if (e instanceof org.antlr.runtime3_4_0.FailedPredicateException) {
+ org.antlr.runtime3_4_0.FailedPredicateException fpe = (org.antlr.runtime3_4_0.FailedPredicateException) e;
+ message = "rule " + fpe.ruleName + " failed predicate: {" + fpe.predicateText + "}?";
+ }
+ // the resource may be null if the parser is used for code completion
+ final String finalMessage = message;
+ if (e.token instanceof org.antlr.runtime3_4_0.CommonToken) {
+ final org.antlr.runtime3_4_0.CommonToken ct = (org.antlr.runtime3_4_0.CommonToken) e.token;
+ addErrorToResource(finalMessage, ct.getCharPositionInLine(), ct.getLine(), ct.getStartIndex(), ct.getStopIndex());
+ } else {
+ addErrorToResource(finalMessage, e.token.getCharPositionInLine(), e.token.getLine(), 1, 5);
+ }
+ }
+
+ /**
+ * Translates errors thrown by the lexer into human readable messages.
+ */
+ public void reportLexicalError(final org.antlr.runtime3_4_0.RecognitionException e) {
+ String message = "";
+ if (e instanceof org.antlr.runtime3_4_0.MismatchedTokenException) {
+ org.antlr.runtime3_4_0.MismatchedTokenException mte = (org.antlr.runtime3_4_0.MismatchedTokenException) e;
+ message = "Syntax error on token \"" + ((char) e.c) + "\", \"" + (char) mte.expecting + "\" expected";
+ } else if (e instanceof org.antlr.runtime3_4_0.NoViableAltException) {
+ message = "Syntax error on token \"" + ((char) e.c) + "\", delete this token";
+ } else if (e instanceof org.antlr.runtime3_4_0.EarlyExitException) {
+ org.antlr.runtime3_4_0.EarlyExitException eee = (org.antlr.runtime3_4_0.EarlyExitException) e;
+ message = "required (...)+ loop (decision=" + eee.decisionNumber + ") did not match anything; on line " + e.line + ":" + e.charPositionInLine + " char=" + ((char) e.c) + "'";
+ } else if (e instanceof org.antlr.runtime3_4_0.MismatchedSetException) {
+ org.antlr.runtime3_4_0.MismatchedSetException mse = (org.antlr.runtime3_4_0.MismatchedSetException) e;
+ message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set " + mse.expecting;
+ } else if (e instanceof org.antlr.runtime3_4_0.MismatchedNotSetException) {
+ org.antlr.runtime3_4_0.MismatchedNotSetException mse = (org.antlr.runtime3_4_0.MismatchedNotSetException) e;
+ message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set " + mse.expecting;
+ } else if (e instanceof org.antlr.runtime3_4_0.MismatchedRangeException) {
+ org.antlr.runtime3_4_0.MismatchedRangeException mre = (org.antlr.runtime3_4_0.MismatchedRangeException) e;
+ message = "mismatched char: '" + ((char) e.c) + "' on line " + e.line + ":" + e.charPositionInLine + "; expecting set '" + (char) mre.a + "'..'" + (char) mre.b + "'";
+ } else if (e instanceof org.antlr.runtime3_4_0.FailedPredicateException) {
+ org.antlr.runtime3_4_0.FailedPredicateException fpe = (org.antlr.runtime3_4_0.FailedPredicateException) e;
+ message = "rule " + fpe.ruleName + " failed predicate: {" + fpe.predicateText + "}?";
+ }
+ addErrorToResource(message, e.charPositionInLine, e.line, lexerExceptionsPosition.get(lexerExceptions.indexOf(e)), lexerExceptionsPosition.get(lexerExceptions.indexOf(e)));
+ }
+
+ private void startIncompleteElement(Object object) {
+ if (object instanceof org.eclipse.emf.ecore.EObject) {
+ this.incompleteObjects.add((org.eclipse.emf.ecore.EObject) object);
+ }
+ }
+
+ private void completedElement(Object object, boolean isContainment) {
+ if (isContainment && !this.incompleteObjects.isEmpty()) {
+ boolean exists = this.incompleteObjects.remove(object);
+ if (!exists) {
+ }
+ }
+ if (object instanceof org.eclipse.emf.ecore.EObject) {
+ this.tokenIndexOfLastCompleteElement = getTokenStream().index();
+ this.expectedElementsIndexOfLastCompleteElement = expectedElements.size() - 1;
+ }
+ }
+
+ private org.eclipse.emf.ecore.EObject getLastIncompleteElement() {
+ if (incompleteObjects.isEmpty()) {
+ return null;
+ }
+ return incompleteObjects.get(incompleteObjects.size() - 1);
+ }
+
+
+
+
+ // $ANTLR start "start"
+ // Java.g:958:1: start returns [ org.eclipse.emf.ecore.EObject element = null] : (c0= parse_org_emftext_language_java_containers_CompilationUnit |c1= parse_org_emftext_language_java_containers_Package |c2= parse_org_emftext_language_java_containers_EmptyModel ) EOF ;
+ public final org.eclipse.emf.ecore.EObject start() throws RecognitionException {
+ org.eclipse.emf.ecore.EObject element = null;
+
+ int start_StartIndex = input.index();
+
+ org.emftext.language.java.containers.CompilationUnit c0 =null;
+
+ org.emftext.language.java.containers.Package c1 =null;
+
+ org.emftext.language.java.containers.EmptyModel c2 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return element; }
+
+ // Java.g:959:2: ( (c0= parse_org_emftext_language_java_containers_CompilationUnit |c1= parse_org_emftext_language_java_containers_Package |c2= parse_org_emftext_language_java_containers_EmptyModel ) EOF )
+ // Java.g:960:2: (c0= parse_org_emftext_language_java_containers_CompilationUnit |c1= parse_org_emftext_language_java_containers_Package |c2= parse_org_emftext_language_java_containers_EmptyModel ) EOF
+ {
+ if ( state.backtracking==0 ) {
+ // follow set for start rule(s)
+ addExpectedElement(0);
+ addExpectedElement(1);
+ addExpectedElement(2);
+ addExpectedElement(3);
+ addExpectedElement(4);
+ addExpectedElement(5);
+ addExpectedElement(6);
+ addExpectedElement(7);
+ addExpectedElement(8);
+ addExpectedElement(9);
+ addExpectedElement(10);
+ addExpectedElement(11);
+ addExpectedElement(12);
+ addExpectedElement(13);
+ addExpectedElement(14);
+ addExpectedElement(15);
+ addExpectedElement(16);
+ addExpectedElement(17);
+ addExpectedElement(18);
+ addExpectedElement(19);
+ addExpectedElement(20);
+ addExpectedElement(21);
+ addExpectedElement(22);
+ addExpectedElement(23);
+ addExpectedElement(24);
+ addExpectedElement(25);
+ addExpectedElement(26);
+ addExpectedElement(27);
+ addExpectedElement(28);
+ expectedElementsIndexOfLastCompleteElement = 0;
+ }
+
+ // Java.g:993:2: (c0= parse_org_emftext_language_java_containers_CompilationUnit |c1= parse_org_emftext_language_java_containers_Package |c2= parse_org_emftext_language_java_containers_EmptyModel )
+ int alt1=3;
+ switch ( input.LA(1) ) {
+ case 86:
+ {
+ int LA1_1 = input.LA(2);
+
+ if ( (synpred1_Java()) ) {
+ alt1=1;
+ }
+ else if ( (synpred2_Java()) ) {
+ alt1=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 78:
+ {
+ int LA1_2 = input.LA(2);
+
+ if ( (synpred1_Java()) ) {
+ alt1=1;
+ }
+ else if ( (true) ) {
+ alt1=3;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 42:
+ {
+ int LA1_3 = input.LA(2);
+
+ if ( (synpred1_Java()) ) {
+ alt1=1;
+ }
+ else if ( (true) ) {
+ alt1=3;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 48:
+ {
+ int LA1_4 = input.LA(2);
+
+ if ( (synpred1_Java()) ) {
+ alt1=1;
+ }
+ else if ( (synpred2_Java()) ) {
+ alt1=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 56:
+ case 64:
+ case 70:
+ case 72:
+ case 81:
+ case 83:
+ case 87:
+ case 88:
+ case 89:
+ case 92:
+ case 93:
+ case 96:
+ case 100:
+ case 103:
+ {
+ alt1=1;
+ }
+ break;
+ case EOF:
+ {
+ alt1=3;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 1, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt1) {
+ case 1 :
+ // Java.g:994:3: c0= parse_org_emftext_language_java_containers_CompilationUnit
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_containers_CompilationUnit_in_start82);
+ c0=parse_org_emftext_language_java_containers_CompilationUnit();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; }
+
+ }
+ break;
+ case 2 :
+ // Java.g:995:8: c1= parse_org_emftext_language_java_containers_Package
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_containers_Package_in_start96);
+ c1=parse_org_emftext_language_java_containers_Package();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; }
+
+ }
+ break;
+ case 3 :
+ // Java.g:996:8: c2= parse_org_emftext_language_java_containers_EmptyModel
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_containers_EmptyModel_in_start110);
+ c2=parse_org_emftext_language_java_containers_EmptyModel();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; }
+
+ }
+ break;
+
+ }
+
+
+ match(input,EOF,FOLLOW_EOF_in_start117); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ retrieveLayoutInformation(element, null, null, false);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 1, start_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "start"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_containers_EmptyModel"
+ // Java.g:1004:1: parse_org_emftext_language_java_containers_EmptyModel returns [org.emftext.language.java.containers.EmptyModel element = null] : ( ( (a0_0= parse_org_emftext_language_java_imports_Import ) a1= ';' ) )* ( (a2= ';' ) )* ;
+ public final org.emftext.language.java.containers.EmptyModel parse_org_emftext_language_java_containers_EmptyModel() throws RecognitionException {
+ org.emftext.language.java.containers.EmptyModel element = null;
+
+ int parse_org_emftext_language_java_containers_EmptyModel_StartIndex = input.index();
+
+ Token a1=null;
+ Token a2=null;
+ org.emftext.language.java.imports.Import a0_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return element; }
+
+ // Java.g:1007:2: ( ( ( (a0_0= parse_org_emftext_language_java_imports_Import ) a1= ';' ) )* ( (a2= ';' ) )* )
+ // Java.g:1008:2: ( ( (a0_0= parse_org_emftext_language_java_imports_Import ) a1= ';' ) )* ( (a2= ';' ) )*
+ {
+ // Java.g:1008:2: ( ( (a0_0= parse_org_emftext_language_java_imports_Import ) a1= ';' ) )*
+ loop2:
+ do {
+ int alt2=2;
+ int LA2_0 = input.LA(1);
+
+ if ( (LA2_0==78) ) {
+ alt2=1;
+ }
+
+
+ switch (alt2) {
+ case 1 :
+ // Java.g:1009:3: ( (a0_0= parse_org_emftext_language_java_imports_Import ) a1= ';' )
+ {
+ // Java.g:1009:3: ( (a0_0= parse_org_emftext_language_java_imports_Import ) a1= ';' )
+ // Java.g:1010:4: (a0_0= parse_org_emftext_language_java_imports_Import ) a1= ';'
+ {
+ // Java.g:1010:4: (a0_0= parse_org_emftext_language_java_imports_Import )
+ // Java.g:1011:5: a0_0= parse_org_emftext_language_java_imports_Import
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_imports_Import_in_parse_org_emftext_language_java_containers_EmptyModel158);
+ a0_0=parse_org_emftext_language_java_imports_Import();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createEmptyModel();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.EMPTY_MODEL__IMPORTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_0_0_0_0_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(29);
+ }
+
+ a1=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_EmptyModel186); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createEmptyModel();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_0_0_0_0_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(30);
+ addExpectedElement(31);
+ addExpectedElement(32);
+ addExpectedElement(33);
+ addExpectedElement(34);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop2;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(35);
+ addExpectedElement(36);
+ addExpectedElement(37);
+ addExpectedElement(38);
+ addExpectedElement(39);
+ }
+
+ // Java.g:1065:2: ( (a2= ';' ) )*
+ loop3:
+ do {
+ int alt3=2;
+ int LA3_0 = input.LA(1);
+
+ if ( (LA3_0==42) ) {
+ alt3=1;
+ }
+
+
+ switch (alt3) {
+ case 1 :
+ // Java.g:1066:3: (a2= ';' )
+ {
+ // Java.g:1066:3: (a2= ';' )
+ // Java.g:1067:4: a2= ';'
+ {
+ a2=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_EmptyModel228); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createEmptyModel();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_0_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(40);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop3;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(41);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 2, parse_org_emftext_language_java_containers_EmptyModel_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_containers_EmptyModel"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_containers_Package"
+ // Java.g:1090:1: parse_org_emftext_language_java_containers_Package returns [org.emftext.language.java.containers.Package element = null] : ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )* a1= 'package' ( ( (a2= IDENTIFIER ) a3= '.' ) )* (a4= IDENTIFIER ) a5= ';' ( (a6= ';' ) )? ( ( (a7_0= parse_org_emftext_language_java_imports_Import ) ) )* ( (a8= ';' ) )* ;
+ public final org.emftext.language.java.containers.Package parse_org_emftext_language_java_containers_Package() throws RecognitionException {
+ org.emftext.language.java.containers.Package element = null;
+
+ int parse_org_emftext_language_java_containers_Package_StartIndex = input.index();
+
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a4=null;
+ Token a5=null;
+ Token a6=null;
+ Token a8=null;
+ org.emftext.language.java.annotations.AnnotationInstance a0_0 =null;
+
+ org.emftext.language.java.imports.Import a7_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return element; }
+
+ // Java.g:1093:2: ( ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )* a1= 'package' ( ( (a2= IDENTIFIER ) a3= '.' ) )* (a4= IDENTIFIER ) a5= ';' ( (a6= ';' ) )? ( ( (a7_0= parse_org_emftext_language_java_imports_Import ) ) )* ( (a8= ';' ) )* )
+ // Java.g:1094:2: ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )* a1= 'package' ( ( (a2= IDENTIFIER ) a3= '.' ) )* (a4= IDENTIFIER ) a5= ';' ( (a6= ';' ) )? ( ( (a7_0= parse_org_emftext_language_java_imports_Import ) ) )* ( (a8= ';' ) )*
+ {
+ // Java.g:1094:2: ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )*
+ loop4:
+ do {
+ int alt4=2;
+ int LA4_0 = input.LA(1);
+
+ if ( (LA4_0==48) ) {
+ alt4=1;
+ }
+
+
+ switch (alt4) {
+ case 1 :
+ // Java.g:1095:3: (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance )
+ {
+ // Java.g:1095:3: (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance )
+ // Java.g:1096:4: a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_containers_Package285);
+ a0_0=parse_org_emftext_language_java_annotations_AnnotationInstance();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.PACKAGE__ANNOTATIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop4;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(42);
+ addExpectedElement(43);
+ }
+
+ a1=(Token)match(input,86,FOLLOW_86_in_parse_org_emftext_language_java_containers_Package311); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(44);
+ addExpectedElement(45);
+ }
+
+ // Java.g:1138:2: ( ( (a2= IDENTIFIER ) a3= '.' ) )*
+ loop5:
+ do {
+ int alt5=2;
+ int LA5_0 = input.LA(1);
+
+ if ( (LA5_0==IDENTIFIER) ) {
+ int LA5_1 = input.LA(2);
+
+ if ( (LA5_1==37) ) {
+ alt5=1;
+ }
+
+
+ }
+
+
+ switch (alt5) {
+ case 1 :
+ // Java.g:1139:3: ( (a2= IDENTIFIER ) a3= '.' )
+ {
+ // Java.g:1139:3: ( (a2= IDENTIFIER ) a3= '.' )
+ // Java.g:1140:4: (a2= IDENTIFIER ) a3= '.'
+ {
+ // Java.g:1140:4: (a2= IDENTIFIER )
+ // Java.g:1141:5: a2= IDENTIFIER
+ {
+ a2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_Package340); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ if (a2 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.PACKAGE__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.PACKAGE__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_2_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a2, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(46);
+ }
+
+ a3=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_containers_Package373); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_2_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(47);
+ addExpectedElement(48);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop5;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(49);
+ addExpectedElement(50);
+ }
+
+ // Java.g:1199:2: (a4= IDENTIFIER )
+ // Java.g:1200:3: a4= IDENTIFIER
+ {
+ a4=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_Package410); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ if (a4 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.PACKAGE__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.PACKAGE__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_3, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(51);
+ }
+
+ a5=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_Package431); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(52);
+ addExpectedElement(53);
+ addExpectedElement(54);
+ addExpectedElement(55);
+ addExpectedElement(56);
+ addExpectedElement(57);
+ }
+
+ // Java.g:1254:2: ( (a6= ';' ) )?
+ int alt6=2;
+ int LA6_0 = input.LA(1);
+
+ if ( (LA6_0==42) ) {
+ int LA6_1 = input.LA(2);
+
+ if ( (synpred7_Java()) ) {
+ alt6=1;
+ }
+ }
+ switch (alt6) {
+ case 1 :
+ // Java.g:1255:3: (a6= ';' )
+ {
+ // Java.g:1255:3: (a6= ';' )
+ // Java.g:1256:4: a6= ';'
+ {
+ a6=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_Package454); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_5_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(58);
+ addExpectedElement(59);
+ addExpectedElement(60);
+ addExpectedElement(61);
+ addExpectedElement(62);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(63);
+ addExpectedElement(64);
+ addExpectedElement(65);
+ addExpectedElement(66);
+ addExpectedElement(67);
+ }
+
+ // Java.g:1285:2: ( ( (a7_0= parse_org_emftext_language_java_imports_Import ) ) )*
+ loop7:
+ do {
+ int alt7=2;
+ int LA7_0 = input.LA(1);
+
+ if ( (LA7_0==78) ) {
+ alt7=1;
+ }
+
+
+ switch (alt7) {
+ case 1 :
+ // Java.g:1286:3: ( (a7_0= parse_org_emftext_language_java_imports_Import ) )
+ {
+ // Java.g:1286:3: ( (a7_0= parse_org_emftext_language_java_imports_Import ) )
+ // Java.g:1287:4: (a7_0= parse_org_emftext_language_java_imports_Import )
+ {
+ // Java.g:1287:4: (a7_0= parse_org_emftext_language_java_imports_Import )
+ // Java.g:1288:5: a7_0= parse_org_emftext_language_java_imports_Import
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_imports_Import_in_parse_org_emftext_language_java_containers_Package502);
+ a7_0=parse_org_emftext_language_java_imports_Import();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.PACKAGE__IMPORTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_8_0_0_0, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(68);
+ addExpectedElement(69);
+ addExpectedElement(70);
+ addExpectedElement(71);
+ addExpectedElement(72);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop7;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(73);
+ addExpectedElement(74);
+ addExpectedElement(75);
+ addExpectedElement(76);
+ addExpectedElement(77);
+ }
+
+ // Java.g:1328:2: ( (a8= ';' ) )*
+ loop8:
+ do {
+ int alt8=2;
+ int LA8_0 = input.LA(1);
+
+ if ( (LA8_0==42) ) {
+ alt8=1;
+ }
+
+
+ switch (alt8) {
+ case 1 :
+ // Java.g:1329:3: (a8= ';' )
+ {
+ // Java.g:1329:3: (a8= ';' )
+ // Java.g:1330:4: a8= ';'
+ {
+ a8=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_Package552); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createPackage();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_1_0_0_9_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a8, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(78);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop8;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(79);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 3, parse_org_emftext_language_java_containers_Package_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_containers_Package"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_containers_CompilationUnit"
+ // Java.g:1353:1: parse_org_emftext_language_java_containers_CompilationUnit returns [org.emftext.language.java.containers.CompilationUnit element = null] : ( (a0= 'package' (a1= IDENTIFIER ) ( (a2= '.' (a3= IDENTIFIER ) ) )* a4= ';' ) )? ( ( (a5_0= parse_org_emftext_language_java_imports_Import ) ) )* ( (a6= ';' ) )* ( ( (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier ) ( (a8= ';' ) )* ) )+ ( (a9= '\\u001a' ) )? ;
+ public final org.emftext.language.java.containers.CompilationUnit parse_org_emftext_language_java_containers_CompilationUnit() throws RecognitionException {
+ org.emftext.language.java.containers.CompilationUnit element = null;
+
+ int parse_org_emftext_language_java_containers_CompilationUnit_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a4=null;
+ Token a6=null;
+ Token a8=null;
+ Token a9=null;
+ org.emftext.language.java.imports.Import a5_0 =null;
+
+ org.emftext.language.java.classifiers.ConcreteClassifier a7_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return element; }
+
+ // Java.g:1356:2: ( ( (a0= 'package' (a1= IDENTIFIER ) ( (a2= '.' (a3= IDENTIFIER ) ) )* a4= ';' ) )? ( ( (a5_0= parse_org_emftext_language_java_imports_Import ) ) )* ( (a6= ';' ) )* ( ( (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier ) ( (a8= ';' ) )* ) )+ ( (a9= '\\u001a' ) )? )
+ // Java.g:1357:2: ( (a0= 'package' (a1= IDENTIFIER ) ( (a2= '.' (a3= IDENTIFIER ) ) )* a4= ';' ) )? ( ( (a5_0= parse_org_emftext_language_java_imports_Import ) ) )* ( (a6= ';' ) )* ( ( (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier ) ( (a8= ';' ) )* ) )+ ( (a9= '\\u001a' ) )?
+ {
+ // Java.g:1357:2: ( (a0= 'package' (a1= IDENTIFIER ) ( (a2= '.' (a3= IDENTIFIER ) ) )* a4= ';' ) )?
+ int alt10=2;
+ int LA10_0 = input.LA(1);
+
+ if ( (LA10_0==86) ) {
+ alt10=1;
+ }
+ switch (alt10) {
+ case 1 :
+ // Java.g:1358:3: (a0= 'package' (a1= IDENTIFIER ) ( (a2= '.' (a3= IDENTIFIER ) ) )* a4= ';' )
+ {
+ // Java.g:1358:3: (a0= 'package' (a1= IDENTIFIER ) ( (a2= '.' (a3= IDENTIFIER ) ) )* a4= ';' )
+ // Java.g:1359:4: a0= 'package' (a1= IDENTIFIER ) ( (a2= '.' (a3= IDENTIFIER ) ) )* a4= ';'
+ {
+ a0=(Token)match(input,86,FOLLOW_86_in_parse_org_emftext_language_java_containers_CompilationUnit609); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_0_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(80);
+ }
+
+ // Java.g:1373:4: (a1= IDENTIFIER )
+ // Java.g:1374:5: a1= IDENTIFIER
+ {
+ a1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_CompilationUnit635); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ if (a1 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_0_0_0_1, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(81);
+ addExpectedElement(82);
+ }
+
+ // Java.g:1410:4: ( (a2= '.' (a3= IDENTIFIER ) ) )*
+ loop9:
+ do {
+ int alt9=2;
+ int LA9_0 = input.LA(1);
+
+ if ( (LA9_0==37) ) {
+ alt9=1;
+ }
+
+
+ switch (alt9) {
+ case 1 :
+ // Java.g:1411:5: (a2= '.' (a3= IDENTIFIER ) )
+ {
+ // Java.g:1411:5: (a2= '.' (a3= IDENTIFIER ) )
+ // Java.g:1412:6: a2= '.' (a3= IDENTIFIER )
+ {
+ a2=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_containers_CompilationUnit681); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_0_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(83);
+ }
+
+ // Java.g:1426:6: (a3= IDENTIFIER )
+ // Java.g:1427:7: a3= IDENTIFIER
+ {
+ a3=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_CompilationUnit715); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ if (a3 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a3.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a3).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_0_0_0_2_0_0_1, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a3, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(84);
+ addExpectedElement(85);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop9;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(86);
+ addExpectedElement(87);
+ }
+
+ a4=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_CompilationUnit783); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_0_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(88);
+ addExpectedElement(89);
+ addExpectedElement(90);
+ addExpectedElement(91);
+ addExpectedElement(92);
+ addExpectedElement(93);
+ addExpectedElement(94);
+ addExpectedElement(95);
+ addExpectedElement(96);
+ addExpectedElement(97);
+ addExpectedElement(98);
+ addExpectedElement(99);
+ addExpectedElement(100);
+ addExpectedElement(101);
+ addExpectedElement(102);
+ addExpectedElement(103);
+ addExpectedElement(104);
+ addExpectedElement(105);
+ addExpectedElement(106);
+ addExpectedElement(107);
+ addExpectedElement(108);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(109);
+ addExpectedElement(110);
+ addExpectedElement(111);
+ addExpectedElement(112);
+ addExpectedElement(113);
+ addExpectedElement(114);
+ addExpectedElement(115);
+ addExpectedElement(116);
+ addExpectedElement(117);
+ addExpectedElement(118);
+ addExpectedElement(119);
+ addExpectedElement(120);
+ addExpectedElement(121);
+ addExpectedElement(122);
+ addExpectedElement(123);
+ addExpectedElement(124);
+ addExpectedElement(125);
+ addExpectedElement(126);
+ addExpectedElement(127);
+ addExpectedElement(128);
+ addExpectedElement(129);
+ }
+
+ // Java.g:1532:2: ( ( (a5_0= parse_org_emftext_language_java_imports_Import ) ) )*
+ loop11:
+ do {
+ int alt11=2;
+ int LA11_0 = input.LA(1);
+
+ if ( (LA11_0==78) ) {
+ alt11=1;
+ }
+
+
+ switch (alt11) {
+ case 1 :
+ // Java.g:1533:3: ( (a5_0= parse_org_emftext_language_java_imports_Import ) )
+ {
+ // Java.g:1533:3: ( (a5_0= parse_org_emftext_language_java_imports_Import ) )
+ // Java.g:1534:4: (a5_0= parse_org_emftext_language_java_imports_Import )
+ {
+ // Java.g:1534:4: (a5_0= parse_org_emftext_language_java_imports_Import )
+ // Java.g:1535:5: a5_0= parse_org_emftext_language_java_imports_Import
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_imports_Import_in_parse_org_emftext_language_java_containers_CompilationUnit831);
+ a5_0=parse_org_emftext_language_java_imports_Import();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__IMPORTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_3_0_0_0, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(130);
+ addExpectedElement(131);
+ addExpectedElement(132);
+ addExpectedElement(133);
+ addExpectedElement(134);
+ addExpectedElement(135);
+ addExpectedElement(136);
+ addExpectedElement(137);
+ addExpectedElement(138);
+ addExpectedElement(139);
+ addExpectedElement(140);
+ addExpectedElement(141);
+ addExpectedElement(142);
+ addExpectedElement(143);
+ addExpectedElement(144);
+ addExpectedElement(145);
+ addExpectedElement(146);
+ addExpectedElement(147);
+ addExpectedElement(148);
+ addExpectedElement(149);
+ addExpectedElement(150);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop11;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(151);
+ addExpectedElement(152);
+ addExpectedElement(153);
+ addExpectedElement(154);
+ addExpectedElement(155);
+ addExpectedElement(156);
+ addExpectedElement(157);
+ addExpectedElement(158);
+ addExpectedElement(159);
+ addExpectedElement(160);
+ addExpectedElement(161);
+ addExpectedElement(162);
+ addExpectedElement(163);
+ addExpectedElement(164);
+ addExpectedElement(165);
+ addExpectedElement(166);
+ addExpectedElement(167);
+ addExpectedElement(168);
+ addExpectedElement(169);
+ addExpectedElement(170);
+ addExpectedElement(171);
+ }
+
+ // Java.g:1607:2: ( (a6= ';' ) )*
+ loop12:
+ do {
+ int alt12=2;
+ int LA12_0 = input.LA(1);
+
+ if ( (LA12_0==42) ) {
+ alt12=1;
+ }
+
+
+ switch (alt12) {
+ case 1 :
+ // Java.g:1608:3: (a6= ';' )
+ {
+ // Java.g:1608:3: (a6= ';' )
+ // Java.g:1609:4: a6= ';'
+ {
+ a6=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_CompilationUnit881); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_4_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(172);
+ addExpectedElement(173);
+ addExpectedElement(174);
+ addExpectedElement(175);
+ addExpectedElement(176);
+ addExpectedElement(177);
+ addExpectedElement(178);
+ addExpectedElement(179);
+ addExpectedElement(180);
+ addExpectedElement(181);
+ addExpectedElement(182);
+ addExpectedElement(183);
+ addExpectedElement(184);
+ addExpectedElement(185);
+ addExpectedElement(186);
+ addExpectedElement(187);
+ addExpectedElement(188);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop12;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(189);
+ addExpectedElement(190);
+ addExpectedElement(191);
+ addExpectedElement(192);
+ addExpectedElement(193);
+ addExpectedElement(194);
+ addExpectedElement(195);
+ addExpectedElement(196);
+ addExpectedElement(197);
+ addExpectedElement(198);
+ addExpectedElement(199);
+ addExpectedElement(200);
+ addExpectedElement(201);
+ addExpectedElement(202);
+ addExpectedElement(203);
+ addExpectedElement(204);
+ addExpectedElement(205);
+ }
+
+ // Java.g:1662:2: ( ( (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier ) ( (a8= ';' ) )* ) )+
+ int cnt14=0;
+ loop14:
+ do {
+ int alt14=2;
+ int LA14_0 = input.LA(1);
+
+ if ( (LA14_0==48||LA14_0==56||LA14_0==64||LA14_0==70||LA14_0==72||LA14_0==81||LA14_0==83||(LA14_0 >= 87 && LA14_0 <= 89)||(LA14_0 >= 92 && LA14_0 <= 93)||LA14_0==96||LA14_0==100||LA14_0==103) ) {
+ alt14=1;
+ }
+
+
+ switch (alt14) {
+ case 1 :
+ // Java.g:1663:3: ( (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier ) ( (a8= ';' ) )* )
+ {
+ // Java.g:1663:3: ( (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier ) ( (a8= ';' ) )* )
+ // Java.g:1664:4: (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier ) ( (a8= ';' ) )*
+ {
+ // Java.g:1664:4: (a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier )
+ // Java.g:1665:5: a7_0= parse_org_emftext_language_java_classifiers_ConcreteClassifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_ConcreteClassifier_in_parse_org_emftext_language_java_containers_CompilationUnit929);
+ a7_0=parse_org_emftext_language_java_classifiers_ConcreteClassifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ addObjectToList(element, org.emftext.language.java.containers.ContainersPackage.COMPILATION_UNIT__CLASSIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_6_0_0_0, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(206);
+ addExpectedElement(207);
+ addExpectedElement(208);
+ addExpectedElement(209);
+ addExpectedElement(210);
+ addExpectedElement(211);
+ addExpectedElement(212);
+ addExpectedElement(213);
+ addExpectedElement(214);
+ addExpectedElement(215);
+ addExpectedElement(216);
+ addExpectedElement(217);
+ addExpectedElement(218);
+ addExpectedElement(219);
+ addExpectedElement(220);
+ addExpectedElement(221);
+ addExpectedElement(222);
+ addExpectedElement(223);
+ }
+
+ // Java.g:1707:4: ( (a8= ';' ) )*
+ loop13:
+ do {
+ int alt13=2;
+ int LA13_0 = input.LA(1);
+
+ if ( (LA13_0==42) ) {
+ alt13=1;
+ }
+
+
+ switch (alt13) {
+ case 1 :
+ // Java.g:1708:5: (a8= ';' )
+ {
+ // Java.g:1708:5: (a8= ';' )
+ // Java.g:1709:6: a8= ';'
+ {
+ a8=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_containers_CompilationUnit970); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_6_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a8, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(224);
+ addExpectedElement(225);
+ addExpectedElement(226);
+ addExpectedElement(227);
+ addExpectedElement(228);
+ addExpectedElement(229);
+ addExpectedElement(230);
+ addExpectedElement(231);
+ addExpectedElement(232);
+ addExpectedElement(233);
+ addExpectedElement(234);
+ addExpectedElement(235);
+ addExpectedElement(236);
+ addExpectedElement(237);
+ addExpectedElement(238);
+ addExpectedElement(239);
+ addExpectedElement(240);
+ addExpectedElement(241);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop13;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(242);
+ addExpectedElement(243);
+ addExpectedElement(244);
+ addExpectedElement(245);
+ addExpectedElement(246);
+ addExpectedElement(247);
+ addExpectedElement(248);
+ addExpectedElement(249);
+ addExpectedElement(250);
+ addExpectedElement(251);
+ addExpectedElement(252);
+ addExpectedElement(253);
+ addExpectedElement(254);
+ addExpectedElement(255);
+ addExpectedElement(256);
+ addExpectedElement(257);
+ addExpectedElement(258);
+ addExpectedElement(259);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt14 >= 1 ) break loop14;
+ if (state.backtracking>0) {state.failed=true; return element;}
+ EarlyExitException eee =
+ new EarlyExitException(14, input);
+ throw eee;
+ }
+ cnt14++;
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(260);
+ addExpectedElement(261);
+ addExpectedElement(262);
+ addExpectedElement(263);
+ addExpectedElement(264);
+ addExpectedElement(265);
+ addExpectedElement(266);
+ addExpectedElement(267);
+ addExpectedElement(268);
+ addExpectedElement(269);
+ addExpectedElement(270);
+ addExpectedElement(271);
+ addExpectedElement(272);
+ addExpectedElement(273);
+ addExpectedElement(274);
+ addExpectedElement(275);
+ addExpectedElement(276);
+ }
+
+ // Java.g:1787:2: ( (a9= '\\u001a' ) )?
+ int alt15=2;
+ int LA15_0 = input.LA(1);
+
+ if ( (LA15_0==50) ) {
+ alt15=1;
+ }
+ switch (alt15) {
+ case 1 :
+ // Java.g:1788:3: (a9= '\\u001a' )
+ {
+ // Java.g:1788:3: (a9= '\\u001a' )
+ // Java.g:1789:4: a9= '\\u001a'
+ {
+ a9=(Token)match(input,50,FOLLOW_50_in_parse_org_emftext_language_java_containers_CompilationUnit1041); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.containers.ContainersFactory.eINSTANCE.createCompilationUnit();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_2_0_0_7_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 4, parse_org_emftext_language_java_containers_CompilationUnit_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_containers_CompilationUnit"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_imports_ClassifierImport"
+ // Java.g:1810:1: parse_org_emftext_language_java_imports_ClassifierImport returns [org.emftext.language.java.imports.ClassifierImport element = null] : a0= 'import' ( ( (a1= IDENTIFIER ) a2= '.' ) )* (a3= IDENTIFIER ) a4= ';' ;
+ private JavaContextDependentURIFragmentFactory classifierImportURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getClassifierImportClassifierReferenceResolver());
+ public final org.emftext.language.java.imports.ClassifierImport parse_org_emftext_language_java_imports_ClassifierImport() throws RecognitionException {
+ org.emftext.language.java.imports.ClassifierImport element = null;
+
+ int parse_org_emftext_language_java_imports_ClassifierImport_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a4=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return element; }
+
+ // Java.g:1813:2: (a0= 'import' ( ( (a1= IDENTIFIER ) a2= '.' ) )* (a3= IDENTIFIER ) a4= ';' )
+ // Java.g:1814:2: a0= 'import' ( ( (a1= IDENTIFIER ) a2= '.' ) )* (a3= IDENTIFIER ) a4= ';'
+ {
+ a0=(Token)match(input,78,FOLLOW_78_in_parse_org_emftext_language_java_imports_ClassifierImport1089); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createClassifierImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(277);
+ addExpectedElement(278);
+ }
+
+ // Java.g:1829:2: ( ( (a1= IDENTIFIER ) a2= '.' ) )*
+ loop16:
+ do {
+ int alt16=2;
+ int LA16_0 = input.LA(1);
+
+ if ( (LA16_0==IDENTIFIER) ) {
+ int LA16_1 = input.LA(2);
+
+ if ( (LA16_1==37) ) {
+ alt16=1;
+ }
+
+
+ }
+
+
+ switch (alt16) {
+ case 1 :
+ // Java.g:1830:3: ( (a1= IDENTIFIER ) a2= '.' )
+ {
+ // Java.g:1830:3: ( (a1= IDENTIFIER ) a2= '.' )
+ // Java.g:1831:4: (a1= IDENTIFIER ) a2= '.'
+ {
+ // Java.g:1831:4: (a1= IDENTIFIER )
+ // Java.g:1832:5: a1= IDENTIFIER
+ {
+ a1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_ClassifierImport1118); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createClassifierImport();
+ startIncompleteElement(element);
+ }
+ if (a1 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.CLASSIFIER_IMPORT__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.imports.ImportsPackage.CLASSIFIER_IMPORT__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_3_0_0_1_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(279);
+ }
+
+ a2=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_imports_ClassifierImport1151); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createClassifierImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_3_0_0_1_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(280);
+ addExpectedElement(281);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop16;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(282);
+ addExpectedElement(283);
+ }
+
+ // Java.g:1890:2: (a3= IDENTIFIER )
+ // Java.g:1891:3: a3= IDENTIFIER
+ {
+ a3=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_ClassifierImport1188); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createClassifierImport();
+ startIncompleteElement(element);
+ }
+ if (a3 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a3.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.CLASSIFIER_IMPORT__CLASSIFIER), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a3).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.classifiers.ConcreteClassifier proxy = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(classifierImportURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.CLASSIFIER_IMPORT__CLASSIFIER), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.CLASSIFIER_IMPORT__CLASSIFIER), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_3_0_0_2, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a3, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a3, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(284);
+ }
+
+ a4=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_imports_ClassifierImport1209); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createClassifierImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(285);
+ addExpectedElement(286);
+ addExpectedElement(287);
+ addExpectedElement(288);
+ addExpectedElement(289);
+ addExpectedElement(290);
+ addExpectedElement(291);
+ addExpectedElement(292);
+ addExpectedElement(293);
+ addExpectedElement(294);
+ addExpectedElement(295);
+ addExpectedElement(296);
+ addExpectedElement(297);
+ addExpectedElement(298);
+ addExpectedElement(299);
+ addExpectedElement(300);
+ addExpectedElement(301);
+ addExpectedElement(302);
+ addExpectedElement(303);
+ addExpectedElement(304);
+ addExpectedElement(305);
+ addExpectedElement(306);
+ addExpectedElement(307);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 5, parse_org_emftext_language_java_imports_ClassifierImport_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_imports_ClassifierImport"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_imports_PackageImport"
+ // Java.g:1968:1: parse_org_emftext_language_java_imports_PackageImport returns [org.emftext.language.java.imports.PackageImport element = null] : a0= 'import' ( ( (a1= IDENTIFIER ) a2= '.' ) )+ a3= '*' a4= ';' ;
+ public final org.emftext.language.java.imports.PackageImport parse_org_emftext_language_java_imports_PackageImport() throws RecognitionException {
+ org.emftext.language.java.imports.PackageImport element = null;
+
+ int parse_org_emftext_language_java_imports_PackageImport_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a4=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return element; }
+
+ // Java.g:1971:2: (a0= 'import' ( ( (a1= IDENTIFIER ) a2= '.' ) )+ a3= '*' a4= ';' )
+ // Java.g:1972:2: a0= 'import' ( ( (a1= IDENTIFIER ) a2= '.' ) )+ a3= '*' a4= ';'
+ {
+ a0=(Token)match(input,78,FOLLOW_78_in_parse_org_emftext_language_java_imports_PackageImport1238); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createPackageImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_4_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(308);
+ }
+
+ // Java.g:1986:2: ( ( (a1= IDENTIFIER ) a2= '.' ) )+
+ int cnt17=0;
+ loop17:
+ do {
+ int alt17=2;
+ int LA17_0 = input.LA(1);
+
+ if ( (LA17_0==IDENTIFIER) ) {
+ alt17=1;
+ }
+
+
+ switch (alt17) {
+ case 1 :
+ // Java.g:1987:3: ( (a1= IDENTIFIER ) a2= '.' )
+ {
+ // Java.g:1987:3: ( (a1= IDENTIFIER ) a2= '.' )
+ // Java.g:1988:4: (a1= IDENTIFIER ) a2= '.'
+ {
+ // Java.g:1988:4: (a1= IDENTIFIER )
+ // Java.g:1989:5: a1= IDENTIFIER
+ {
+ a1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_PackageImport1267); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createPackageImport();
+ startIncompleteElement(element);
+ }
+ if (a1 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.PACKAGE_IMPORT__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.imports.ImportsPackage.PACKAGE_IMPORT__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_4_0_0_1_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(309);
+ }
+
+ a2=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_imports_PackageImport1300); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createPackageImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_4_0_0_1_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(310);
+ addExpectedElement(311);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt17 >= 1 ) break loop17;
+ if (state.backtracking>0) {state.failed=true; return element;}
+ EarlyExitException eee =
+ new EarlyExitException(17, input);
+ throw eee;
+ }
+ cnt17++;
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(312);
+ addExpectedElement(313);
+ }
+
+ a3=(Token)match(input,28,FOLLOW_28_in_parse_org_emftext_language_java_imports_PackageImport1333); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createPackageImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_4_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(314);
+ }
+
+ a4=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_imports_PackageImport1347); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createPackageImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_4_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(315);
+ addExpectedElement(316);
+ addExpectedElement(317);
+ addExpectedElement(318);
+ addExpectedElement(319);
+ addExpectedElement(320);
+ addExpectedElement(321);
+ addExpectedElement(322);
+ addExpectedElement(323);
+ addExpectedElement(324);
+ addExpectedElement(325);
+ addExpectedElement(326);
+ addExpectedElement(327);
+ addExpectedElement(328);
+ addExpectedElement(329);
+ addExpectedElement(330);
+ addExpectedElement(331);
+ addExpectedElement(332);
+ addExpectedElement(333);
+ addExpectedElement(334);
+ addExpectedElement(335);
+ addExpectedElement(336);
+ addExpectedElement(337);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 6, parse_org_emftext_language_java_imports_PackageImport_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_imports_PackageImport"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_imports_StaticMemberImport"
+ // Java.g:2099:1: parse_org_emftext_language_java_imports_StaticMemberImport returns [org.emftext.language.java.imports.StaticMemberImport element = null] : a0= 'import' (a1_0= parse_org_emftext_language_java_modifiers_Static ) ( ( (a2= IDENTIFIER ) a3= '.' ) )* (a4= IDENTIFIER ) a5= ';' ;
+ private JavaContextDependentURIFragmentFactory staticMemberImportURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getStaticMemberImportStaticMembersReferenceResolver());
+ public final org.emftext.language.java.imports.StaticMemberImport parse_org_emftext_language_java_imports_StaticMemberImport() throws RecognitionException {
+ org.emftext.language.java.imports.StaticMemberImport element = null;
+
+ int parse_org_emftext_language_java_imports_StaticMemberImport_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a3=null;
+ Token a4=null;
+ Token a5=null;
+ org.emftext.language.java.modifiers.Static a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return element; }
+
+ // Java.g:2102:2: (a0= 'import' (a1_0= parse_org_emftext_language_java_modifiers_Static ) ( ( (a2= IDENTIFIER ) a3= '.' ) )* (a4= IDENTIFIER ) a5= ';' )
+ // Java.g:2103:2: a0= 'import' (a1_0= parse_org_emftext_language_java_modifiers_Static ) ( ( (a2= IDENTIFIER ) a3= '.' ) )* (a4= IDENTIFIER ) a5= ';'
+ {
+ a0=(Token)match(input,78,FOLLOW_78_in_parse_org_emftext_language_java_imports_StaticMemberImport1376); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticMemberImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_5_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(338);
+ }
+
+ // Java.g:2117:2: (a1_0= parse_org_emftext_language_java_modifiers_Static )
+ // Java.g:2118:3: a1_0= parse_org_emftext_language_java_modifiers_Static
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_imports_StaticMemberImport1394);
+ a1_0=parse_org_emftext_language_java_modifiers_Static();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticMemberImport();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__STATIC), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_5_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(339);
+ addExpectedElement(340);
+ }
+
+ // Java.g:2144:2: ( ( (a2= IDENTIFIER ) a3= '.' ) )*
+ loop18:
+ do {
+ int alt18=2;
+ int LA18_0 = input.LA(1);
+
+ if ( (LA18_0==IDENTIFIER) ) {
+ int LA18_1 = input.LA(2);
+
+ if ( (LA18_1==37) ) {
+ alt18=1;
+ }
+
+
+ }
+
+
+ switch (alt18) {
+ case 1 :
+ // Java.g:2145:3: ( (a2= IDENTIFIER ) a3= '.' )
+ {
+ // Java.g:2145:3: ( (a2= IDENTIFIER ) a3= '.' )
+ // Java.g:2146:4: (a2= IDENTIFIER ) a3= '.'
+ {
+ // Java.g:2146:4: (a2= IDENTIFIER )
+ // Java.g:2147:5: a2= IDENTIFIER
+ {
+ a2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_StaticMemberImport1427); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticMemberImport();
+ startIncompleteElement(element);
+ }
+ if (a2 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_5_0_0_2_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a2, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(341);
+ }
+
+ a3=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_imports_StaticMemberImport1460); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticMemberImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_5_0_0_2_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(342);
+ addExpectedElement(343);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop18;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(344);
+ addExpectedElement(345);
+ }
+
+ // Java.g:2205:2: (a4= IDENTIFIER )
+ // Java.g:2206:3: a4= IDENTIFIER
+ {
+ a4=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_StaticMemberImport1497); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticMemberImport();
+ startIncompleteElement(element);
+ }
+ if (a4 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a4.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__STATIC_MEMBERS), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a4).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a4).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.references.ReferenceableElement proxy = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(staticMemberImportURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__STATIC_MEMBERS), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ addObjectToList(element, org.emftext.language.java.imports.ImportsPackage.STATIC_MEMBER_IMPORT__STATIC_MEMBERS, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_5_0_0_3, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a4, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(346);
+ }
+
+ a5=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_imports_StaticMemberImport1518); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticMemberImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_5_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(347);
+ addExpectedElement(348);
+ addExpectedElement(349);
+ addExpectedElement(350);
+ addExpectedElement(351);
+ addExpectedElement(352);
+ addExpectedElement(353);
+ addExpectedElement(354);
+ addExpectedElement(355);
+ addExpectedElement(356);
+ addExpectedElement(357);
+ addExpectedElement(358);
+ addExpectedElement(359);
+ addExpectedElement(360);
+ addExpectedElement(361);
+ addExpectedElement(362);
+ addExpectedElement(363);
+ addExpectedElement(364);
+ addExpectedElement(365);
+ addExpectedElement(366);
+ addExpectedElement(367);
+ addExpectedElement(368);
+ addExpectedElement(369);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 7, parse_org_emftext_language_java_imports_StaticMemberImport_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_imports_StaticMemberImport"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_imports_StaticClassifierImport"
+ // Java.g:2283:1: parse_org_emftext_language_java_imports_StaticClassifierImport returns [org.emftext.language.java.imports.StaticClassifierImport element = null] : a0= 'import' (a1_0= parse_org_emftext_language_java_modifiers_Static ) ( ( (a2= IDENTIFIER ) a3= '.' ) )+ a4= '*' a5= ';' ;
+ public final org.emftext.language.java.imports.StaticClassifierImport parse_org_emftext_language_java_imports_StaticClassifierImport() throws RecognitionException {
+ org.emftext.language.java.imports.StaticClassifierImport element = null;
+
+ int parse_org_emftext_language_java_imports_StaticClassifierImport_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a3=null;
+ Token a4=null;
+ Token a5=null;
+ org.emftext.language.java.modifiers.Static a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return element; }
+
+ // Java.g:2286:2: (a0= 'import' (a1_0= parse_org_emftext_language_java_modifiers_Static ) ( ( (a2= IDENTIFIER ) a3= '.' ) )+ a4= '*' a5= ';' )
+ // Java.g:2287:2: a0= 'import' (a1_0= parse_org_emftext_language_java_modifiers_Static ) ( ( (a2= IDENTIFIER ) a3= '.' ) )+ a4= '*' a5= ';'
+ {
+ a0=(Token)match(input,78,FOLLOW_78_in_parse_org_emftext_language_java_imports_StaticClassifierImport1547); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticClassifierImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_6_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(370);
+ }
+
+ // Java.g:2301:2: (a1_0= parse_org_emftext_language_java_modifiers_Static )
+ // Java.g:2302:3: a1_0= parse_org_emftext_language_java_modifiers_Static
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_imports_StaticClassifierImport1565);
+ a1_0=parse_org_emftext_language_java_modifiers_Static();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticClassifierImport();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_CLASSIFIER_IMPORT__STATIC), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_6_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(371);
+ }
+
+ // Java.g:2327:2: ( ( (a2= IDENTIFIER ) a3= '.' ) )+
+ int cnt19=0;
+ loop19:
+ do {
+ int alt19=2;
+ int LA19_0 = input.LA(1);
+
+ if ( (LA19_0==IDENTIFIER) ) {
+ alt19=1;
+ }
+
+
+ switch (alt19) {
+ case 1 :
+ // Java.g:2328:3: ( (a2= IDENTIFIER ) a3= '.' )
+ {
+ // Java.g:2328:3: ( (a2= IDENTIFIER ) a3= '.' )
+ // Java.g:2329:4: (a2= IDENTIFIER ) a3= '.'
+ {
+ // Java.g:2329:4: (a2= IDENTIFIER )
+ // Java.g:2330:5: a2= IDENTIFIER
+ {
+ a2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_StaticClassifierImport1598); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticClassifierImport();
+ startIncompleteElement(element);
+ }
+ if (a2 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.imports.ImportsPackage.STATIC_CLASSIFIER_IMPORT__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.imports.ImportsPackage.STATIC_CLASSIFIER_IMPORT__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_6_0_0_2_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a2, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(372);
+ }
+
+ a3=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_imports_StaticClassifierImport1631); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticClassifierImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_6_0_0_2_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(373);
+ addExpectedElement(374);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt19 >= 1 ) break loop19;
+ if (state.backtracking>0) {state.failed=true; return element;}
+ EarlyExitException eee =
+ new EarlyExitException(19, input);
+ throw eee;
+ }
+ cnt19++;
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(375);
+ addExpectedElement(376);
+ }
+
+ a4=(Token)match(input,28,FOLLOW_28_in_parse_org_emftext_language_java_imports_StaticClassifierImport1664); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticClassifierImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_6_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(377);
+ }
+
+ a5=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_imports_StaticClassifierImport1678); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.imports.ImportsFactory.eINSTANCE.createStaticClassifierImport();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_6_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(378);
+ addExpectedElement(379);
+ addExpectedElement(380);
+ addExpectedElement(381);
+ addExpectedElement(382);
+ addExpectedElement(383);
+ addExpectedElement(384);
+ addExpectedElement(385);
+ addExpectedElement(386);
+ addExpectedElement(387);
+ addExpectedElement(388);
+ addExpectedElement(389);
+ addExpectedElement(390);
+ addExpectedElement(391);
+ addExpectedElement(392);
+ addExpectedElement(393);
+ addExpectedElement(394);
+ addExpectedElement(395);
+ addExpectedElement(396);
+ addExpectedElement(397);
+ addExpectedElement(398);
+ addExpectedElement(399);
+ addExpectedElement(400);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 8, parse_org_emftext_language_java_imports_StaticClassifierImport_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_imports_StaticClassifierImport"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_classifiers_Class"
+ // Java.g:2440:1: parse_org_emftext_language_java_classifiers_Class returns [org.emftext.language.java.classifiers.Class element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'class' (a2= IDENTIFIER ) ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )? ( (a8= 'extends' (a9_0= parse_org_emftext_language_java_types_TypeReference ) ) )? ( (a10= 'implements' ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a14= '{' ( ( (a15_0= parse_org_emftext_language_java_members_Member ) ) )* a16= '}' ;
+ public final org.emftext.language.java.classifiers.Class parse_org_emftext_language_java_classifiers_Class() throws RecognitionException {
+ org.emftext.language.java.classifiers.Class element = null;
+
+ int parse_org_emftext_language_java_classifiers_Class_StartIndex = input.index();
+
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a8=null;
+ Token a10=null;
+ Token a12=null;
+ Token a14=null;
+ Token a16=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a4_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a6_0 =null;
+
+ org.emftext.language.java.types.TypeReference a9_0 =null;
+
+ org.emftext.language.java.types.TypeReference a11_0 =null;
+
+ org.emftext.language.java.types.TypeReference a13_0 =null;
+
+ org.emftext.language.java.members.Member a15_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return element; }
+
+ // Java.g:2443:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'class' (a2= IDENTIFIER ) ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )? ( (a8= 'extends' (a9_0= parse_org_emftext_language_java_types_TypeReference ) ) )? ( (a10= 'implements' ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a14= '{' ( ( (a15_0= parse_org_emftext_language_java_members_Member ) ) )* a16= '}' )
+ // Java.g:2444:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'class' (a2= IDENTIFIER ) ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )? ( (a8= 'extends' (a9_0= parse_org_emftext_language_java_types_TypeReference ) ) )? ( (a10= 'implements' ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a14= '{' ( ( (a15_0= parse_org_emftext_language_java_members_Member ) ) )* a16= '}'
+ {
+ // Java.g:2444:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop20:
+ do {
+ int alt20=2;
+ int LA20_0 = input.LA(1);
+
+ if ( (LA20_0==48||LA20_0==56||LA20_0==72||LA20_0==83||(LA20_0 >= 87 && LA20_0 <= 89)||(LA20_0 >= 92 && LA20_0 <= 93)||LA20_0==96||LA20_0==100||LA20_0==103) ) {
+ alt20=1;
+ }
+
+
+ switch (alt20) {
+ case 1 :
+ // Java.g:2445:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:2445:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:2446:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Class1716);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop20;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(401);
+ addExpectedElement(402);
+ addExpectedElement(403);
+ addExpectedElement(404);
+ addExpectedElement(405);
+ addExpectedElement(406);
+ addExpectedElement(407);
+ addExpectedElement(408);
+ addExpectedElement(409);
+ addExpectedElement(410);
+ addExpectedElement(411);
+ addExpectedElement(412);
+ addExpectedElement(413);
+ }
+
+ a1=(Token)match(input,64,FOLLOW_64_in_parse_org_emftext_language_java_classifiers_Class1742); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(414);
+ }
+
+ // Java.g:2498:2: (a2= IDENTIFIER )
+ // Java.g:2499:3: a2= IDENTIFIER
+ {
+ a2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Class1760); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a2 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_2, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a2, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(415);
+ addExpectedElement(416);
+ addExpectedElement(417);
+ addExpectedElement(418);
+ }
+
+ // Java.g:2537:2: ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )?
+ int alt22=2;
+ int LA22_0 = input.LA(1);
+
+ if ( (LA22_0==43) ) {
+ alt22=1;
+ }
+ switch (alt22) {
+ case 1 :
+ // Java.g:2538:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' )
+ {
+ // Java.g:2538:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' )
+ // Java.g:2539:4: a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>'
+ {
+ a3=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_classifiers_Class1790); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(419);
+ }
+
+ // Java.g:2553:4: (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:2554:5: a4_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Class1816);
+ a4_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_3_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(420);
+ addExpectedElement(421);
+ }
+
+ // Java.g:2580:4: ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )*
+ loop21:
+ do {
+ int alt21=2;
+ int LA21_0 = input.LA(1);
+
+ if ( (LA21_0==33) ) {
+ alt21=1;
+ }
+
+
+ switch (alt21) {
+ case 1 :
+ // Java.g:2581:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ {
+ // Java.g:2581:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ // Java.g:2582:6: a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter )
+ {
+ a5=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Class1857); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_3_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(422);
+ }
+
+ // Java.g:2596:6: (a6_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:2597:7: a6_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Class1891);
+ a6_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_3_0_0_2_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(423);
+ addExpectedElement(424);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop21;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(425);
+ addExpectedElement(426);
+ }
+
+ a7=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_classifiers_Class1952); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(427);
+ addExpectedElement(428);
+ addExpectedElement(429);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(430);
+ addExpectedElement(431);
+ addExpectedElement(432);
+ }
+
+ // Java.g:2656:2: ( (a8= 'extends' (a9_0= parse_org_emftext_language_java_types_TypeReference ) ) )?
+ int alt23=2;
+ int LA23_0 = input.LA(1);
+
+ if ( (LA23_0==71) ) {
+ alt23=1;
+ }
+ switch (alt23) {
+ case 1 :
+ // Java.g:2657:3: (a8= 'extends' (a9_0= parse_org_emftext_language_java_types_TypeReference ) )
+ {
+ // Java.g:2657:3: (a8= 'extends' (a9_0= parse_org_emftext_language_java_types_TypeReference ) )
+ // Java.g:2658:4: a8= 'extends' (a9_0= parse_org_emftext_language_java_types_TypeReference )
+ {
+ a8=(Token)match(input,71,FOLLOW_71_in_parse_org_emftext_language_java_classifiers_Class1994); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_4_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a8, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(433);
+ addExpectedElement(434);
+ addExpectedElement(435);
+ addExpectedElement(436);
+ addExpectedElement(437);
+ addExpectedElement(438);
+ addExpectedElement(439);
+ addExpectedElement(440);
+ addExpectedElement(441);
+ addExpectedElement(442);
+ addExpectedElement(443);
+ }
+
+ // Java.g:2682:4: (a9_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:2683:5: a9_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Class2020);
+ a9_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a9_0 != null) {
+ if (a9_0 != null) {
+ Object value = a9_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__EXTENDS), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_4_0_0_1, a9_0, true);
+ copyLocalizationInfos(a9_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(444);
+ addExpectedElement(445);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(446);
+ addExpectedElement(447);
+ }
+
+ // Java.g:2717:2: ( (a10= 'implements' ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )?
+ int alt25=2;
+ int LA25_0 = input.LA(1);
+
+ if ( (LA25_0==77) ) {
+ alt25=1;
+ }
+ switch (alt25) {
+ case 1 :
+ // Java.g:2718:3: (a10= 'implements' ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )
+ {
+ // Java.g:2718:3: (a10= 'implements' ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )
+ // Java.g:2719:4: a10= 'implements' ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ {
+ a10=(Token)match(input,77,FOLLOW_77_in_parse_org_emftext_language_java_classifiers_Class2070); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_5_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(448);
+ addExpectedElement(449);
+ addExpectedElement(450);
+ addExpectedElement(451);
+ addExpectedElement(452);
+ addExpectedElement(453);
+ addExpectedElement(454);
+ addExpectedElement(455);
+ addExpectedElement(456);
+ addExpectedElement(457);
+ addExpectedElement(458);
+ }
+
+ // Java.g:2743:4: ( (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ // Java.g:2744:5: (a11_0= parse_org_emftext_language_java_types_TypeReference ) ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ {
+ // Java.g:2744:5: (a11_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:2745:6: a11_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Class2103);
+ a11_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a11_0 != null) {
+ if (a11_0 != null) {
+ Object value = a11_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__IMPLEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_5_0_0_1_0_0_0, a11_0, true);
+ copyLocalizationInfos(a11_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(459);
+ addExpectedElement(460);
+ }
+
+ // Java.g:2771:5: ( (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ loop24:
+ do {
+ int alt24=2;
+ int LA24_0 = input.LA(1);
+
+ if ( (LA24_0==33) ) {
+ alt24=1;
+ }
+
+
+ switch (alt24) {
+ case 1 :
+ // Java.g:2772:6: (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) )
+ {
+ // Java.g:2772:6: (a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference ) )
+ // Java.g:2773:7: a12= ',' (a13_0= parse_org_emftext_language_java_types_TypeReference )
+ {
+ a12=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Class2151); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_5_0_0_1_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a12, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(461);
+ addExpectedElement(462);
+ addExpectedElement(463);
+ addExpectedElement(464);
+ addExpectedElement(465);
+ addExpectedElement(466);
+ addExpectedElement(467);
+ addExpectedElement(468);
+ addExpectedElement(469);
+ addExpectedElement(470);
+ addExpectedElement(471);
+ }
+
+ // Java.g:2797:7: (a13_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:2798:8: a13_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Class2189);
+ a13_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a13_0 != null) {
+ if (a13_0 != null) {
+ Object value = a13_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__IMPLEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_5_0_0_1_0_0_1_0_0_1, a13_0, true);
+ copyLocalizationInfos(a13_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(472);
+ addExpectedElement(473);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop24;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(474);
+ addExpectedElement(475);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(476);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(477);
+ }
+
+ a14=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Class2286); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_7, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a14, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(478);
+ addExpectedElement(479);
+ addExpectedElement(480);
+ addExpectedElement(481);
+ addExpectedElement(482);
+ addExpectedElement(483);
+ addExpectedElement(484);
+ addExpectedElement(485);
+ addExpectedElement(486);
+ addExpectedElement(487);
+ addExpectedElement(488);
+ addExpectedElement(489);
+ addExpectedElement(490);
+ addExpectedElement(491);
+ addExpectedElement(492);
+ addExpectedElement(493);
+ addExpectedElement(494);
+ addExpectedElement(495);
+ addExpectedElement(496);
+ addExpectedElement(497);
+ addExpectedElement(498);
+ addExpectedElement(499);
+ addExpectedElement(500);
+ addExpectedElement(501);
+ addExpectedElement(502);
+ addExpectedElement(503);
+ addExpectedElement(504);
+ addExpectedElement(505);
+ addExpectedElement(506);
+ addExpectedElement(507);
+ addExpectedElement(508);
+ addExpectedElement(509);
+ addExpectedElement(510);
+ addExpectedElement(511);
+ addExpectedElement(512);
+ }
+
+ // Java.g:2893:2: ( ( (a15_0= parse_org_emftext_language_java_members_Member ) ) )*
+ loop26:
+ do {
+ int alt26=2;
+ int LA26_0 = input.LA(1);
+
+ if ( (LA26_0==IDENTIFIER||(LA26_0 >= 42 && LA26_0 <= 43)||LA26_0==48||LA26_0==56||LA26_0==58||LA26_0==60||(LA26_0 >= 63 && LA26_0 <= 64)||LA26_0==68||LA26_0==70||LA26_0==72||LA26_0==74||(LA26_0 >= 80 && LA26_0 <= 83)||(LA26_0 >= 87 && LA26_0 <= 89)||(LA26_0 >= 91 && LA26_0 <= 93)||LA26_0==96||LA26_0==100||(LA26_0 >= 102 && LA26_0 <= 103)||LA26_0==105) ) {
+ alt26=1;
+ }
+
+
+ switch (alt26) {
+ case 1 :
+ // Java.g:2894:3: ( (a15_0= parse_org_emftext_language_java_members_Member ) )
+ {
+ // Java.g:2894:3: ( (a15_0= parse_org_emftext_language_java_members_Member ) )
+ // Java.g:2895:4: (a15_0= parse_org_emftext_language_java_members_Member )
+ {
+ // Java.g:2895:4: (a15_0= parse_org_emftext_language_java_members_Member )
+ // Java.g:2896:5: a15_0= parse_org_emftext_language_java_members_Member
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Class2315);
+ a15_0=parse_org_emftext_language_java_members_Member();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ if (a15_0 != null) {
+ if (a15_0 != null) {
+ Object value = a15_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.CLASS__MEMBERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_8_0_0_1, a15_0, true);
+ copyLocalizationInfos(a15_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(513);
+ addExpectedElement(514);
+ addExpectedElement(515);
+ addExpectedElement(516);
+ addExpectedElement(517);
+ addExpectedElement(518);
+ addExpectedElement(519);
+ addExpectedElement(520);
+ addExpectedElement(521);
+ addExpectedElement(522);
+ addExpectedElement(523);
+ addExpectedElement(524);
+ addExpectedElement(525);
+ addExpectedElement(526);
+ addExpectedElement(527);
+ addExpectedElement(528);
+ addExpectedElement(529);
+ addExpectedElement(530);
+ addExpectedElement(531);
+ addExpectedElement(532);
+ addExpectedElement(533);
+ addExpectedElement(534);
+ addExpectedElement(535);
+ addExpectedElement(536);
+ addExpectedElement(537);
+ addExpectedElement(538);
+ addExpectedElement(539);
+ addExpectedElement(540);
+ addExpectedElement(541);
+ addExpectedElement(542);
+ addExpectedElement(543);
+ addExpectedElement(544);
+ addExpectedElement(545);
+ addExpectedElement(546);
+ addExpectedElement(547);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop26;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(548);
+ addExpectedElement(549);
+ addExpectedElement(550);
+ addExpectedElement(551);
+ addExpectedElement(552);
+ addExpectedElement(553);
+ addExpectedElement(554);
+ addExpectedElement(555);
+ addExpectedElement(556);
+ addExpectedElement(557);
+ addExpectedElement(558);
+ addExpectedElement(559);
+ addExpectedElement(560);
+ addExpectedElement(561);
+ addExpectedElement(562);
+ addExpectedElement(563);
+ addExpectedElement(564);
+ addExpectedElement(565);
+ addExpectedElement(566);
+ addExpectedElement(567);
+ addExpectedElement(568);
+ addExpectedElement(569);
+ addExpectedElement(570);
+ addExpectedElement(571);
+ addExpectedElement(572);
+ addExpectedElement(573);
+ addExpectedElement(574);
+ addExpectedElement(575);
+ addExpectedElement(576);
+ addExpectedElement(577);
+ addExpectedElement(578);
+ addExpectedElement(579);
+ addExpectedElement(580);
+ addExpectedElement(581);
+ addExpectedElement(582);
+ }
+
+ a16=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Class2356); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_7_0_0_10, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a16, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(583);
+ addExpectedElement(584);
+ addExpectedElement(585);
+ addExpectedElement(586);
+ addExpectedElement(587);
+ addExpectedElement(588);
+ addExpectedElement(589);
+ addExpectedElement(590);
+ addExpectedElement(591);
+ addExpectedElement(592);
+ addExpectedElement(593);
+ addExpectedElement(594);
+ addExpectedElement(595);
+ addExpectedElement(596);
+ addExpectedElement(597);
+ addExpectedElement(598);
+ addExpectedElement(599);
+ addExpectedElement(600);
+ addExpectedElement(601);
+ addExpectedElement(602);
+ addExpectedElement(603);
+ addExpectedElement(604);
+ addExpectedElement(605);
+ addExpectedElement(606);
+ addExpectedElement(607);
+ addExpectedElement(608);
+ addExpectedElement(609);
+ addExpectedElement(610);
+ addExpectedElement(611);
+ addExpectedElement(612);
+ addExpectedElement(613);
+ addExpectedElement(614);
+ addExpectedElement(615);
+ addExpectedElement(616);
+ addExpectedElement(617);
+ addExpectedElement(618);
+ addExpectedElement(619);
+ addExpectedElement(620);
+ addExpectedElement(621);
+ addExpectedElement(622);
+ addExpectedElement(623);
+ addExpectedElement(624);
+ addExpectedElement(625);
+ addExpectedElement(626);
+ addExpectedElement(627);
+ addExpectedElement(628);
+ addExpectedElement(629);
+ addExpectedElement(630);
+ addExpectedElement(631);
+ addExpectedElement(632);
+ addExpectedElement(633);
+ addExpectedElement(634);
+ addExpectedElement(635);
+ addExpectedElement(636);
+ addExpectedElement(637);
+ addExpectedElement(638);
+ addExpectedElement(639);
+ addExpectedElement(640);
+ addExpectedElement(641);
+ addExpectedElement(642);
+ addExpectedElement(643);
+ addExpectedElement(644);
+ addExpectedElement(645);
+ addExpectedElement(646);
+ addExpectedElement(647);
+ addExpectedElement(648);
+ addExpectedElement(649);
+ addExpectedElement(650);
+ addExpectedElement(651);
+ addExpectedElement(652);
+ addExpectedElement(653);
+ addExpectedElement(654);
+ addExpectedElement(655);
+ addExpectedElement(656);
+ addExpectedElement(657);
+ addExpectedElement(658);
+ addExpectedElement(659);
+ addExpectedElement(660);
+ addExpectedElement(661);
+ addExpectedElement(662);
+ addExpectedElement(663);
+ addExpectedElement(664);
+ addExpectedElement(665);
+ addExpectedElement(666);
+ addExpectedElement(667);
+ addExpectedElement(668);
+ addExpectedElement(669);
+ addExpectedElement(670);
+ addExpectedElement(671);
+ addExpectedElement(672);
+ addExpectedElement(673);
+ addExpectedElement(674);
+ addExpectedElement(675);
+ addExpectedElement(676);
+ addExpectedElement(677);
+ addExpectedElement(678);
+ addExpectedElement(679);
+ addExpectedElement(680);
+ addExpectedElement(681);
+ addExpectedElement(682);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 9, parse_org_emftext_language_java_classifiers_Class_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_classifiers_Class"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_classifiers_AnonymousClass"
+ // Java.g:3111:1: parse_org_emftext_language_java_classifiers_AnonymousClass returns [org.emftext.language.java.classifiers.AnonymousClass element = null] : a0= '{' ( ( (a1_0= parse_org_emftext_language_java_members_Member ) ) )* a2= '}' ;
+ public final org.emftext.language.java.classifiers.AnonymousClass parse_org_emftext_language_java_classifiers_AnonymousClass() throws RecognitionException {
+ org.emftext.language.java.classifiers.AnonymousClass element = null;
+
+ int parse_org_emftext_language_java_classifiers_AnonymousClass_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.members.Member a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return element; }
+
+ // Java.g:3114:2: (a0= '{' ( ( (a1_0= parse_org_emftext_language_java_members_Member ) ) )* a2= '}' )
+ // Java.g:3115:2: a0= '{' ( ( (a1_0= parse_org_emftext_language_java_members_Member ) ) )* a2= '}'
+ {
+ a0=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_classifiers_AnonymousClass2385); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnonymousClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_8_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(683);
+ addExpectedElement(684);
+ addExpectedElement(685);
+ addExpectedElement(686);
+ addExpectedElement(687);
+ addExpectedElement(688);
+ addExpectedElement(689);
+ addExpectedElement(690);
+ addExpectedElement(691);
+ addExpectedElement(692);
+ addExpectedElement(693);
+ addExpectedElement(694);
+ addExpectedElement(695);
+ addExpectedElement(696);
+ addExpectedElement(697);
+ addExpectedElement(698);
+ addExpectedElement(699);
+ addExpectedElement(700);
+ addExpectedElement(701);
+ addExpectedElement(702);
+ addExpectedElement(703);
+ addExpectedElement(704);
+ addExpectedElement(705);
+ addExpectedElement(706);
+ addExpectedElement(707);
+ addExpectedElement(708);
+ addExpectedElement(709);
+ addExpectedElement(710);
+ addExpectedElement(711);
+ addExpectedElement(712);
+ addExpectedElement(713);
+ addExpectedElement(714);
+ addExpectedElement(715);
+ addExpectedElement(716);
+ addExpectedElement(717);
+ }
+
+ // Java.g:3163:2: ( ( (a1_0= parse_org_emftext_language_java_members_Member ) ) )*
+ loop27:
+ do {
+ int alt27=2;
+ int LA27_0 = input.LA(1);
+
+ if ( (LA27_0==IDENTIFIER||(LA27_0 >= 42 && LA27_0 <= 43)||LA27_0==48||LA27_0==56||LA27_0==58||LA27_0==60||(LA27_0 >= 63 && LA27_0 <= 64)||LA27_0==68||LA27_0==70||LA27_0==72||LA27_0==74||(LA27_0 >= 80 && LA27_0 <= 83)||(LA27_0 >= 87 && LA27_0 <= 89)||(LA27_0 >= 91 && LA27_0 <= 93)||LA27_0==96||LA27_0==100||(LA27_0 >= 102 && LA27_0 <= 103)||LA27_0==105) ) {
+ alt27=1;
+ }
+
+
+ switch (alt27) {
+ case 1 :
+ // Java.g:3164:3: ( (a1_0= parse_org_emftext_language_java_members_Member ) )
+ {
+ // Java.g:3164:3: ( (a1_0= parse_org_emftext_language_java_members_Member ) )
+ // Java.g:3165:4: (a1_0= parse_org_emftext_language_java_members_Member )
+ {
+ // Java.g:3165:4: (a1_0= parse_org_emftext_language_java_members_Member )
+ // Java.g:3166:5: a1_0= parse_org_emftext_language_java_members_Member
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_AnonymousClass2414);
+ a1_0=parse_org_emftext_language_java_members_Member();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnonymousClass();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ANONYMOUS_CLASS__MEMBERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_8_0_0_2_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(718);
+ addExpectedElement(719);
+ addExpectedElement(720);
+ addExpectedElement(721);
+ addExpectedElement(722);
+ addExpectedElement(723);
+ addExpectedElement(724);
+ addExpectedElement(725);
+ addExpectedElement(726);
+ addExpectedElement(727);
+ addExpectedElement(728);
+ addExpectedElement(729);
+ addExpectedElement(730);
+ addExpectedElement(731);
+ addExpectedElement(732);
+ addExpectedElement(733);
+ addExpectedElement(734);
+ addExpectedElement(735);
+ addExpectedElement(736);
+ addExpectedElement(737);
+ addExpectedElement(738);
+ addExpectedElement(739);
+ addExpectedElement(740);
+ addExpectedElement(741);
+ addExpectedElement(742);
+ addExpectedElement(743);
+ addExpectedElement(744);
+ addExpectedElement(745);
+ addExpectedElement(746);
+ addExpectedElement(747);
+ addExpectedElement(748);
+ addExpectedElement(749);
+ addExpectedElement(750);
+ addExpectedElement(751);
+ addExpectedElement(752);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop27;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(753);
+ addExpectedElement(754);
+ addExpectedElement(755);
+ addExpectedElement(756);
+ addExpectedElement(757);
+ addExpectedElement(758);
+ addExpectedElement(759);
+ addExpectedElement(760);
+ addExpectedElement(761);
+ addExpectedElement(762);
+ addExpectedElement(763);
+ addExpectedElement(764);
+ addExpectedElement(765);
+ addExpectedElement(766);
+ addExpectedElement(767);
+ addExpectedElement(768);
+ addExpectedElement(769);
+ addExpectedElement(770);
+ addExpectedElement(771);
+ addExpectedElement(772);
+ addExpectedElement(773);
+ addExpectedElement(774);
+ addExpectedElement(775);
+ addExpectedElement(776);
+ addExpectedElement(777);
+ addExpectedElement(778);
+ addExpectedElement(779);
+ addExpectedElement(780);
+ addExpectedElement(781);
+ addExpectedElement(782);
+ addExpectedElement(783);
+ addExpectedElement(784);
+ addExpectedElement(785);
+ addExpectedElement(786);
+ addExpectedElement(787);
+ }
+
+ a2=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_classifiers_AnonymousClass2455); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnonymousClass();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_8_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(788);
+ addExpectedElement(789);
+ addExpectedElement(790);
+ addExpectedElement(791);
+ addExpectedElement(792);
+ addExpectedElement(793);
+ addExpectedElement(794);
+ addExpectedElement(795);
+ addExpectedElement(796);
+ addExpectedElement(797);
+ addExpectedElement(798);
+ addExpectedElement(799);
+ addExpectedElement(800);
+ addExpectedElement(801);
+ addExpectedElement(802);
+ addExpectedElement(803);
+ addExpectedElement(804);
+ addExpectedElement(805);
+ addExpectedElement(806);
+ addExpectedElement(807);
+ addExpectedElement(808);
+ addExpectedElement(809);
+ addExpectedElement(810);
+ addExpectedElement(811);
+ addExpectedElement(812);
+ addExpectedElement(813);
+ addExpectedElement(814);
+ addExpectedElement(815);
+ addExpectedElement(816);
+ addExpectedElement(817);
+ addExpectedElement(818);
+ addExpectedElement(819);
+ addExpectedElement(820);
+ addExpectedElement(821);
+ addExpectedElement(822);
+ addExpectedElement(823);
+ addExpectedElement(824);
+ addExpectedElement(825);
+ addExpectedElement(826);
+ addExpectedElement(827);
+ addExpectedElement(828);
+ addExpectedElement(829);
+ addExpectedElement(830);
+ addExpectedElement(831);
+ addExpectedElement(832);
+ addExpectedElement(833);
+ addExpectedElement(834);
+ addExpectedElement(835);
+ addExpectedElement(836);
+ addExpectedElement(837);
+ addExpectedElement(838);
+ addExpectedElement(839);
+ addExpectedElement(840);
+ addExpectedElement(841);
+ addExpectedElement(842);
+ addExpectedElement(843);
+ addExpectedElement(844);
+ addExpectedElement(845);
+ addExpectedElement(846);
+ addExpectedElement(847);
+ addExpectedElement(848);
+ addExpectedElement(849);
+ addExpectedElement(850);
+ addExpectedElement(851);
+ addExpectedElement(852);
+ addExpectedElement(853);
+ addExpectedElement(854);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 10, parse_org_emftext_language_java_classifiers_AnonymousClass_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_classifiers_AnonymousClass"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_classifiers_Interface"
+ // Java.g:3348:1: parse_org_emftext_language_java_classifiers_Interface returns [org.emftext.language.java.classifiers.Interface element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'interface' (a2= IDENTIFIER ) ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )? ( (a8= 'extends' ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a12= '{' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* a14= '}' ;
+ public final org.emftext.language.java.classifiers.Interface parse_org_emftext_language_java_classifiers_Interface() throws RecognitionException {
+ org.emftext.language.java.classifiers.Interface element = null;
+
+ int parse_org_emftext_language_java_classifiers_Interface_StartIndex = input.index();
+
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a8=null;
+ Token a10=null;
+ Token a12=null;
+ Token a14=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a4_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a6_0 =null;
+
+ org.emftext.language.java.types.TypeReference a9_0 =null;
+
+ org.emftext.language.java.types.TypeReference a11_0 =null;
+
+ org.emftext.language.java.members.Member a13_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return element; }
+
+ // Java.g:3351:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'interface' (a2= IDENTIFIER ) ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )? ( (a8= 'extends' ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a12= '{' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* a14= '}' )
+ // Java.g:3352:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'interface' (a2= IDENTIFIER ) ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )? ( (a8= 'extends' ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a12= '{' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* a14= '}'
+ {
+ // Java.g:3352:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop28:
+ do {
+ int alt28=2;
+ int LA28_0 = input.LA(1);
+
+ if ( (LA28_0==48||LA28_0==56||LA28_0==72||LA28_0==83||(LA28_0 >= 87 && LA28_0 <= 89)||(LA28_0 >= 92 && LA28_0 <= 93)||LA28_0==96||LA28_0==100||LA28_0==103) ) {
+ alt28=1;
+ }
+
+
+ switch (alt28) {
+ case 1 :
+ // Java.g:3353:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:3353:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:3354:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Interface2493);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop28;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(855);
+ addExpectedElement(856);
+ addExpectedElement(857);
+ addExpectedElement(858);
+ addExpectedElement(859);
+ addExpectedElement(860);
+ addExpectedElement(861);
+ addExpectedElement(862);
+ addExpectedElement(863);
+ addExpectedElement(864);
+ addExpectedElement(865);
+ addExpectedElement(866);
+ addExpectedElement(867);
+ }
+
+ a1=(Token)match(input,81,FOLLOW_81_in_parse_org_emftext_language_java_classifiers_Interface2519); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(868);
+ }
+
+ // Java.g:3406:2: (a2= IDENTIFIER )
+ // Java.g:3407:3: a2= IDENTIFIER
+ {
+ a2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Interface2537); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ if (a2 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_2, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a2, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(869);
+ addExpectedElement(870);
+ addExpectedElement(871);
+ }
+
+ // Java.g:3444:2: ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' ) )?
+ int alt30=2;
+ int LA30_0 = input.LA(1);
+
+ if ( (LA30_0==43) ) {
+ alt30=1;
+ }
+ switch (alt30) {
+ case 1 :
+ // Java.g:3445:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' )
+ {
+ // Java.g:3445:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>' )
+ // Java.g:3446:4: a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a7= '>'
+ {
+ a3=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_classifiers_Interface2567); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(872);
+ }
+
+ // Java.g:3460:4: (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:3461:5: a4_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Interface2593);
+ a4_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_3_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(873);
+ addExpectedElement(874);
+ }
+
+ // Java.g:3487:4: ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )*
+ loop29:
+ do {
+ int alt29=2;
+ int LA29_0 = input.LA(1);
+
+ if ( (LA29_0==33) ) {
+ alt29=1;
+ }
+
+
+ switch (alt29) {
+ case 1 :
+ // Java.g:3488:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ {
+ // Java.g:3488:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ // Java.g:3489:6: a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeParameter )
+ {
+ a5=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Interface2634); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_3_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(875);
+ }
+
+ // Java.g:3503:6: (a6_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:3504:7: a6_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Interface2668);
+ a6_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_3_0_0_2_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(876);
+ addExpectedElement(877);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop29;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(878);
+ addExpectedElement(879);
+ }
+
+ a7=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_classifiers_Interface2729); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(880);
+ addExpectedElement(881);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(882);
+ addExpectedElement(883);
+ }
+
+ // Java.g:3561:2: ( (a8= 'extends' ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )?
+ int alt32=2;
+ int LA32_0 = input.LA(1);
+
+ if ( (LA32_0==71) ) {
+ alt32=1;
+ }
+ switch (alt32) {
+ case 1 :
+ // Java.g:3562:3: (a8= 'extends' ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )
+ {
+ // Java.g:3562:3: (a8= 'extends' ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )
+ // Java.g:3563:4: a8= 'extends' ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ {
+ a8=(Token)match(input,71,FOLLOW_71_in_parse_org_emftext_language_java_classifiers_Interface2771); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_4_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a8, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(884);
+ addExpectedElement(885);
+ addExpectedElement(886);
+ addExpectedElement(887);
+ addExpectedElement(888);
+ addExpectedElement(889);
+ addExpectedElement(890);
+ addExpectedElement(891);
+ addExpectedElement(892);
+ addExpectedElement(893);
+ addExpectedElement(894);
+ }
+
+ // Java.g:3587:4: ( (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ // Java.g:3588:5: (a9_0= parse_org_emftext_language_java_types_TypeReference ) ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ {
+ // Java.g:3588:5: (a9_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:3589:6: a9_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Interface2804);
+ a9_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ if (a9_0 != null) {
+ if (a9_0 != null) {
+ Object value = a9_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__EXTENDS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_4_0_0_1_0_0_0, a9_0, true);
+ copyLocalizationInfos(a9_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(895);
+ addExpectedElement(896);
+ }
+
+ // Java.g:3615:5: ( (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ loop31:
+ do {
+ int alt31=2;
+ int LA31_0 = input.LA(1);
+
+ if ( (LA31_0==33) ) {
+ alt31=1;
+ }
+
+
+ switch (alt31) {
+ case 1 :
+ // Java.g:3616:6: (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) )
+ {
+ // Java.g:3616:6: (a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference ) )
+ // Java.g:3617:7: a10= ',' (a11_0= parse_org_emftext_language_java_types_TypeReference )
+ {
+ a10=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Interface2852); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_4_0_0_1_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(897);
+ addExpectedElement(898);
+ addExpectedElement(899);
+ addExpectedElement(900);
+ addExpectedElement(901);
+ addExpectedElement(902);
+ addExpectedElement(903);
+ addExpectedElement(904);
+ addExpectedElement(905);
+ addExpectedElement(906);
+ addExpectedElement(907);
+ }
+
+ // Java.g:3641:7: (a11_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:3642:8: a11_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Interface2890);
+ a11_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ if (a11_0 != null) {
+ if (a11_0 != null) {
+ Object value = a11_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__EXTENDS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_4_0_0_1_0_0_1_0_0_1, a11_0, true);
+ copyLocalizationInfos(a11_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(908);
+ addExpectedElement(909);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop31;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(910);
+ addExpectedElement(911);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(912);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(913);
+ }
+
+ a12=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Interface2987); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a12, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(914);
+ addExpectedElement(915);
+ addExpectedElement(916);
+ addExpectedElement(917);
+ addExpectedElement(918);
+ addExpectedElement(919);
+ addExpectedElement(920);
+ addExpectedElement(921);
+ addExpectedElement(922);
+ addExpectedElement(923);
+ addExpectedElement(924);
+ addExpectedElement(925);
+ addExpectedElement(926);
+ addExpectedElement(927);
+ addExpectedElement(928);
+ addExpectedElement(929);
+ addExpectedElement(930);
+ addExpectedElement(931);
+ addExpectedElement(932);
+ addExpectedElement(933);
+ addExpectedElement(934);
+ addExpectedElement(935);
+ addExpectedElement(936);
+ addExpectedElement(937);
+ addExpectedElement(938);
+ addExpectedElement(939);
+ addExpectedElement(940);
+ addExpectedElement(941);
+ addExpectedElement(942);
+ addExpectedElement(943);
+ addExpectedElement(944);
+ addExpectedElement(945);
+ addExpectedElement(946);
+ addExpectedElement(947);
+ addExpectedElement(948);
+ }
+
+ // Java.g:3737:2: ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )*
+ loop33:
+ do {
+ int alt33=2;
+ int LA33_0 = input.LA(1);
+
+ if ( (LA33_0==IDENTIFIER||(LA33_0 >= 42 && LA33_0 <= 43)||LA33_0==48||LA33_0==56||LA33_0==58||LA33_0==60||(LA33_0 >= 63 && LA33_0 <= 64)||LA33_0==68||LA33_0==70||LA33_0==72||LA33_0==74||(LA33_0 >= 80 && LA33_0 <= 83)||(LA33_0 >= 87 && LA33_0 <= 89)||(LA33_0 >= 91 && LA33_0 <= 93)||LA33_0==96||LA33_0==100||(LA33_0 >= 102 && LA33_0 <= 103)||LA33_0==105) ) {
+ alt33=1;
+ }
+
+
+ switch (alt33) {
+ case 1 :
+ // Java.g:3738:3: ( (a13_0= parse_org_emftext_language_java_members_Member ) )
+ {
+ // Java.g:3738:3: ( (a13_0= parse_org_emftext_language_java_members_Member ) )
+ // Java.g:3739:4: (a13_0= parse_org_emftext_language_java_members_Member )
+ {
+ // Java.g:3739:4: (a13_0= parse_org_emftext_language_java_members_Member )
+ // Java.g:3740:5: a13_0= parse_org_emftext_language_java_members_Member
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Interface3016);
+ a13_0=parse_org_emftext_language_java_members_Member();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ if (a13_0 != null) {
+ if (a13_0 != null) {
+ Object value = a13_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.INTERFACE__MEMBERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_7_0_0_1, a13_0, true);
+ copyLocalizationInfos(a13_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(949);
+ addExpectedElement(950);
+ addExpectedElement(951);
+ addExpectedElement(952);
+ addExpectedElement(953);
+ addExpectedElement(954);
+ addExpectedElement(955);
+ addExpectedElement(956);
+ addExpectedElement(957);
+ addExpectedElement(958);
+ addExpectedElement(959);
+ addExpectedElement(960);
+ addExpectedElement(961);
+ addExpectedElement(962);
+ addExpectedElement(963);
+ addExpectedElement(964);
+ addExpectedElement(965);
+ addExpectedElement(966);
+ addExpectedElement(967);
+ addExpectedElement(968);
+ addExpectedElement(969);
+ addExpectedElement(970);
+ addExpectedElement(971);
+ addExpectedElement(972);
+ addExpectedElement(973);
+ addExpectedElement(974);
+ addExpectedElement(975);
+ addExpectedElement(976);
+ addExpectedElement(977);
+ addExpectedElement(978);
+ addExpectedElement(979);
+ addExpectedElement(980);
+ addExpectedElement(981);
+ addExpectedElement(982);
+ addExpectedElement(983);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop33;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(984);
+ addExpectedElement(985);
+ addExpectedElement(986);
+ addExpectedElement(987);
+ addExpectedElement(988);
+ addExpectedElement(989);
+ addExpectedElement(990);
+ addExpectedElement(991);
+ addExpectedElement(992);
+ addExpectedElement(993);
+ addExpectedElement(994);
+ addExpectedElement(995);
+ addExpectedElement(996);
+ addExpectedElement(997);
+ addExpectedElement(998);
+ addExpectedElement(999);
+ addExpectedElement(1000);
+ addExpectedElement(1001);
+ addExpectedElement(1002);
+ addExpectedElement(1003);
+ addExpectedElement(1004);
+ addExpectedElement(1005);
+ addExpectedElement(1006);
+ addExpectedElement(1007);
+ addExpectedElement(1008);
+ addExpectedElement(1009);
+ addExpectedElement(1010);
+ addExpectedElement(1011);
+ addExpectedElement(1012);
+ addExpectedElement(1013);
+ addExpectedElement(1014);
+ addExpectedElement(1015);
+ addExpectedElement(1016);
+ addExpectedElement(1017);
+ addExpectedElement(1018);
+ }
+
+ a14=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Interface3057); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createInterface();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_9_0_0_9, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a14, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1019);
+ addExpectedElement(1020);
+ addExpectedElement(1021);
+ addExpectedElement(1022);
+ addExpectedElement(1023);
+ addExpectedElement(1024);
+ addExpectedElement(1025);
+ addExpectedElement(1026);
+ addExpectedElement(1027);
+ addExpectedElement(1028);
+ addExpectedElement(1029);
+ addExpectedElement(1030);
+ addExpectedElement(1031);
+ addExpectedElement(1032);
+ addExpectedElement(1033);
+ addExpectedElement(1034);
+ addExpectedElement(1035);
+ addExpectedElement(1036);
+ addExpectedElement(1037);
+ addExpectedElement(1038);
+ addExpectedElement(1039);
+ addExpectedElement(1040);
+ addExpectedElement(1041);
+ addExpectedElement(1042);
+ addExpectedElement(1043);
+ addExpectedElement(1044);
+ addExpectedElement(1045);
+ addExpectedElement(1046);
+ addExpectedElement(1047);
+ addExpectedElement(1048);
+ addExpectedElement(1049);
+ addExpectedElement(1050);
+ addExpectedElement(1051);
+ addExpectedElement(1052);
+ addExpectedElement(1053);
+ addExpectedElement(1054);
+ addExpectedElement(1055);
+ addExpectedElement(1056);
+ addExpectedElement(1057);
+ addExpectedElement(1058);
+ addExpectedElement(1059);
+ addExpectedElement(1060);
+ addExpectedElement(1061);
+ addExpectedElement(1062);
+ addExpectedElement(1063);
+ addExpectedElement(1064);
+ addExpectedElement(1065);
+ addExpectedElement(1066);
+ addExpectedElement(1067);
+ addExpectedElement(1068);
+ addExpectedElement(1069);
+ addExpectedElement(1070);
+ addExpectedElement(1071);
+ addExpectedElement(1072);
+ addExpectedElement(1073);
+ addExpectedElement(1074);
+ addExpectedElement(1075);
+ addExpectedElement(1076);
+ addExpectedElement(1077);
+ addExpectedElement(1078);
+ addExpectedElement(1079);
+ addExpectedElement(1080);
+ addExpectedElement(1081);
+ addExpectedElement(1082);
+ addExpectedElement(1083);
+ addExpectedElement(1084);
+ addExpectedElement(1085);
+ addExpectedElement(1086);
+ addExpectedElement(1087);
+ addExpectedElement(1088);
+ addExpectedElement(1089);
+ addExpectedElement(1090);
+ addExpectedElement(1091);
+ addExpectedElement(1092);
+ addExpectedElement(1093);
+ addExpectedElement(1094);
+ addExpectedElement(1095);
+ addExpectedElement(1096);
+ addExpectedElement(1097);
+ addExpectedElement(1098);
+ addExpectedElement(1099);
+ addExpectedElement(1100);
+ addExpectedElement(1101);
+ addExpectedElement(1102);
+ addExpectedElement(1103);
+ addExpectedElement(1104);
+ addExpectedElement(1105);
+ addExpectedElement(1106);
+ addExpectedElement(1107);
+ addExpectedElement(1108);
+ addExpectedElement(1109);
+ addExpectedElement(1110);
+ addExpectedElement(1111);
+ addExpectedElement(1112);
+ addExpectedElement(1113);
+ addExpectedElement(1114);
+ addExpectedElement(1115);
+ addExpectedElement(1116);
+ addExpectedElement(1117);
+ addExpectedElement(1118);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 11, parse_org_emftext_language_java_classifiers_Interface_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_classifiers_Interface"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_classifiers_Enumeration"
+ // Java.g:3955:1: parse_org_emftext_language_java_classifiers_Enumeration returns [org.emftext.language.java.classifiers.Enumeration element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'enum' (a2= IDENTIFIER ) ( (a3= 'implements' ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a7= '{' ( ( (a8_0= parse_org_emftext_language_java_members_EnumConstant ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )* ) )? ( (a11= ',' ) )? ( (a12= ';' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* ) )? a14= '}' ;
+ public final org.emftext.language.java.classifiers.Enumeration parse_org_emftext_language_java_classifiers_Enumeration() throws RecognitionException {
+ org.emftext.language.java.classifiers.Enumeration element = null;
+
+ int parse_org_emftext_language_java_classifiers_Enumeration_StartIndex = input.index();
+
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a9=null;
+ Token a11=null;
+ Token a12=null;
+ Token a14=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.types.TypeReference a4_0 =null;
+
+ org.emftext.language.java.types.TypeReference a6_0 =null;
+
+ org.emftext.language.java.members.EnumConstant a8_0 =null;
+
+ org.emftext.language.java.members.EnumConstant a10_0 =null;
+
+ org.emftext.language.java.members.Member a13_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return element; }
+
+ // Java.g:3958:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'enum' (a2= IDENTIFIER ) ( (a3= 'implements' ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a7= '{' ( ( (a8_0= parse_org_emftext_language_java_members_EnumConstant ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )* ) )? ( (a11= ',' ) )? ( (a12= ';' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* ) )? a14= '}' )
+ // Java.g:3959:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= 'enum' (a2= IDENTIFIER ) ( (a3= 'implements' ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )? a7= '{' ( ( (a8_0= parse_org_emftext_language_java_members_EnumConstant ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )* ) )? ( (a11= ',' ) )? ( (a12= ';' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* ) )? a14= '}'
+ {
+ // Java.g:3959:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop34:
+ do {
+ int alt34=2;
+ int LA34_0 = input.LA(1);
+
+ if ( (LA34_0==48||LA34_0==56||LA34_0==72||LA34_0==83||(LA34_0 >= 87 && LA34_0 <= 89)||(LA34_0 >= 92 && LA34_0 <= 93)||LA34_0==96||LA34_0==100||LA34_0==103) ) {
+ alt34=1;
+ }
+
+
+ switch (alt34) {
+ case 1 :
+ // Java.g:3960:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:3960:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:3961:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Enumeration3095);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop34;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1119);
+ addExpectedElement(1120);
+ addExpectedElement(1121);
+ addExpectedElement(1122);
+ addExpectedElement(1123);
+ addExpectedElement(1124);
+ addExpectedElement(1125);
+ addExpectedElement(1126);
+ addExpectedElement(1127);
+ addExpectedElement(1128);
+ addExpectedElement(1129);
+ addExpectedElement(1130);
+ addExpectedElement(1131);
+ }
+
+ a1=(Token)match(input,70,FOLLOW_70_in_parse_org_emftext_language_java_classifiers_Enumeration3121); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1132);
+ }
+
+ // Java.g:4013:2: (a2= IDENTIFIER )
+ // Java.g:4014:3: a2= IDENTIFIER
+ {
+ a2=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Enumeration3139); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ if (a2 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a2.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a2).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a2).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_2, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a2, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1133);
+ addExpectedElement(1134);
+ }
+
+ // Java.g:4050:2: ( (a3= 'implements' ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) ) )?
+ int alt36=2;
+ int LA36_0 = input.LA(1);
+
+ if ( (LA36_0==77) ) {
+ alt36=1;
+ }
+ switch (alt36) {
+ case 1 :
+ // Java.g:4051:3: (a3= 'implements' ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )
+ {
+ // Java.g:4051:3: (a3= 'implements' ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )
+ // Java.g:4052:4: a3= 'implements' ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ {
+ a3=(Token)match(input,77,FOLLOW_77_in_parse_org_emftext_language_java_classifiers_Enumeration3169); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1135);
+ addExpectedElement(1136);
+ addExpectedElement(1137);
+ addExpectedElement(1138);
+ addExpectedElement(1139);
+ addExpectedElement(1140);
+ addExpectedElement(1141);
+ addExpectedElement(1142);
+ addExpectedElement(1143);
+ addExpectedElement(1144);
+ addExpectedElement(1145);
+ }
+
+ // Java.g:4076:4: ( (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ // Java.g:4077:5: (a4_0= parse_org_emftext_language_java_types_TypeReference ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ {
+ // Java.g:4077:5: (a4_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:4078:6: a4_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Enumeration3202);
+ a4_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__IMPLEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_3_0_0_1_0_0_0, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1146);
+ addExpectedElement(1147);
+ }
+
+ // Java.g:4104:5: ( (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ loop35:
+ do {
+ int alt35=2;
+ int LA35_0 = input.LA(1);
+
+ if ( (LA35_0==33) ) {
+ alt35=1;
+ }
+
+
+ switch (alt35) {
+ case 1 :
+ // Java.g:4105:6: (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) )
+ {
+ // Java.g:4105:6: (a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference ) )
+ // Java.g:4106:7: a5= ',' (a6_0= parse_org_emftext_language_java_types_TypeReference )
+ {
+ a5=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Enumeration3250); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_3_0_0_1_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1148);
+ addExpectedElement(1149);
+ addExpectedElement(1150);
+ addExpectedElement(1151);
+ addExpectedElement(1152);
+ addExpectedElement(1153);
+ addExpectedElement(1154);
+ addExpectedElement(1155);
+ addExpectedElement(1156);
+ addExpectedElement(1157);
+ addExpectedElement(1158);
+ }
+
+ // Java.g:4130:7: (a6_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:4131:8: a6_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Enumeration3288);
+ a6_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__IMPLEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_3_0_0_1_0_0_1_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1159);
+ addExpectedElement(1160);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop35;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1161);
+ addExpectedElement(1162);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1163);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1164);
+ }
+
+ a7=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Enumeration3385); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_5, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1165);
+ addExpectedElement(1166);
+ addExpectedElement(1167);
+ addExpectedElement(1168);
+ addExpectedElement(1169);
+ }
+
+ // Java.g:4196:2: ( ( (a8_0= parse_org_emftext_language_java_members_EnumConstant ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )* ) )?
+ int alt38=2;
+ int LA38_0 = input.LA(1);
+
+ if ( (LA38_0==IDENTIFIER||LA38_0==48) ) {
+ alt38=1;
+ }
+ switch (alt38) {
+ case 1 :
+ // Java.g:4197:3: ( (a8_0= parse_org_emftext_language_java_members_EnumConstant ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )* )
+ {
+ // Java.g:4197:3: ( (a8_0= parse_org_emftext_language_java_members_EnumConstant ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )* )
+ // Java.g:4198:4: (a8_0= parse_org_emftext_language_java_members_EnumConstant ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )*
+ {
+ // Java.g:4198:4: (a8_0= parse_org_emftext_language_java_members_EnumConstant )
+ // Java.g:4199:5: a8_0= parse_org_emftext_language_java_members_EnumConstant
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_EnumConstant_in_parse_org_emftext_language_java_classifiers_Enumeration3414);
+ a8_0=parse_org_emftext_language_java_members_EnumConstant();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ if (a8_0 != null) {
+ if (a8_0 != null) {
+ Object value = a8_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__CONSTANTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_6_0_0_1, a8_0, true);
+ copyLocalizationInfos(a8_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1170);
+ addExpectedElement(1171);
+ addExpectedElement(1172);
+ addExpectedElement(1173);
+ }
+
+ // Java.g:4227:4: ( (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) ) )*
+ loop37:
+ do {
+ int alt37=2;
+ int LA37_0 = input.LA(1);
+
+ if ( (LA37_0==33) ) {
+ int LA37_1 = input.LA(2);
+
+ if ( (LA37_1==IDENTIFIER||LA37_1==48) ) {
+ alt37=1;
+ }
+
+
+ }
+
+
+ switch (alt37) {
+ case 1 :
+ // Java.g:4228:5: (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) )
+ {
+ // Java.g:4228:5: (a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant ) )
+ // Java.g:4229:6: a9= ',' (a10_0= parse_org_emftext_language_java_members_EnumConstant )
+ {
+ a9=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Enumeration3455); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_6_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1174);
+ addExpectedElement(1175);
+ }
+
+ // Java.g:4244:6: (a10_0= parse_org_emftext_language_java_members_EnumConstant )
+ // Java.g:4245:7: a10_0= parse_org_emftext_language_java_members_EnumConstant
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_EnumConstant_in_parse_org_emftext_language_java_classifiers_Enumeration3489);
+ a10_0=parse_org_emftext_language_java_members_EnumConstant();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ if (a10_0 != null) {
+ if (a10_0 != null) {
+ Object value = a10_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__CONSTANTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_6_0_0_2_0_0_2, a10_0, true);
+ copyLocalizationInfos(a10_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1176);
+ addExpectedElement(1177);
+ addExpectedElement(1178);
+ addExpectedElement(1179);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop37;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1180);
+ addExpectedElement(1181);
+ addExpectedElement(1182);
+ addExpectedElement(1183);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1184);
+ addExpectedElement(1185);
+ addExpectedElement(1186);
+ }
+
+ // Java.g:4292:2: ( (a11= ',' ) )?
+ int alt39=2;
+ int LA39_0 = input.LA(1);
+
+ if ( (LA39_0==33) ) {
+ alt39=1;
+ }
+ switch (alt39) {
+ case 1 :
+ // Java.g:4293:3: (a11= ',' )
+ {
+ // Java.g:4293:3: (a11= ',' )
+ // Java.g:4294:4: a11= ','
+ {
+ a11=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Enumeration3572); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_7_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1187);
+ addExpectedElement(1188);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1189);
+ addExpectedElement(1190);
+ }
+
+ // Java.g:4317:2: ( (a12= ';' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* ) )?
+ int alt41=2;
+ int LA41_0 = input.LA(1);
+
+ if ( (LA41_0==42) ) {
+ alt41=1;
+ }
+ switch (alt41) {
+ case 1 :
+ // Java.g:4318:3: (a12= ';' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* )
+ {
+ // Java.g:4318:3: (a12= ';' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )* )
+ // Java.g:4319:4: a12= ';' ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )*
+ {
+ a12=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_classifiers_Enumeration3614); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_8_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a12, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1191);
+ addExpectedElement(1192);
+ addExpectedElement(1193);
+ addExpectedElement(1194);
+ addExpectedElement(1195);
+ addExpectedElement(1196);
+ addExpectedElement(1197);
+ addExpectedElement(1198);
+ addExpectedElement(1199);
+ addExpectedElement(1200);
+ addExpectedElement(1201);
+ addExpectedElement(1202);
+ addExpectedElement(1203);
+ addExpectedElement(1204);
+ addExpectedElement(1205);
+ addExpectedElement(1206);
+ addExpectedElement(1207);
+ addExpectedElement(1208);
+ addExpectedElement(1209);
+ addExpectedElement(1210);
+ addExpectedElement(1211);
+ addExpectedElement(1212);
+ addExpectedElement(1213);
+ addExpectedElement(1214);
+ addExpectedElement(1215);
+ addExpectedElement(1216);
+ addExpectedElement(1217);
+ addExpectedElement(1218);
+ addExpectedElement(1219);
+ addExpectedElement(1220);
+ addExpectedElement(1221);
+ addExpectedElement(1222);
+ addExpectedElement(1223);
+ addExpectedElement(1224);
+ addExpectedElement(1225);
+ }
+
+ // Java.g:4367:4: ( ( (a13_0= parse_org_emftext_language_java_members_Member ) ) )*
+ loop40:
+ do {
+ int alt40=2;
+ int LA40_0 = input.LA(1);
+
+ if ( (LA40_0==IDENTIFIER||(LA40_0 >= 42 && LA40_0 <= 43)||LA40_0==48||LA40_0==56||LA40_0==58||LA40_0==60||(LA40_0 >= 63 && LA40_0 <= 64)||LA40_0==68||LA40_0==70||LA40_0==72||LA40_0==74||(LA40_0 >= 80 && LA40_0 <= 83)||(LA40_0 >= 87 && LA40_0 <= 89)||(LA40_0 >= 91 && LA40_0 <= 93)||LA40_0==96||LA40_0==100||(LA40_0 >= 102 && LA40_0 <= 103)||LA40_0==105) ) {
+ alt40=1;
+ }
+
+
+ switch (alt40) {
+ case 1 :
+ // Java.g:4368:5: ( (a13_0= parse_org_emftext_language_java_members_Member ) )
+ {
+ // Java.g:4368:5: ( (a13_0= parse_org_emftext_language_java_members_Member ) )
+ // Java.g:4369:6: (a13_0= parse_org_emftext_language_java_members_Member )
+ {
+ // Java.g:4369:6: (a13_0= parse_org_emftext_language_java_members_Member )
+ // Java.g:4370:7: a13_0= parse_org_emftext_language_java_members_Member
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Enumeration3655);
+ a13_0=parse_org_emftext_language_java_members_Member();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ if (a13_0 != null) {
+ if (a13_0 != null) {
+ Object value = a13_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ENUMERATION__MEMBERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_8_0_0_1_0_0_1, a13_0, true);
+ copyLocalizationInfos(a13_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1226);
+ addExpectedElement(1227);
+ addExpectedElement(1228);
+ addExpectedElement(1229);
+ addExpectedElement(1230);
+ addExpectedElement(1231);
+ addExpectedElement(1232);
+ addExpectedElement(1233);
+ addExpectedElement(1234);
+ addExpectedElement(1235);
+ addExpectedElement(1236);
+ addExpectedElement(1237);
+ addExpectedElement(1238);
+ addExpectedElement(1239);
+ addExpectedElement(1240);
+ addExpectedElement(1241);
+ addExpectedElement(1242);
+ addExpectedElement(1243);
+ addExpectedElement(1244);
+ addExpectedElement(1245);
+ addExpectedElement(1246);
+ addExpectedElement(1247);
+ addExpectedElement(1248);
+ addExpectedElement(1249);
+ addExpectedElement(1250);
+ addExpectedElement(1251);
+ addExpectedElement(1252);
+ addExpectedElement(1253);
+ addExpectedElement(1254);
+ addExpectedElement(1255);
+ addExpectedElement(1256);
+ addExpectedElement(1257);
+ addExpectedElement(1258);
+ addExpectedElement(1259);
+ addExpectedElement(1260);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop40;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1261);
+ addExpectedElement(1262);
+ addExpectedElement(1263);
+ addExpectedElement(1264);
+ addExpectedElement(1265);
+ addExpectedElement(1266);
+ addExpectedElement(1267);
+ addExpectedElement(1268);
+ addExpectedElement(1269);
+ addExpectedElement(1270);
+ addExpectedElement(1271);
+ addExpectedElement(1272);
+ addExpectedElement(1273);
+ addExpectedElement(1274);
+ addExpectedElement(1275);
+ addExpectedElement(1276);
+ addExpectedElement(1277);
+ addExpectedElement(1278);
+ addExpectedElement(1279);
+ addExpectedElement(1280);
+ addExpectedElement(1281);
+ addExpectedElement(1282);
+ addExpectedElement(1283);
+ addExpectedElement(1284);
+ addExpectedElement(1285);
+ addExpectedElement(1286);
+ addExpectedElement(1287);
+ addExpectedElement(1288);
+ addExpectedElement(1289);
+ addExpectedElement(1290);
+ addExpectedElement(1291);
+ addExpectedElement(1292);
+ addExpectedElement(1293);
+ addExpectedElement(1294);
+ addExpectedElement(1295);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1296);
+ }
+
+ a14=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Enumeration3729); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createEnumeration();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_10_0_0_9, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a14, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1297);
+ addExpectedElement(1298);
+ addExpectedElement(1299);
+ addExpectedElement(1300);
+ addExpectedElement(1301);
+ addExpectedElement(1302);
+ addExpectedElement(1303);
+ addExpectedElement(1304);
+ addExpectedElement(1305);
+ addExpectedElement(1306);
+ addExpectedElement(1307);
+ addExpectedElement(1308);
+ addExpectedElement(1309);
+ addExpectedElement(1310);
+ addExpectedElement(1311);
+ addExpectedElement(1312);
+ addExpectedElement(1313);
+ addExpectedElement(1314);
+ addExpectedElement(1315);
+ addExpectedElement(1316);
+ addExpectedElement(1317);
+ addExpectedElement(1318);
+ addExpectedElement(1319);
+ addExpectedElement(1320);
+ addExpectedElement(1321);
+ addExpectedElement(1322);
+ addExpectedElement(1323);
+ addExpectedElement(1324);
+ addExpectedElement(1325);
+ addExpectedElement(1326);
+ addExpectedElement(1327);
+ addExpectedElement(1328);
+ addExpectedElement(1329);
+ addExpectedElement(1330);
+ addExpectedElement(1331);
+ addExpectedElement(1332);
+ addExpectedElement(1333);
+ addExpectedElement(1334);
+ addExpectedElement(1335);
+ addExpectedElement(1336);
+ addExpectedElement(1337);
+ addExpectedElement(1338);
+ addExpectedElement(1339);
+ addExpectedElement(1340);
+ addExpectedElement(1341);
+ addExpectedElement(1342);
+ addExpectedElement(1343);
+ addExpectedElement(1344);
+ addExpectedElement(1345);
+ addExpectedElement(1346);
+ addExpectedElement(1347);
+ addExpectedElement(1348);
+ addExpectedElement(1349);
+ addExpectedElement(1350);
+ addExpectedElement(1351);
+ addExpectedElement(1352);
+ addExpectedElement(1353);
+ addExpectedElement(1354);
+ addExpectedElement(1355);
+ addExpectedElement(1356);
+ addExpectedElement(1357);
+ addExpectedElement(1358);
+ addExpectedElement(1359);
+ addExpectedElement(1360);
+ addExpectedElement(1361);
+ addExpectedElement(1362);
+ addExpectedElement(1363);
+ addExpectedElement(1364);
+ addExpectedElement(1365);
+ addExpectedElement(1366);
+ addExpectedElement(1367);
+ addExpectedElement(1368);
+ addExpectedElement(1369);
+ addExpectedElement(1370);
+ addExpectedElement(1371);
+ addExpectedElement(1372);
+ addExpectedElement(1373);
+ addExpectedElement(1374);
+ addExpectedElement(1375);
+ addExpectedElement(1376);
+ addExpectedElement(1377);
+ addExpectedElement(1378);
+ addExpectedElement(1379);
+ addExpectedElement(1380);
+ addExpectedElement(1381);
+ addExpectedElement(1382);
+ addExpectedElement(1383);
+ addExpectedElement(1384);
+ addExpectedElement(1385);
+ addExpectedElement(1386);
+ addExpectedElement(1387);
+ addExpectedElement(1388);
+ addExpectedElement(1389);
+ addExpectedElement(1390);
+ addExpectedElement(1391);
+ addExpectedElement(1392);
+ addExpectedElement(1393);
+ addExpectedElement(1394);
+ addExpectedElement(1395);
+ addExpectedElement(1396);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 12, parse_org_emftext_language_java_classifiers_Enumeration_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_classifiers_Enumeration"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_classifiers_Annotation"
+ // Java.g:4592:1: parse_org_emftext_language_java_classifiers_Annotation returns [org.emftext.language.java.classifiers.Annotation element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= '@' a2= 'interface' (a3= IDENTIFIER ) a4= '{' ( ( (a5_0= parse_org_emftext_language_java_members_Member ) ) )* a6= '}' ;
+ public final org.emftext.language.java.classifiers.Annotation parse_org_emftext_language_java_classifiers_Annotation() throws RecognitionException {
+ org.emftext.language.java.classifiers.Annotation element = null;
+
+ int parse_org_emftext_language_java_classifiers_Annotation_StartIndex = input.index();
+
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ Token a4=null;
+ Token a6=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.members.Member a5_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return element; }
+
+ // Java.g:4595:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= '@' a2= 'interface' (a3= IDENTIFIER ) a4= '{' ( ( (a5_0= parse_org_emftext_language_java_members_Member ) ) )* a6= '}' )
+ // Java.g:4596:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* a1= '@' a2= 'interface' (a3= IDENTIFIER ) a4= '{' ( ( (a5_0= parse_org_emftext_language_java_members_Member ) ) )* a6= '}'
+ {
+ // Java.g:4596:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop42:
+ do {
+ int alt42=2;
+ int LA42_0 = input.LA(1);
+
+ if ( (LA42_0==48) ) {
+ int LA42_1 = input.LA(2);
+
+ if ( (LA42_1==IDENTIFIER) ) {
+ alt42=1;
+ }
+
+
+ }
+ else if ( (LA42_0==56||LA42_0==72||LA42_0==83||(LA42_0 >= 87 && LA42_0 <= 89)||(LA42_0 >= 92 && LA42_0 <= 93)||LA42_0==96||LA42_0==100||LA42_0==103) ) {
+ alt42=1;
+ }
+
+
+ switch (alt42) {
+ case 1 :
+ // Java.g:4597:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:4597:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:4598:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Annotation3767);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnnotation();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ANNOTATION__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_11_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop42;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1397);
+ addExpectedElement(1398);
+ addExpectedElement(1399);
+ addExpectedElement(1400);
+ addExpectedElement(1401);
+ addExpectedElement(1402);
+ addExpectedElement(1403);
+ addExpectedElement(1404);
+ addExpectedElement(1405);
+ addExpectedElement(1406);
+ addExpectedElement(1407);
+ addExpectedElement(1408);
+ addExpectedElement(1409);
+ }
+
+ a1=(Token)match(input,48,FOLLOW_48_in_parse_org_emftext_language_java_classifiers_Annotation3793); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnnotation();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_11_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1410);
+ }
+
+ a2=(Token)match(input,81,FOLLOW_81_in_parse_org_emftext_language_java_classifiers_Annotation3807); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnnotation();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_11_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1411);
+ }
+
+ // Java.g:4664:2: (a3= IDENTIFIER )
+ // Java.g:4665:3: a3= IDENTIFIER
+ {
+ a3=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Annotation3825); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnnotation();
+ startIncompleteElement(element);
+ }
+ if (a3 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a3.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ANNOTATION__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a3).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.classifiers.ClassifiersPackage.ANNOTATION__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_11_0_0_3, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a3, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1412);
+ }
+
+ a4=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Annotation3846); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnnotation();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_11_0_0_5, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1413);
+ addExpectedElement(1414);
+ addExpectedElement(1415);
+ addExpectedElement(1416);
+ addExpectedElement(1417);
+ addExpectedElement(1418);
+ addExpectedElement(1419);
+ addExpectedElement(1420);
+ addExpectedElement(1421);
+ addExpectedElement(1422);
+ addExpectedElement(1423);
+ addExpectedElement(1424);
+ addExpectedElement(1425);
+ addExpectedElement(1426);
+ addExpectedElement(1427);
+ addExpectedElement(1428);
+ addExpectedElement(1429);
+ addExpectedElement(1430);
+ addExpectedElement(1431);
+ addExpectedElement(1432);
+ addExpectedElement(1433);
+ addExpectedElement(1434);
+ addExpectedElement(1435);
+ addExpectedElement(1436);
+ addExpectedElement(1437);
+ addExpectedElement(1438);
+ addExpectedElement(1439);
+ addExpectedElement(1440);
+ addExpectedElement(1441);
+ addExpectedElement(1442);
+ addExpectedElement(1443);
+ addExpectedElement(1444);
+ addExpectedElement(1445);
+ addExpectedElement(1446);
+ addExpectedElement(1447);
+ }
+
+ // Java.g:4748:2: ( ( (a5_0= parse_org_emftext_language_java_members_Member ) ) )*
+ loop43:
+ do {
+ int alt43=2;
+ int LA43_0 = input.LA(1);
+
+ if ( (LA43_0==IDENTIFIER||(LA43_0 >= 42 && LA43_0 <= 43)||LA43_0==48||LA43_0==56||LA43_0==58||LA43_0==60||(LA43_0 >= 63 && LA43_0 <= 64)||LA43_0==68||LA43_0==70||LA43_0==72||LA43_0==74||(LA43_0 >= 80 && LA43_0 <= 83)||(LA43_0 >= 87 && LA43_0 <= 89)||(LA43_0 >= 91 && LA43_0 <= 93)||LA43_0==96||LA43_0==100||(LA43_0 >= 102 && LA43_0 <= 103)||LA43_0==105) ) {
+ alt43=1;
+ }
+
+
+ switch (alt43) {
+ case 1 :
+ // Java.g:4749:3: ( (a5_0= parse_org_emftext_language_java_members_Member ) )
+ {
+ // Java.g:4749:3: ( (a5_0= parse_org_emftext_language_java_members_Member ) )
+ // Java.g:4750:4: (a5_0= parse_org_emftext_language_java_members_Member )
+ {
+ // Java.g:4750:4: (a5_0= parse_org_emftext_language_java_members_Member )
+ // Java.g:4751:5: a5_0= parse_org_emftext_language_java_members_Member
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Annotation3875);
+ a5_0=parse_org_emftext_language_java_members_Member();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnnotation();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.classifiers.ClassifiersPackage.ANNOTATION__MEMBERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_11_0_0_6_0_0_1, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1448);
+ addExpectedElement(1449);
+ addExpectedElement(1450);
+ addExpectedElement(1451);
+ addExpectedElement(1452);
+ addExpectedElement(1453);
+ addExpectedElement(1454);
+ addExpectedElement(1455);
+ addExpectedElement(1456);
+ addExpectedElement(1457);
+ addExpectedElement(1458);
+ addExpectedElement(1459);
+ addExpectedElement(1460);
+ addExpectedElement(1461);
+ addExpectedElement(1462);
+ addExpectedElement(1463);
+ addExpectedElement(1464);
+ addExpectedElement(1465);
+ addExpectedElement(1466);
+ addExpectedElement(1467);
+ addExpectedElement(1468);
+ addExpectedElement(1469);
+ addExpectedElement(1470);
+ addExpectedElement(1471);
+ addExpectedElement(1472);
+ addExpectedElement(1473);
+ addExpectedElement(1474);
+ addExpectedElement(1475);
+ addExpectedElement(1476);
+ addExpectedElement(1477);
+ addExpectedElement(1478);
+ addExpectedElement(1479);
+ addExpectedElement(1480);
+ addExpectedElement(1481);
+ addExpectedElement(1482);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop43;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1483);
+ addExpectedElement(1484);
+ addExpectedElement(1485);
+ addExpectedElement(1486);
+ addExpectedElement(1487);
+ addExpectedElement(1488);
+ addExpectedElement(1489);
+ addExpectedElement(1490);
+ addExpectedElement(1491);
+ addExpectedElement(1492);
+ addExpectedElement(1493);
+ addExpectedElement(1494);
+ addExpectedElement(1495);
+ addExpectedElement(1496);
+ addExpectedElement(1497);
+ addExpectedElement(1498);
+ addExpectedElement(1499);
+ addExpectedElement(1500);
+ addExpectedElement(1501);
+ addExpectedElement(1502);
+ addExpectedElement(1503);
+ addExpectedElement(1504);
+ addExpectedElement(1505);
+ addExpectedElement(1506);
+ addExpectedElement(1507);
+ addExpectedElement(1508);
+ addExpectedElement(1509);
+ addExpectedElement(1510);
+ addExpectedElement(1511);
+ addExpectedElement(1512);
+ addExpectedElement(1513);
+ addExpectedElement(1514);
+ addExpectedElement(1515);
+ addExpectedElement(1516);
+ addExpectedElement(1517);
+ }
+
+ a6=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Annotation3916); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createAnnotation();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_11_0_0_8, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1518);
+ addExpectedElement(1519);
+ addExpectedElement(1520);
+ addExpectedElement(1521);
+ addExpectedElement(1522);
+ addExpectedElement(1523);
+ addExpectedElement(1524);
+ addExpectedElement(1525);
+ addExpectedElement(1526);
+ addExpectedElement(1527);
+ addExpectedElement(1528);
+ addExpectedElement(1529);
+ addExpectedElement(1530);
+ addExpectedElement(1531);
+ addExpectedElement(1532);
+ addExpectedElement(1533);
+ addExpectedElement(1534);
+ addExpectedElement(1535);
+ addExpectedElement(1536);
+ addExpectedElement(1537);
+ addExpectedElement(1538);
+ addExpectedElement(1539);
+ addExpectedElement(1540);
+ addExpectedElement(1541);
+ addExpectedElement(1542);
+ addExpectedElement(1543);
+ addExpectedElement(1544);
+ addExpectedElement(1545);
+ addExpectedElement(1546);
+ addExpectedElement(1547);
+ addExpectedElement(1548);
+ addExpectedElement(1549);
+ addExpectedElement(1550);
+ addExpectedElement(1551);
+ addExpectedElement(1552);
+ addExpectedElement(1553);
+ addExpectedElement(1554);
+ addExpectedElement(1555);
+ addExpectedElement(1556);
+ addExpectedElement(1557);
+ addExpectedElement(1558);
+ addExpectedElement(1559);
+ addExpectedElement(1560);
+ addExpectedElement(1561);
+ addExpectedElement(1562);
+ addExpectedElement(1563);
+ addExpectedElement(1564);
+ addExpectedElement(1565);
+ addExpectedElement(1566);
+ addExpectedElement(1567);
+ addExpectedElement(1568);
+ addExpectedElement(1569);
+ addExpectedElement(1570);
+ addExpectedElement(1571);
+ addExpectedElement(1572);
+ addExpectedElement(1573);
+ addExpectedElement(1574);
+ addExpectedElement(1575);
+ addExpectedElement(1576);
+ addExpectedElement(1577);
+ addExpectedElement(1578);
+ addExpectedElement(1579);
+ addExpectedElement(1580);
+ addExpectedElement(1581);
+ addExpectedElement(1582);
+ addExpectedElement(1583);
+ addExpectedElement(1584);
+ addExpectedElement(1585);
+ addExpectedElement(1586);
+ addExpectedElement(1587);
+ addExpectedElement(1588);
+ addExpectedElement(1589);
+ addExpectedElement(1590);
+ addExpectedElement(1591);
+ addExpectedElement(1592);
+ addExpectedElement(1593);
+ addExpectedElement(1594);
+ addExpectedElement(1595);
+ addExpectedElement(1596);
+ addExpectedElement(1597);
+ addExpectedElement(1598);
+ addExpectedElement(1599);
+ addExpectedElement(1600);
+ addExpectedElement(1601);
+ addExpectedElement(1602);
+ addExpectedElement(1603);
+ addExpectedElement(1604);
+ addExpectedElement(1605);
+ addExpectedElement(1606);
+ addExpectedElement(1607);
+ addExpectedElement(1608);
+ addExpectedElement(1609);
+ addExpectedElement(1610);
+ addExpectedElement(1611);
+ addExpectedElement(1612);
+ addExpectedElement(1613);
+ addExpectedElement(1614);
+ addExpectedElement(1615);
+ addExpectedElement(1616);
+ addExpectedElement(1617);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 13, parse_org_emftext_language_java_classifiers_Annotation_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_classifiers_Annotation"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_annotations_AnnotationInstance"
+ // Java.g:4966:1: parse_org_emftext_language_java_annotations_AnnotationInstance returns [org.emftext.language.java.annotations.AnnotationInstance element = null] : a0= '@' ( ( (a1= IDENTIFIER ) a2= '.' ) )* (a3= IDENTIFIER ) ( ( (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter ) ) )? ;
+ private JavaContextDependentURIFragmentFactory annotationInstanceURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getAnnotationInstanceAnnotationReferenceResolver());
+ public final org.emftext.language.java.annotations.AnnotationInstance parse_org_emftext_language_java_annotations_AnnotationInstance() throws RecognitionException {
+ org.emftext.language.java.annotations.AnnotationInstance element = null;
+
+ int parse_org_emftext_language_java_annotations_AnnotationInstance_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+ org.emftext.language.java.annotations.AnnotationParameter a4_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return element; }
+
+ // Java.g:4969:2: (a0= '@' ( ( (a1= IDENTIFIER ) a2= '.' ) )* (a3= IDENTIFIER ) ( ( (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter ) ) )? )
+ // Java.g:4970:2: a0= '@' ( ( (a1= IDENTIFIER ) a2= '.' ) )* (a3= IDENTIFIER ) ( ( (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter ) ) )?
+ {
+ a0=(Token)match(input,48,FOLLOW_48_in_parse_org_emftext_language_java_annotations_AnnotationInstance3945); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationInstance();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_12_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1618);
+ addExpectedElement(1619);
+ }
+
+ // Java.g:4985:2: ( ( (a1= IDENTIFIER ) a2= '.' ) )*
+ loop44:
+ do {
+ int alt44=2;
+ int LA44_0 = input.LA(1);
+
+ if ( (LA44_0==IDENTIFIER) ) {
+ int LA44_1 = input.LA(2);
+
+ if ( (LA44_1==37) ) {
+ alt44=1;
+ }
+
+
+ }
+
+
+ switch (alt44) {
+ case 1 :
+ // Java.g:4986:3: ( (a1= IDENTIFIER ) a2= '.' )
+ {
+ // Java.g:4986:3: ( (a1= IDENTIFIER ) a2= '.' )
+ // Java.g:4987:4: (a1= IDENTIFIER ) a2= '.'
+ {
+ // Java.g:4987:4: (a1= IDENTIFIER )
+ // Java.g:4988:5: a1= IDENTIFIER
+ {
+ a1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationInstance3974); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationInstance();
+ startIncompleteElement(element);
+ }
+ if (a1 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_12_0_0_1_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1620);
+ }
+
+ a2=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_annotations_AnnotationInstance4007); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationInstance();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_12_0_0_1_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1621);
+ addExpectedElement(1622);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop44;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1623);
+ addExpectedElement(1624);
+ }
+
+ // Java.g:5046:2: (a3= IDENTIFIER )
+ // Java.g:5047:3: a3= IDENTIFIER
+ {
+ a3=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationInstance4044); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationInstance();
+ startIncompleteElement(element);
+ }
+ if (a3 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a3.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__ANNOTATION), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a3).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a3).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.classifiers.Classifier proxy = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(annotationInstanceURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__ANNOTATION), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__ANNOTATION), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_12_0_0_2, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a3, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a3, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1625);
+ addExpectedElement(1626);
+ addExpectedElement(1627);
+ addExpectedElement(1628);
+ addExpectedElement(1629);
+ addExpectedElement(1630);
+ addExpectedElement(1631);
+ addExpectedElement(1632);
+ addExpectedElement(1633);
+ addExpectedElement(1634);
+ addExpectedElement(1635);
+ addExpectedElement(1636);
+ addExpectedElement(1637);
+ addExpectedElement(1638);
+ addExpectedElement(1639);
+ addExpectedElement(1640);
+ addExpectedElement(1641);
+ addExpectedElement(1642);
+ addExpectedElement(1643);
+ addExpectedElement(1644);
+ addExpectedElement(1645);
+ addExpectedElement(1646);
+ addExpectedElement(1647);
+ addExpectedElement(1648);
+ addExpectedElement(1649);
+ addExpectedElement(1650);
+ addExpectedElement(1651);
+ addExpectedElement(1652);
+ addExpectedElement(1653);
+ addExpectedElement(1654);
+ addExpectedElement(1655);
+ addExpectedElement(1656);
+ addExpectedElement(1657);
+ addExpectedElement(1658);
+ addExpectedElement(1659);
+ addExpectedElement(1660);
+ addExpectedElement(1661);
+ addExpectedElement(1662);
+ addExpectedElement(1663);
+ addExpectedElement(1664);
+ addExpectedElement(1665);
+ addExpectedElement(1666);
+ addExpectedElement(1667);
+ addExpectedElement(1668);
+ addExpectedElement(1669);
+ addExpectedElement(1670);
+ addExpectedElement(1671);
+ addExpectedElement(1672);
+ addExpectedElement(1673);
+ addExpectedElement(1674);
+ addExpectedElement(1675);
+ addExpectedElement(1676);
+ addExpectedElement(1677);
+ addExpectedElement(1678);
+ addExpectedElement(1679);
+ addExpectedElement(1680);
+ addExpectedElement(1681);
+ addExpectedElement(1682);
+ addExpectedElement(1683);
+ addExpectedElement(1684);
+ addExpectedElement(1685);
+ addExpectedElement(1686);
+ addExpectedElement(1687);
+ addExpectedElement(1688);
+ addExpectedElement(1689);
+ addExpectedElement(1690);
+ addExpectedElement(1691);
+ addExpectedElement(1692);
+ addExpectedElement(1693);
+ addExpectedElement(1694);
+ addExpectedElement(1695);
+ addExpectedElement(1696);
+ addExpectedElement(1697);
+ addExpectedElement(1698);
+ addExpectedElement(1699);
+ addExpectedElement(1700);
+ addExpectedElement(1701);
+ addExpectedElement(1702);
+ addExpectedElement(1703);
+ addExpectedElement(1704);
+ addExpectedElement(1705);
+ addExpectedElement(1706);
+ addExpectedElement(1707);
+ addExpectedElement(1708);
+ addExpectedElement(1709);
+ addExpectedElement(1710);
+ addExpectedElement(1711);
+ addExpectedElement(1712);
+ addExpectedElement(1713);
+ addExpectedElement(1714);
+ addExpectedElement(1715);
+ addExpectedElement(1716);
+ addExpectedElement(1717);
+ }
+
+ // Java.g:5178:2: ( ( (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter ) ) )?
+ int alt45=2;
+ int LA45_0 = input.LA(1);
+
+ if ( (LA45_0==26) ) {
+ alt45=1;
+ }
+ switch (alt45) {
+ case 1 :
+ // Java.g:5179:3: ( (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter ) )
+ {
+ // Java.g:5179:3: ( (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter ) )
+ // Java.g:5180:4: (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter )
+ {
+ // Java.g:5180:4: (a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter )
+ // Java.g:5181:5: a4_0= parse_org_emftext_language_java_annotations_AnnotationParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationParameter_in_parse_org_emftext_language_java_annotations_AnnotationInstance4080);
+ a4_0=parse_org_emftext_language_java_annotations_AnnotationParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationInstance();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_INSTANCE__PARAMETER), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_12_0_0_3_0_0_0, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1718);
+ addExpectedElement(1719);
+ addExpectedElement(1720);
+ addExpectedElement(1721);
+ addExpectedElement(1722);
+ addExpectedElement(1723);
+ addExpectedElement(1724);
+ addExpectedElement(1725);
+ addExpectedElement(1726);
+ addExpectedElement(1727);
+ addExpectedElement(1728);
+ addExpectedElement(1729);
+ addExpectedElement(1730);
+ addExpectedElement(1731);
+ addExpectedElement(1732);
+ addExpectedElement(1733);
+ addExpectedElement(1734);
+ addExpectedElement(1735);
+ addExpectedElement(1736);
+ addExpectedElement(1737);
+ addExpectedElement(1738);
+ addExpectedElement(1739);
+ addExpectedElement(1740);
+ addExpectedElement(1741);
+ addExpectedElement(1742);
+ addExpectedElement(1743);
+ addExpectedElement(1744);
+ addExpectedElement(1745);
+ addExpectedElement(1746);
+ addExpectedElement(1747);
+ addExpectedElement(1748);
+ addExpectedElement(1749);
+ addExpectedElement(1750);
+ addExpectedElement(1751);
+ addExpectedElement(1752);
+ addExpectedElement(1753);
+ addExpectedElement(1754);
+ addExpectedElement(1755);
+ addExpectedElement(1756);
+ addExpectedElement(1757);
+ addExpectedElement(1758);
+ addExpectedElement(1759);
+ addExpectedElement(1760);
+ addExpectedElement(1761);
+ addExpectedElement(1762);
+ addExpectedElement(1763);
+ addExpectedElement(1764);
+ addExpectedElement(1765);
+ addExpectedElement(1766);
+ addExpectedElement(1767);
+ addExpectedElement(1768);
+ addExpectedElement(1769);
+ addExpectedElement(1770);
+ addExpectedElement(1771);
+ addExpectedElement(1772);
+ addExpectedElement(1773);
+ addExpectedElement(1774);
+ addExpectedElement(1775);
+ addExpectedElement(1776);
+ addExpectedElement(1777);
+ addExpectedElement(1778);
+ addExpectedElement(1779);
+ addExpectedElement(1780);
+ addExpectedElement(1781);
+ addExpectedElement(1782);
+ addExpectedElement(1783);
+ addExpectedElement(1784);
+ addExpectedElement(1785);
+ addExpectedElement(1786);
+ addExpectedElement(1787);
+ addExpectedElement(1788);
+ addExpectedElement(1789);
+ addExpectedElement(1790);
+ addExpectedElement(1791);
+ addExpectedElement(1792);
+ addExpectedElement(1793);
+ addExpectedElement(1794);
+ addExpectedElement(1795);
+ addExpectedElement(1796);
+ addExpectedElement(1797);
+ addExpectedElement(1798);
+ addExpectedElement(1799);
+ addExpectedElement(1800);
+ addExpectedElement(1801);
+ addExpectedElement(1802);
+ addExpectedElement(1803);
+ addExpectedElement(1804);
+ addExpectedElement(1805);
+ addExpectedElement(1806);
+ addExpectedElement(1807);
+ addExpectedElement(1808);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1809);
+ addExpectedElement(1810);
+ addExpectedElement(1811);
+ addExpectedElement(1812);
+ addExpectedElement(1813);
+ addExpectedElement(1814);
+ addExpectedElement(1815);
+ addExpectedElement(1816);
+ addExpectedElement(1817);
+ addExpectedElement(1818);
+ addExpectedElement(1819);
+ addExpectedElement(1820);
+ addExpectedElement(1821);
+ addExpectedElement(1822);
+ addExpectedElement(1823);
+ addExpectedElement(1824);
+ addExpectedElement(1825);
+ addExpectedElement(1826);
+ addExpectedElement(1827);
+ addExpectedElement(1828);
+ addExpectedElement(1829);
+ addExpectedElement(1830);
+ addExpectedElement(1831);
+ addExpectedElement(1832);
+ addExpectedElement(1833);
+ addExpectedElement(1834);
+ addExpectedElement(1835);
+ addExpectedElement(1836);
+ addExpectedElement(1837);
+ addExpectedElement(1838);
+ addExpectedElement(1839);
+ addExpectedElement(1840);
+ addExpectedElement(1841);
+ addExpectedElement(1842);
+ addExpectedElement(1843);
+ addExpectedElement(1844);
+ addExpectedElement(1845);
+ addExpectedElement(1846);
+ addExpectedElement(1847);
+ addExpectedElement(1848);
+ addExpectedElement(1849);
+ addExpectedElement(1850);
+ addExpectedElement(1851);
+ addExpectedElement(1852);
+ addExpectedElement(1853);
+ addExpectedElement(1854);
+ addExpectedElement(1855);
+ addExpectedElement(1856);
+ addExpectedElement(1857);
+ addExpectedElement(1858);
+ addExpectedElement(1859);
+ addExpectedElement(1860);
+ addExpectedElement(1861);
+ addExpectedElement(1862);
+ addExpectedElement(1863);
+ addExpectedElement(1864);
+ addExpectedElement(1865);
+ addExpectedElement(1866);
+ addExpectedElement(1867);
+ addExpectedElement(1868);
+ addExpectedElement(1869);
+ addExpectedElement(1870);
+ addExpectedElement(1871);
+ addExpectedElement(1872);
+ addExpectedElement(1873);
+ addExpectedElement(1874);
+ addExpectedElement(1875);
+ addExpectedElement(1876);
+ addExpectedElement(1877);
+ addExpectedElement(1878);
+ addExpectedElement(1879);
+ addExpectedElement(1880);
+ addExpectedElement(1881);
+ addExpectedElement(1882);
+ addExpectedElement(1883);
+ addExpectedElement(1884);
+ addExpectedElement(1885);
+ addExpectedElement(1886);
+ addExpectedElement(1887);
+ addExpectedElement(1888);
+ addExpectedElement(1889);
+ addExpectedElement(1890);
+ addExpectedElement(1891);
+ addExpectedElement(1892);
+ addExpectedElement(1893);
+ addExpectedElement(1894);
+ addExpectedElement(1895);
+ addExpectedElement(1896);
+ addExpectedElement(1897);
+ addExpectedElement(1898);
+ addExpectedElement(1899);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 14, parse_org_emftext_language_java_annotations_AnnotationInstance_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_annotations_AnnotationInstance"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_annotations_SingleAnnotationParameter"
+ // Java.g:5395:1: parse_org_emftext_language_java_annotations_SingleAnnotationParameter returns [org.emftext.language.java.annotations.SingleAnnotationParameter element = null] : a0= '(' (a1_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a1_1= parse_org_emftext_language_java_expressions_ConditionalExpression ) a2= ')' ;
+ public final org.emftext.language.java.annotations.SingleAnnotationParameter parse_org_emftext_language_java_annotations_SingleAnnotationParameter() throws RecognitionException {
+ org.emftext.language.java.annotations.SingleAnnotationParameter element = null;
+
+ int parse_org_emftext_language_java_annotations_SingleAnnotationParameter_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.arrays.ArrayInitializer a1_0 =null;
+
+ org.emftext.language.java.expressions.ConditionalExpression a1_1 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return element; }
+
+ // Java.g:5398:2: (a0= '(' (a1_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a1_1= parse_org_emftext_language_java_expressions_ConditionalExpression ) a2= ')' )
+ // Java.g:5399:2: a0= '(' (a1_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a1_1= parse_org_emftext_language_java_expressions_ConditionalExpression ) a2= ')'
+ {
+ a0=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4136); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createSingleAnnotationParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_13_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1900);
+ addExpectedElement(1901);
+ addExpectedElement(1902);
+ addExpectedElement(1903);
+ addExpectedElement(1904);
+ addExpectedElement(1905);
+ addExpectedElement(1906);
+ addExpectedElement(1907);
+ addExpectedElement(1908);
+ addExpectedElement(1909);
+ addExpectedElement(1910);
+ addExpectedElement(1911);
+ addExpectedElement(1912);
+ addExpectedElement(1913);
+ addExpectedElement(1914);
+ addExpectedElement(1915);
+ addExpectedElement(1916);
+ addExpectedElement(1917);
+ addExpectedElement(1918);
+ addExpectedElement(1919);
+ addExpectedElement(1920);
+ addExpectedElement(1921);
+ addExpectedElement(1922);
+ addExpectedElement(1923);
+ addExpectedElement(1924);
+ addExpectedElement(1925);
+ addExpectedElement(1926);
+ addExpectedElement(1927);
+ addExpectedElement(1928);
+ addExpectedElement(1929);
+ addExpectedElement(1930);
+ addExpectedElement(1931);
+ addExpectedElement(1932);
+ addExpectedElement(1933);
+ addExpectedElement(1934);
+ addExpectedElement(1935);
+ addExpectedElement(1936);
+ addExpectedElement(1937);
+ addExpectedElement(1938);
+ addExpectedElement(1939);
+ addExpectedElement(1940);
+ addExpectedElement(1941);
+ addExpectedElement(1942);
+ }
+
+ // Java.g:5455:2: (a1_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a1_1= parse_org_emftext_language_java_expressions_ConditionalExpression )
+ int alt46=2;
+ int LA46_0 = input.LA(1);
+
+ if ( (LA46_0==105) ) {
+ int LA46_1 = input.LA(2);
+
+ if ( (synpred47_Java()) ) {
+ alt46=1;
+ }
+ else if ( (true) ) {
+ alt46=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 46, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ else if ( ((LA46_0 >= BOOLEAN_LITERAL && LA46_0 <= IDENTIFIER)||(LA46_0 >= OCTAL_INTEGER_LITERAL && LA46_0 <= OCTAL_LONG_LITERAL)||LA46_0==STRING_LITERAL||LA46_0==21||LA46_0==26||(LA46_0 >= 30 && LA46_0 <= 31)||(LA46_0 >= 34 && LA46_0 <= 35)||LA46_0==43||LA46_0==48||LA46_0==58||LA46_0==60||(LA46_0 >= 63 && LA46_0 <= 64)||LA46_0==68||LA46_0==74||LA46_0==80||LA46_0==82||(LA46_0 >= 84 && LA46_0 <= 85)||LA46_0==91||LA46_0==94||LA46_0==97||LA46_0==102||LA46_0==110) ) {
+ alt46=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 46, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt46) {
+ case 1 :
+ // Java.g:5456:3: a1_0= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4154);
+ a1_0=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createSingleAnnotationParameter();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.SINGLE_ANNOTATION_PARAMETER__VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_13_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:5475:6: a1_1= parse_org_emftext_language_java_expressions_ConditionalExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4168);
+ a1_1=parse_org_emftext_language_java_expressions_ConditionalExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createSingleAnnotationParameter();
+ startIncompleteElement(element);
+ }
+ if (a1_1 != null) {
+ if (a1_1 != null) {
+ Object value = a1_1;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.SINGLE_ANNOTATION_PARAMETER__VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_13_0_0_1, a1_1, true);
+ copyLocalizationInfos(a1_1, element);
+ }
+ }
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1943);
+ }
+
+ a2=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4186); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createSingleAnnotationParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_13_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(1944);
+ addExpectedElement(1945);
+ addExpectedElement(1946);
+ addExpectedElement(1947);
+ addExpectedElement(1948);
+ addExpectedElement(1949);
+ addExpectedElement(1950);
+ addExpectedElement(1951);
+ addExpectedElement(1952);
+ addExpectedElement(1953);
+ addExpectedElement(1954);
+ addExpectedElement(1955);
+ addExpectedElement(1956);
+ addExpectedElement(1957);
+ addExpectedElement(1958);
+ addExpectedElement(1959);
+ addExpectedElement(1960);
+ addExpectedElement(1961);
+ addExpectedElement(1962);
+ addExpectedElement(1963);
+ addExpectedElement(1964);
+ addExpectedElement(1965);
+ addExpectedElement(1966);
+ addExpectedElement(1967);
+ addExpectedElement(1968);
+ addExpectedElement(1969);
+ addExpectedElement(1970);
+ addExpectedElement(1971);
+ addExpectedElement(1972);
+ addExpectedElement(1973);
+ addExpectedElement(1974);
+ addExpectedElement(1975);
+ addExpectedElement(1976);
+ addExpectedElement(1977);
+ addExpectedElement(1978);
+ addExpectedElement(1979);
+ addExpectedElement(1980);
+ addExpectedElement(1981);
+ addExpectedElement(1982);
+ addExpectedElement(1983);
+ addExpectedElement(1984);
+ addExpectedElement(1985);
+ addExpectedElement(1986);
+ addExpectedElement(1987);
+ addExpectedElement(1988);
+ addExpectedElement(1989);
+ addExpectedElement(1990);
+ addExpectedElement(1991);
+ addExpectedElement(1992);
+ addExpectedElement(1993);
+ addExpectedElement(1994);
+ addExpectedElement(1995);
+ addExpectedElement(1996);
+ addExpectedElement(1997);
+ addExpectedElement(1998);
+ addExpectedElement(1999);
+ addExpectedElement(2000);
+ addExpectedElement(2001);
+ addExpectedElement(2002);
+ addExpectedElement(2003);
+ addExpectedElement(2004);
+ addExpectedElement(2005);
+ addExpectedElement(2006);
+ addExpectedElement(2007);
+ addExpectedElement(2008);
+ addExpectedElement(2009);
+ addExpectedElement(2010);
+ addExpectedElement(2011);
+ addExpectedElement(2012);
+ addExpectedElement(2013);
+ addExpectedElement(2014);
+ addExpectedElement(2015);
+ addExpectedElement(2016);
+ addExpectedElement(2017);
+ addExpectedElement(2018);
+ addExpectedElement(2019);
+ addExpectedElement(2020);
+ addExpectedElement(2021);
+ addExpectedElement(2022);
+ addExpectedElement(2023);
+ addExpectedElement(2024);
+ addExpectedElement(2025);
+ addExpectedElement(2026);
+ addExpectedElement(2027);
+ addExpectedElement(2028);
+ addExpectedElement(2029);
+ addExpectedElement(2030);
+ addExpectedElement(2031);
+ addExpectedElement(2032);
+ addExpectedElement(2033);
+ addExpectedElement(2034);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 15, parse_org_emftext_language_java_annotations_SingleAnnotationParameter_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_annotations_SingleAnnotationParameter"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_annotations_AnnotationParameterList"
+ // Java.g:5606:1: parse_org_emftext_language_java_annotations_AnnotationParameterList returns [org.emftext.language.java.annotations.AnnotationParameterList element = null] : a0= '(' ( ( (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )* ) )? a4= ')' ;
+ public final org.emftext.language.java.annotations.AnnotationParameterList parse_org_emftext_language_java_annotations_AnnotationParameterList() throws RecognitionException {
+ org.emftext.language.java.annotations.AnnotationParameterList element = null;
+
+ int parse_org_emftext_language_java_annotations_AnnotationParameterList_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a4=null;
+ org.emftext.language.java.annotations.AnnotationAttributeSetting a1_0 =null;
+
+ org.emftext.language.java.annotations.AnnotationAttributeSetting a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return element; }
+
+ // Java.g:5609:2: (a0= '(' ( ( (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )* ) )? a4= ')' )
+ // Java.g:5610:2: a0= '(' ( ( (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )* ) )? a4= ')'
+ {
+ a0=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4215); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationParameterList();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_14_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2035);
+ addExpectedElement(2036);
+ }
+
+ // Java.g:5625:2: ( ( (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )* ) )?
+ int alt48=2;
+ int LA48_0 = input.LA(1);
+
+ if ( (LA48_0==IDENTIFIER) ) {
+ alt48=1;
+ }
+ switch (alt48) {
+ case 1 :
+ // Java.g:5626:3: ( (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )* )
+ {
+ // Java.g:5626:3: ( (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )* )
+ // Java.g:5627:4: (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )*
+ {
+ // Java.g:5627:4: (a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting )
+ // Java.g:5628:5: a1_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4244);
+ a1_0=parse_org_emftext_language_java_annotations_AnnotationAttributeSetting();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationParameterList();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_PARAMETER_LIST__SETTINGS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_14_0_0_1_0_0_0, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2037);
+ addExpectedElement(2038);
+ }
+
+ // Java.g:5654:4: ( (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) ) )*
+ loop47:
+ do {
+ int alt47=2;
+ int LA47_0 = input.LA(1);
+
+ if ( (LA47_0==33) ) {
+ alt47=1;
+ }
+
+
+ switch (alt47) {
+ case 1 :
+ // Java.g:5655:5: (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) )
+ {
+ // Java.g:5655:5: (a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting ) )
+ // Java.g:5656:6: a2= ',' (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting )
+ {
+ a2=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4285); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationParameterList();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_14_0_0_1_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2039);
+ }
+
+ // Java.g:5670:6: (a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting )
+ // Java.g:5671:7: a3_0= parse_org_emftext_language_java_annotations_AnnotationAttributeSetting
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4319);
+ a3_0=parse_org_emftext_language_java_annotations_AnnotationAttributeSetting();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationParameterList();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_PARAMETER_LIST__SETTINGS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_14_0_0_1_0_0_1_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2040);
+ addExpectedElement(2041);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop47;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2042);
+ addExpectedElement(2043);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2044);
+ }
+
+ a4=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4393); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationParameterList();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_14_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2045);
+ addExpectedElement(2046);
+ addExpectedElement(2047);
+ addExpectedElement(2048);
+ addExpectedElement(2049);
+ addExpectedElement(2050);
+ addExpectedElement(2051);
+ addExpectedElement(2052);
+ addExpectedElement(2053);
+ addExpectedElement(2054);
+ addExpectedElement(2055);
+ addExpectedElement(2056);
+ addExpectedElement(2057);
+ addExpectedElement(2058);
+ addExpectedElement(2059);
+ addExpectedElement(2060);
+ addExpectedElement(2061);
+ addExpectedElement(2062);
+ addExpectedElement(2063);
+ addExpectedElement(2064);
+ addExpectedElement(2065);
+ addExpectedElement(2066);
+ addExpectedElement(2067);
+ addExpectedElement(2068);
+ addExpectedElement(2069);
+ addExpectedElement(2070);
+ addExpectedElement(2071);
+ addExpectedElement(2072);
+ addExpectedElement(2073);
+ addExpectedElement(2074);
+ addExpectedElement(2075);
+ addExpectedElement(2076);
+ addExpectedElement(2077);
+ addExpectedElement(2078);
+ addExpectedElement(2079);
+ addExpectedElement(2080);
+ addExpectedElement(2081);
+ addExpectedElement(2082);
+ addExpectedElement(2083);
+ addExpectedElement(2084);
+ addExpectedElement(2085);
+ addExpectedElement(2086);
+ addExpectedElement(2087);
+ addExpectedElement(2088);
+ addExpectedElement(2089);
+ addExpectedElement(2090);
+ addExpectedElement(2091);
+ addExpectedElement(2092);
+ addExpectedElement(2093);
+ addExpectedElement(2094);
+ addExpectedElement(2095);
+ addExpectedElement(2096);
+ addExpectedElement(2097);
+ addExpectedElement(2098);
+ addExpectedElement(2099);
+ addExpectedElement(2100);
+ addExpectedElement(2101);
+ addExpectedElement(2102);
+ addExpectedElement(2103);
+ addExpectedElement(2104);
+ addExpectedElement(2105);
+ addExpectedElement(2106);
+ addExpectedElement(2107);
+ addExpectedElement(2108);
+ addExpectedElement(2109);
+ addExpectedElement(2110);
+ addExpectedElement(2111);
+ addExpectedElement(2112);
+ addExpectedElement(2113);
+ addExpectedElement(2114);
+ addExpectedElement(2115);
+ addExpectedElement(2116);
+ addExpectedElement(2117);
+ addExpectedElement(2118);
+ addExpectedElement(2119);
+ addExpectedElement(2120);
+ addExpectedElement(2121);
+ addExpectedElement(2122);
+ addExpectedElement(2123);
+ addExpectedElement(2124);
+ addExpectedElement(2125);
+ addExpectedElement(2126);
+ addExpectedElement(2127);
+ addExpectedElement(2128);
+ addExpectedElement(2129);
+ addExpectedElement(2130);
+ addExpectedElement(2131);
+ addExpectedElement(2132);
+ addExpectedElement(2133);
+ addExpectedElement(2134);
+ addExpectedElement(2135);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 16, parse_org_emftext_language_java_annotations_AnnotationParameterList_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_annotations_AnnotationParameterList"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_annotations_AnnotationAttributeSetting"
+ // Java.g:5818:1: parse_org_emftext_language_java_annotations_AnnotationAttributeSetting returns [org.emftext.language.java.annotations.AnnotationAttributeSetting element = null] : (a0= IDENTIFIER ) a1= '=' (a2_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a2_1= parse_org_emftext_language_java_expressions_ConditionalExpression ) ;
+ private JavaContextDependentURIFragmentFactory annotationAttributeSettingURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getAnnotationAttributeSettingAttributeReferenceResolver());
+ public final org.emftext.language.java.annotations.AnnotationAttributeSetting parse_org_emftext_language_java_annotations_AnnotationAttributeSetting() throws RecognitionException {
+ org.emftext.language.java.annotations.AnnotationAttributeSetting element = null;
+
+ int parse_org_emftext_language_java_annotations_AnnotationAttributeSetting_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ org.emftext.language.java.arrays.ArrayInitializer a2_0 =null;
+
+ org.emftext.language.java.expressions.ConditionalExpression a2_1 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return element; }
+
+ // Java.g:5821:2: ( (a0= IDENTIFIER ) a1= '=' (a2_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a2_1= parse_org_emftext_language_java_expressions_ConditionalExpression ) )
+ // Java.g:5822:2: (a0= IDENTIFIER ) a1= '=' (a2_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a2_1= parse_org_emftext_language_java_expressions_ConditionalExpression )
+ {
+ // Java.g:5822:2: (a0= IDENTIFIER )
+ // Java.g:5823:3: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4426); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttributeSetting();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.members.InterfaceMethod proxy = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ collectHiddenTokens(element);
+ registerContextDependentProxy(annotationAttributeSettingURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_15_0_0_0, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2136);
+ }
+
+ a1=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4447); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttributeSetting();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_15_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2137);
+ addExpectedElement(2138);
+ addExpectedElement(2139);
+ addExpectedElement(2140);
+ addExpectedElement(2141);
+ addExpectedElement(2142);
+ addExpectedElement(2143);
+ addExpectedElement(2144);
+ addExpectedElement(2145);
+ addExpectedElement(2146);
+ addExpectedElement(2147);
+ addExpectedElement(2148);
+ addExpectedElement(2149);
+ addExpectedElement(2150);
+ addExpectedElement(2151);
+ addExpectedElement(2152);
+ addExpectedElement(2153);
+ addExpectedElement(2154);
+ addExpectedElement(2155);
+ addExpectedElement(2156);
+ addExpectedElement(2157);
+ addExpectedElement(2158);
+ addExpectedElement(2159);
+ addExpectedElement(2160);
+ addExpectedElement(2161);
+ addExpectedElement(2162);
+ addExpectedElement(2163);
+ addExpectedElement(2164);
+ addExpectedElement(2165);
+ addExpectedElement(2166);
+ addExpectedElement(2167);
+ addExpectedElement(2168);
+ addExpectedElement(2169);
+ addExpectedElement(2170);
+ addExpectedElement(2171);
+ addExpectedElement(2172);
+ addExpectedElement(2173);
+ addExpectedElement(2174);
+ addExpectedElement(2175);
+ addExpectedElement(2176);
+ addExpectedElement(2177);
+ addExpectedElement(2178);
+ addExpectedElement(2179);
+ }
+
+ // Java.g:5918:2: (a2_0= parse_org_emftext_language_java_arrays_ArrayInitializer |a2_1= parse_org_emftext_language_java_expressions_ConditionalExpression )
+ int alt49=2;
+ int LA49_0 = input.LA(1);
+
+ if ( (LA49_0==105) ) {
+ int LA49_1 = input.LA(2);
+
+ if ( (synpred50_Java()) ) {
+ alt49=1;
+ }
+ else if ( (true) ) {
+ alt49=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 49, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ else if ( ((LA49_0 >= BOOLEAN_LITERAL && LA49_0 <= IDENTIFIER)||(LA49_0 >= OCTAL_INTEGER_LITERAL && LA49_0 <= OCTAL_LONG_LITERAL)||LA49_0==STRING_LITERAL||LA49_0==21||LA49_0==26||(LA49_0 >= 30 && LA49_0 <= 31)||(LA49_0 >= 34 && LA49_0 <= 35)||LA49_0==43||LA49_0==48||LA49_0==58||LA49_0==60||(LA49_0 >= 63 && LA49_0 <= 64)||LA49_0==68||LA49_0==74||LA49_0==80||LA49_0==82||(LA49_0 >= 84 && LA49_0 <= 85)||LA49_0==91||LA49_0==94||LA49_0==97||LA49_0==102||LA49_0==110) ) {
+ alt49=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 49, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt49) {
+ case 1 :
+ // Java.g:5919:3: a2_0= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4465);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttributeSetting();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE_SETTING__VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_15_0_0_4, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:5938:6: a2_1= parse_org_emftext_language_java_expressions_ConditionalExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4479);
+ a2_1=parse_org_emftext_language_java_expressions_ConditionalExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttributeSetting();
+ startIncompleteElement(element);
+ }
+ if (a2_1 != null) {
+ if (a2_1 != null) {
+ Object value = a2_1;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE_SETTING__VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_15_0_0_4, a2_1, true);
+ copyLocalizationInfos(a2_1, element);
+ }
+ }
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2180);
+ addExpectedElement(2181);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 17, parse_org_emftext_language_java_annotations_AnnotationAttributeSetting_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_annotations_AnnotationAttributeSetting"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_generics_TypeParameter"
+ // Java.g:5966:1: parse_org_emftext_language_java_generics_TypeParameter returns [org.emftext.language.java.generics.TypeParameter element = null] : (a0= IDENTIFIER ) ( (a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )? ;
+ public final org.emftext.language.java.generics.TypeParameter parse_org_emftext_language_java_generics_TypeParameter() throws RecognitionException {
+ org.emftext.language.java.generics.TypeParameter element = null;
+
+ int parse_org_emftext_language_java_generics_TypeParameter_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ org.emftext.language.java.types.TypeReference a2_0 =null;
+
+ org.emftext.language.java.types.TypeReference a4_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return element; }
+
+ // Java.g:5969:2: ( (a0= IDENTIFIER ) ( (a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )? )
+ // Java.g:5970:2: (a0= IDENTIFIER ) ( (a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )?
+ {
+ // Java.g:5970:2: (a0= IDENTIFIER )
+ // Java.g:5971:3: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_generics_TypeParameter4516); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createTypeParameter();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.TYPE_PARAMETER__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.TYPE_PARAMETER__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_16_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2182);
+ addExpectedElement(2183);
+ addExpectedElement(2184);
+ addExpectedElement(2185);
+ addExpectedElement(2186);
+ addExpectedElement(2187);
+ addExpectedElement(2188);
+ addExpectedElement(2189);
+ addExpectedElement(2190);
+ addExpectedElement(2191);
+ addExpectedElement(2192);
+ addExpectedElement(2193);
+ addExpectedElement(2194);
+ }
+
+ // Java.g:6018:2: ( (a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ) )?
+ int alt51=2;
+ int LA51_0 = input.LA(1);
+
+ if ( (LA51_0==71) ) {
+ alt51=1;
+ }
+ switch (alt51) {
+ case 1 :
+ // Java.g:6019:3: (a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ {
+ // Java.g:6019:3: (a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* )
+ // Java.g:6020:4: a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ {
+ a1=(Token)match(input,71,FOLLOW_71_in_parse_org_emftext_language_java_generics_TypeParameter4546); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createTypeParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_16_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2195);
+ addExpectedElement(2196);
+ addExpectedElement(2197);
+ addExpectedElement(2198);
+ addExpectedElement(2199);
+ addExpectedElement(2200);
+ addExpectedElement(2201);
+ addExpectedElement(2202);
+ addExpectedElement(2203);
+ addExpectedElement(2204);
+ addExpectedElement(2205);
+ }
+
+ // Java.g:6044:4: (a2_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:6045:5: a2_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_TypeParameter4572);
+ a2_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createTypeParameter();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.generics.GenericsPackage.TYPE_PARAMETER__EXTEND_TYPES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_16_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2206);
+ addExpectedElement(2207);
+ addExpectedElement(2208);
+ addExpectedElement(2209);
+ addExpectedElement(2210);
+ addExpectedElement(2211);
+ addExpectedElement(2212);
+ addExpectedElement(2213);
+ addExpectedElement(2214);
+ addExpectedElement(2215);
+ addExpectedElement(2216);
+ addExpectedElement(2217);
+ addExpectedElement(2218);
+ }
+
+ // Java.g:6082:4: ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ loop50:
+ do {
+ int alt50=2;
+ int LA50_0 = input.LA(1);
+
+ if ( (LA50_0==24) ) {
+ alt50=1;
+ }
+
+
+ switch (alt50) {
+ case 1 :
+ // Java.g:6083:5: (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) )
+ {
+ // Java.g:6083:5: (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) )
+ // Java.g:6084:6: a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference )
+ {
+ a3=(Token)match(input,24,FOLLOW_24_in_parse_org_emftext_language_java_generics_TypeParameter4613); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createTypeParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_16_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2219);
+ addExpectedElement(2220);
+ addExpectedElement(2221);
+ addExpectedElement(2222);
+ addExpectedElement(2223);
+ addExpectedElement(2224);
+ addExpectedElement(2225);
+ addExpectedElement(2226);
+ addExpectedElement(2227);
+ addExpectedElement(2228);
+ addExpectedElement(2229);
+ }
+
+ // Java.g:6108:6: (a4_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:6109:7: a4_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_TypeParameter4647);
+ a4_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createTypeParameter();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.generics.GenericsPackage.TYPE_PARAMETER__EXTEND_TYPES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_16_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2230);
+ addExpectedElement(2231);
+ addExpectedElement(2232);
+ addExpectedElement(2233);
+ addExpectedElement(2234);
+ addExpectedElement(2235);
+ addExpectedElement(2236);
+ addExpectedElement(2237);
+ addExpectedElement(2238);
+ addExpectedElement(2239);
+ addExpectedElement(2240);
+ addExpectedElement(2241);
+ addExpectedElement(2242);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop50;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2243);
+ addExpectedElement(2244);
+ addExpectedElement(2245);
+ addExpectedElement(2246);
+ addExpectedElement(2247);
+ addExpectedElement(2248);
+ addExpectedElement(2249);
+ addExpectedElement(2250);
+ addExpectedElement(2251);
+ addExpectedElement(2252);
+ addExpectedElement(2253);
+ addExpectedElement(2254);
+ addExpectedElement(2255);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2256);
+ addExpectedElement(2257);
+ addExpectedElement(2258);
+ addExpectedElement(2259);
+ addExpectedElement(2260);
+ addExpectedElement(2261);
+ addExpectedElement(2262);
+ addExpectedElement(2263);
+ addExpectedElement(2264);
+ addExpectedElement(2265);
+ addExpectedElement(2266);
+ addExpectedElement(2267);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 18, parse_org_emftext_language_java_generics_TypeParameter_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_generics_TypeParameter"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_EnumConstant"
+ // Java.g:6185:1: parse_org_emftext_language_java_members_EnumConstant returns [org.emftext.language.java.members.EnumConstant element = null] : ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )* (a1= IDENTIFIER ) ( (a2= '(' ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a6= ')' ) )? ( ( (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) ) )? ;
+ public final org.emftext.language.java.members.EnumConstant parse_org_emftext_language_java_members_EnumConstant() throws RecognitionException {
+ org.emftext.language.java.members.EnumConstant element = null;
+
+ int parse_org_emftext_language_java_members_EnumConstant_StartIndex = input.index();
+
+ Token a1=null;
+ Token a2=null;
+ Token a4=null;
+ Token a6=null;
+ org.emftext.language.java.annotations.AnnotationInstance a0_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a3_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a5_0 =null;
+
+ org.emftext.language.java.classifiers.AnonymousClass a7_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return element; }
+
+ // Java.g:6188:2: ( ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )* (a1= IDENTIFIER ) ( (a2= '(' ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a6= ')' ) )? ( ( (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) ) )? )
+ // Java.g:6189:2: ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )* (a1= IDENTIFIER ) ( (a2= '(' ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a6= ')' ) )? ( ( (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) ) )?
+ {
+ // Java.g:6189:2: ( (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance ) )*
+ loop52:
+ do {
+ int alt52=2;
+ int LA52_0 = input.LA(1);
+
+ if ( (LA52_0==48) ) {
+ alt52=1;
+ }
+
+
+ switch (alt52) {
+ case 1 :
+ // Java.g:6190:3: (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance )
+ {
+ // Java.g:6190:3: (a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance )
+ // Java.g:6191:4: a0_0= parse_org_emftext_language_java_annotations_AnnotationInstance
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_members_EnumConstant4745);
+ a0_0=parse_org_emftext_language_java_annotations_AnnotationInstance();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ANNOTATIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop52;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2268);
+ addExpectedElement(2269);
+ }
+
+ // Java.g:6218:2: (a1= IDENTIFIER )
+ // Java.g:6219:3: a1= IDENTIFIER
+ {
+ a1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_EnumConstant4775); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ if (a1 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_1, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2270);
+ addExpectedElement(2271);
+ addExpectedElement(2272);
+ addExpectedElement(2273);
+ addExpectedElement(2274);
+ addExpectedElement(2275);
+ }
+
+ // Java.g:6259:2: ( (a2= '(' ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a6= ')' ) )?
+ int alt55=2;
+ int LA55_0 = input.LA(1);
+
+ if ( (LA55_0==26) ) {
+ alt55=1;
+ }
+ switch (alt55) {
+ case 1 :
+ // Java.g:6260:3: (a2= '(' ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a6= ')' )
+ {
+ // Java.g:6260:3: (a2= '(' ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a6= ')' )
+ // Java.g:6261:4: a2= '(' ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a6= ')'
+ {
+ a2=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_members_EnumConstant4805); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_2_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2276);
+ addExpectedElement(2277);
+ addExpectedElement(2278);
+ addExpectedElement(2279);
+ addExpectedElement(2280);
+ addExpectedElement(2281);
+ addExpectedElement(2282);
+ addExpectedElement(2283);
+ addExpectedElement(2284);
+ addExpectedElement(2285);
+ addExpectedElement(2286);
+ addExpectedElement(2287);
+ addExpectedElement(2288);
+ addExpectedElement(2289);
+ addExpectedElement(2290);
+ addExpectedElement(2291);
+ addExpectedElement(2292);
+ addExpectedElement(2293);
+ addExpectedElement(2294);
+ addExpectedElement(2295);
+ addExpectedElement(2296);
+ addExpectedElement(2297);
+ addExpectedElement(2298);
+ addExpectedElement(2299);
+ addExpectedElement(2300);
+ addExpectedElement(2301);
+ addExpectedElement(2302);
+ addExpectedElement(2303);
+ addExpectedElement(2304);
+ addExpectedElement(2305);
+ addExpectedElement(2306);
+ addExpectedElement(2307);
+ addExpectedElement(2308);
+ addExpectedElement(2309);
+ addExpectedElement(2310);
+ addExpectedElement(2311);
+ addExpectedElement(2312);
+ addExpectedElement(2313);
+ addExpectedElement(2314);
+ addExpectedElement(2315);
+ addExpectedElement(2316);
+ addExpectedElement(2317);
+ addExpectedElement(2318);
+ addExpectedElement(2319);
+ }
+
+ // Java.g:6318:4: ( ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )?
+ int alt54=2;
+ int LA54_0 = input.LA(1);
+
+ if ( ((LA54_0 >= BOOLEAN_LITERAL && LA54_0 <= IDENTIFIER)||(LA54_0 >= OCTAL_INTEGER_LITERAL && LA54_0 <= OCTAL_LONG_LITERAL)||LA54_0==STRING_LITERAL||LA54_0==21||LA54_0==26||(LA54_0 >= 30 && LA54_0 <= 31)||(LA54_0 >= 34 && LA54_0 <= 35)||LA54_0==43||LA54_0==48||LA54_0==58||LA54_0==60||(LA54_0 >= 63 && LA54_0 <= 64)||LA54_0==68||LA54_0==74||LA54_0==80||LA54_0==82||(LA54_0 >= 84 && LA54_0 <= 85)||LA54_0==91||LA54_0==94||LA54_0==97||LA54_0==102||LA54_0==105||LA54_0==110) ) {
+ alt54=1;
+ }
+ switch (alt54) {
+ case 1 :
+ // Java.g:6319:5: ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ {
+ // Java.g:6319:5: ( (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ // Java.g:6320:6: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ {
+ // Java.g:6320:6: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:6321:7: a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_EnumConstant4846);
+ a3_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_2_0_0_2_0_0_0, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2320);
+ addExpectedElement(2321);
+ }
+
+ // Java.g:6347:6: ( (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ loop53:
+ do {
+ int alt53=2;
+ int LA53_0 = input.LA(1);
+
+ if ( (LA53_0==33) ) {
+ alt53=1;
+ }
+
+
+ switch (alt53) {
+ case 1 :
+ // Java.g:6348:7: (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:6348:7: (a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:6349:8: a4= ',' (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a4=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_EnumConstant4901); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_2_0_0_2_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2322);
+ addExpectedElement(2323);
+ addExpectedElement(2324);
+ addExpectedElement(2325);
+ addExpectedElement(2326);
+ addExpectedElement(2327);
+ addExpectedElement(2328);
+ addExpectedElement(2329);
+ addExpectedElement(2330);
+ addExpectedElement(2331);
+ addExpectedElement(2332);
+ addExpectedElement(2333);
+ addExpectedElement(2334);
+ addExpectedElement(2335);
+ addExpectedElement(2336);
+ addExpectedElement(2337);
+ addExpectedElement(2338);
+ addExpectedElement(2339);
+ addExpectedElement(2340);
+ addExpectedElement(2341);
+ addExpectedElement(2342);
+ addExpectedElement(2343);
+ addExpectedElement(2344);
+ addExpectedElement(2345);
+ addExpectedElement(2346);
+ addExpectedElement(2347);
+ addExpectedElement(2348);
+ addExpectedElement(2349);
+ addExpectedElement(2350);
+ addExpectedElement(2351);
+ addExpectedElement(2352);
+ addExpectedElement(2353);
+ addExpectedElement(2354);
+ addExpectedElement(2355);
+ addExpectedElement(2356);
+ addExpectedElement(2357);
+ addExpectedElement(2358);
+ addExpectedElement(2359);
+ addExpectedElement(2360);
+ addExpectedElement(2361);
+ addExpectedElement(2362);
+ addExpectedElement(2363);
+ addExpectedElement(2364);
+ }
+
+ // Java.g:6405:8: (a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:6406:9: a5_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_EnumConstant4943);
+ a5_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_2_0_0_2_0_0_1_0_0_1, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2365);
+ addExpectedElement(2366);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop53;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2367);
+ addExpectedElement(2368);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2369);
+ }
+
+ a6=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_members_EnumConstant5047); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_2_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2370);
+ addExpectedElement(2371);
+ addExpectedElement(2372);
+ addExpectedElement(2373);
+ addExpectedElement(2374);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2375);
+ addExpectedElement(2376);
+ addExpectedElement(2377);
+ addExpectedElement(2378);
+ addExpectedElement(2379);
+ }
+
+ // Java.g:6476:2: ( ( (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) ) )?
+ int alt56=2;
+ int LA56_0 = input.LA(1);
+
+ if ( (LA56_0==105) ) {
+ alt56=1;
+ }
+ switch (alt56) {
+ case 1 :
+ // Java.g:6477:3: ( (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) )
+ {
+ // Java.g:6477:3: ( (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) )
+ // Java.g:6478:4: (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass )
+ {
+ // Java.g:6478:4: (a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass )
+ // Java.g:6479:5: a7_0= parse_org_emftext_language_java_classifiers_AnonymousClass
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_AnonymousClass_in_parse_org_emftext_language_java_members_EnumConstant5095);
+ a7_0=parse_org_emftext_language_java_classifiers_AnonymousClass();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEnumConstant();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ENUM_CONSTANT__ANONYMOUS_CLASS), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_17_0_0_3_0_0_0, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2380);
+ addExpectedElement(2381);
+ addExpectedElement(2382);
+ addExpectedElement(2383);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2384);
+ addExpectedElement(2385);
+ addExpectedElement(2386);
+ addExpectedElement(2387);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 19, parse_org_emftext_language_java_members_EnumConstant_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_EnumConstant"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Block"
+ // Java.g:6519:1: parse_org_emftext_language_java_statements_Block returns [org.emftext.language.java.statements.Block element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_Modifier ) )* a1= '{' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* a3= '}' ;
+ public final org.emftext.language.java.statements.Block parse_org_emftext_language_java_statements_Block() throws RecognitionException {
+ org.emftext.language.java.statements.Block element = null;
+
+ int parse_org_emftext_language_java_statements_Block_StartIndex = input.index();
+
+ Token a1=null;
+ Token a3=null;
+ org.emftext.language.java.modifiers.Modifier a0_0 =null;
+
+ org.emftext.language.java.statements.Statement a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return element; }
+
+ // Java.g:6522:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_Modifier ) )* a1= '{' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* a3= '}' )
+ // Java.g:6523:2: ( (a0_0= parse_org_emftext_language_java_modifiers_Modifier ) )* a1= '{' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* a3= '}'
+ {
+ // Java.g:6523:2: ( (a0_0= parse_org_emftext_language_java_modifiers_Modifier ) )*
+ loop57:
+ do {
+ int alt57=2;
+ int LA57_0 = input.LA(1);
+
+ if ( (LA57_0==56||LA57_0==72||LA57_0==83||(LA57_0 >= 87 && LA57_0 <= 89)||(LA57_0 >= 92 && LA57_0 <= 93)||LA57_0==96||LA57_0==100||LA57_0==103) ) {
+ alt57=1;
+ }
+
+
+ switch (alt57) {
+ case 1 :
+ // Java.g:6524:3: (a0_0= parse_org_emftext_language_java_modifiers_Modifier )
+ {
+ // Java.g:6524:3: (a0_0= parse_org_emftext_language_java_modifiers_Modifier )
+ // Java.g:6525:4: a0_0= parse_org_emftext_language_java_modifiers_Modifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Modifier_in_parse_org_emftext_language_java_statements_Block5160);
+ a0_0=parse_org_emftext_language_java_modifiers_Modifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createBlock();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.BLOCK__MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_18_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop57;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2388);
+ addExpectedElement(2389);
+ addExpectedElement(2390);
+ addExpectedElement(2391);
+ addExpectedElement(2392);
+ addExpectedElement(2393);
+ addExpectedElement(2394);
+ addExpectedElement(2395);
+ addExpectedElement(2396);
+ addExpectedElement(2397);
+ addExpectedElement(2398);
+ addExpectedElement(2399);
+ }
+
+ a1=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_statements_Block5186); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_18_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2400);
+ addExpectedElement(2401);
+ addExpectedElement(2402);
+ addExpectedElement(2403);
+ addExpectedElement(2404);
+ addExpectedElement(2405);
+ addExpectedElement(2406);
+ addExpectedElement(2407);
+ addExpectedElement(2408);
+ addExpectedElement(2409);
+ addExpectedElement(2410);
+ addExpectedElement(2411);
+ addExpectedElement(2412);
+ addExpectedElement(2413);
+ addExpectedElement(2414);
+ addExpectedElement(2415);
+ addExpectedElement(2416);
+ addExpectedElement(2417);
+ addExpectedElement(2418);
+ addExpectedElement(2419);
+ addExpectedElement(2420);
+ addExpectedElement(2421);
+ addExpectedElement(2422);
+ addExpectedElement(2423);
+ addExpectedElement(2424);
+ addExpectedElement(2425);
+ addExpectedElement(2426);
+ addExpectedElement(2427);
+ addExpectedElement(2428);
+ addExpectedElement(2429);
+ addExpectedElement(2430);
+ addExpectedElement(2431);
+ addExpectedElement(2432);
+ addExpectedElement(2433);
+ addExpectedElement(2434);
+ addExpectedElement(2435);
+ addExpectedElement(2436);
+ addExpectedElement(2437);
+ addExpectedElement(2438);
+ addExpectedElement(2439);
+ addExpectedElement(2440);
+ addExpectedElement(2441);
+ addExpectedElement(2442);
+ addExpectedElement(2443);
+ addExpectedElement(2444);
+ addExpectedElement(2445);
+ addExpectedElement(2446);
+ addExpectedElement(2447);
+ addExpectedElement(2448);
+ addExpectedElement(2449);
+ addExpectedElement(2450);
+ addExpectedElement(2451);
+ addExpectedElement(2452);
+ addExpectedElement(2453);
+ addExpectedElement(2454);
+ addExpectedElement(2455);
+ addExpectedElement(2456);
+ addExpectedElement(2457);
+ addExpectedElement(2458);
+ addExpectedElement(2459);
+ addExpectedElement(2460);
+ addExpectedElement(2461);
+ addExpectedElement(2462);
+ addExpectedElement(2463);
+ addExpectedElement(2464);
+ addExpectedElement(2465);
+ addExpectedElement(2466);
+ addExpectedElement(2467);
+ addExpectedElement(2468);
+ addExpectedElement(2469);
+ addExpectedElement(2470);
+ addExpectedElement(2471);
+ addExpectedElement(2472);
+ addExpectedElement(2473);
+ addExpectedElement(2474);
+ addExpectedElement(2475);
+ addExpectedElement(2476);
+ }
+
+ // Java.g:6652:2: ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop58:
+ do {
+ int alt58=2;
+ int LA58_0 = input.LA(1);
+
+ if ( ((LA58_0 >= BOOLEAN_LITERAL && LA58_0 <= IDENTIFIER)||(LA58_0 >= OCTAL_INTEGER_LITERAL && LA58_0 <= OCTAL_LONG_LITERAL)||LA58_0==STRING_LITERAL||LA58_0==21||LA58_0==26||(LA58_0 >= 30 && LA58_0 <= 31)||(LA58_0 >= 34 && LA58_0 <= 35)||(LA58_0 >= 42 && LA58_0 <= 43)||LA58_0==48||(LA58_0 >= 56 && LA58_0 <= 60)||(LA58_0 >= 63 && LA58_0 <= 65)||(LA58_0 >= 67 && LA58_0 <= 68)||LA58_0==70||LA58_0==72||(LA58_0 >= 74 && LA58_0 <= 76)||(LA58_0 >= 80 && LA58_0 <= 85)||(LA58_0 >= 87 && LA58_0 <= 98)||(LA58_0 >= 100 && LA58_0 <= 105)||LA58_0==110) ) {
+ alt58=1;
+ }
+
+
+ switch (alt58) {
+ case 1 :
+ // Java.g:6653:3: ( (a2_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:6653:3: ( (a2_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:6654:4: (a2_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:6654:4: (a2_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:6655:5: a2_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_Block5215);
+ a2_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createBlock();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.BLOCK__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_18_0_0_3_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2477);
+ addExpectedElement(2478);
+ addExpectedElement(2479);
+ addExpectedElement(2480);
+ addExpectedElement(2481);
+ addExpectedElement(2482);
+ addExpectedElement(2483);
+ addExpectedElement(2484);
+ addExpectedElement(2485);
+ addExpectedElement(2486);
+ addExpectedElement(2487);
+ addExpectedElement(2488);
+ addExpectedElement(2489);
+ addExpectedElement(2490);
+ addExpectedElement(2491);
+ addExpectedElement(2492);
+ addExpectedElement(2493);
+ addExpectedElement(2494);
+ addExpectedElement(2495);
+ addExpectedElement(2496);
+ addExpectedElement(2497);
+ addExpectedElement(2498);
+ addExpectedElement(2499);
+ addExpectedElement(2500);
+ addExpectedElement(2501);
+ addExpectedElement(2502);
+ addExpectedElement(2503);
+ addExpectedElement(2504);
+ addExpectedElement(2505);
+ addExpectedElement(2506);
+ addExpectedElement(2507);
+ addExpectedElement(2508);
+ addExpectedElement(2509);
+ addExpectedElement(2510);
+ addExpectedElement(2511);
+ addExpectedElement(2512);
+ addExpectedElement(2513);
+ addExpectedElement(2514);
+ addExpectedElement(2515);
+ addExpectedElement(2516);
+ addExpectedElement(2517);
+ addExpectedElement(2518);
+ addExpectedElement(2519);
+ addExpectedElement(2520);
+ addExpectedElement(2521);
+ addExpectedElement(2522);
+ addExpectedElement(2523);
+ addExpectedElement(2524);
+ addExpectedElement(2525);
+ addExpectedElement(2526);
+ addExpectedElement(2527);
+ addExpectedElement(2528);
+ addExpectedElement(2529);
+ addExpectedElement(2530);
+ addExpectedElement(2531);
+ addExpectedElement(2532);
+ addExpectedElement(2533);
+ addExpectedElement(2534);
+ addExpectedElement(2535);
+ addExpectedElement(2536);
+ addExpectedElement(2537);
+ addExpectedElement(2538);
+ addExpectedElement(2539);
+ addExpectedElement(2540);
+ addExpectedElement(2541);
+ addExpectedElement(2542);
+ addExpectedElement(2543);
+ addExpectedElement(2544);
+ addExpectedElement(2545);
+ addExpectedElement(2546);
+ addExpectedElement(2547);
+ addExpectedElement(2548);
+ addExpectedElement(2549);
+ addExpectedElement(2550);
+ addExpectedElement(2551);
+ addExpectedElement(2552);
+ addExpectedElement(2553);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop58;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2554);
+ addExpectedElement(2555);
+ addExpectedElement(2556);
+ addExpectedElement(2557);
+ addExpectedElement(2558);
+ addExpectedElement(2559);
+ addExpectedElement(2560);
+ addExpectedElement(2561);
+ addExpectedElement(2562);
+ addExpectedElement(2563);
+ addExpectedElement(2564);
+ addExpectedElement(2565);
+ addExpectedElement(2566);
+ addExpectedElement(2567);
+ addExpectedElement(2568);
+ addExpectedElement(2569);
+ addExpectedElement(2570);
+ addExpectedElement(2571);
+ addExpectedElement(2572);
+ addExpectedElement(2573);
+ addExpectedElement(2574);
+ addExpectedElement(2575);
+ addExpectedElement(2576);
+ addExpectedElement(2577);
+ addExpectedElement(2578);
+ addExpectedElement(2579);
+ addExpectedElement(2580);
+ addExpectedElement(2581);
+ addExpectedElement(2582);
+ addExpectedElement(2583);
+ addExpectedElement(2584);
+ addExpectedElement(2585);
+ addExpectedElement(2586);
+ addExpectedElement(2587);
+ addExpectedElement(2588);
+ addExpectedElement(2589);
+ addExpectedElement(2590);
+ addExpectedElement(2591);
+ addExpectedElement(2592);
+ addExpectedElement(2593);
+ addExpectedElement(2594);
+ addExpectedElement(2595);
+ addExpectedElement(2596);
+ addExpectedElement(2597);
+ addExpectedElement(2598);
+ addExpectedElement(2599);
+ addExpectedElement(2600);
+ addExpectedElement(2601);
+ addExpectedElement(2602);
+ addExpectedElement(2603);
+ addExpectedElement(2604);
+ addExpectedElement(2605);
+ addExpectedElement(2606);
+ addExpectedElement(2607);
+ addExpectedElement(2608);
+ addExpectedElement(2609);
+ addExpectedElement(2610);
+ addExpectedElement(2611);
+ addExpectedElement(2612);
+ addExpectedElement(2613);
+ addExpectedElement(2614);
+ addExpectedElement(2615);
+ addExpectedElement(2616);
+ addExpectedElement(2617);
+ addExpectedElement(2618);
+ addExpectedElement(2619);
+ addExpectedElement(2620);
+ addExpectedElement(2621);
+ addExpectedElement(2622);
+ addExpectedElement(2623);
+ addExpectedElement(2624);
+ addExpectedElement(2625);
+ addExpectedElement(2626);
+ addExpectedElement(2627);
+ addExpectedElement(2628);
+ addExpectedElement(2629);
+ addExpectedElement(2630);
+ }
+
+ a3=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_statements_Block5256); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_18_0_0_5, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2631);
+ addExpectedElement(2632);
+ addExpectedElement(2633);
+ addExpectedElement(2634);
+ addExpectedElement(2635);
+ addExpectedElement(2636);
+ addExpectedElement(2637);
+ addExpectedElement(2638);
+ addExpectedElement(2639);
+ addExpectedElement(2640);
+ addExpectedElement(2641);
+ addExpectedElement(2642);
+ addExpectedElement(2643);
+ addExpectedElement(2644);
+ addExpectedElement(2645);
+ addExpectedElement(2646);
+ addExpectedElement(2647);
+ addExpectedElement(2648);
+ addExpectedElement(2649);
+ addExpectedElement(2650);
+ addExpectedElement(2651);
+ addExpectedElement(2652);
+ addExpectedElement(2653);
+ addExpectedElement(2654);
+ addExpectedElement(2655);
+ addExpectedElement(2656);
+ addExpectedElement(2657);
+ addExpectedElement(2658);
+ addExpectedElement(2659);
+ addExpectedElement(2660);
+ addExpectedElement(2661);
+ addExpectedElement(2662);
+ addExpectedElement(2663);
+ addExpectedElement(2664);
+ addExpectedElement(2665);
+ addExpectedElement(2666);
+ addExpectedElement(2667);
+ addExpectedElement(2668);
+ addExpectedElement(2669);
+ addExpectedElement(2670);
+ addExpectedElement(2671);
+ addExpectedElement(2672);
+ addExpectedElement(2673);
+ addExpectedElement(2674);
+ addExpectedElement(2675);
+ addExpectedElement(2676);
+ addExpectedElement(2677);
+ addExpectedElement(2678);
+ addExpectedElement(2679);
+ addExpectedElement(2680);
+ addExpectedElement(2681);
+ addExpectedElement(2682);
+ addExpectedElement(2683);
+ addExpectedElement(2684);
+ addExpectedElement(2685);
+ addExpectedElement(2686);
+ addExpectedElement(2687);
+ addExpectedElement(2688);
+ addExpectedElement(2689);
+ addExpectedElement(2690);
+ addExpectedElement(2691);
+ addExpectedElement(2692);
+ addExpectedElement(2693);
+ addExpectedElement(2694);
+ addExpectedElement(2695);
+ addExpectedElement(2696);
+ addExpectedElement(2697);
+ addExpectedElement(2698);
+ addExpectedElement(2699);
+ addExpectedElement(2700);
+ addExpectedElement(2701);
+ addExpectedElement(2702);
+ addExpectedElement(2703);
+ addExpectedElement(2704);
+ addExpectedElement(2705);
+ addExpectedElement(2706);
+ addExpectedElement(2707);
+ addExpectedElement(2708);
+ addExpectedElement(2709);
+ addExpectedElement(2710);
+ addExpectedElement(2711);
+ addExpectedElement(2712);
+ addExpectedElement(2713);
+ addExpectedElement(2714);
+ addExpectedElement(2715);
+ addExpectedElement(2716);
+ addExpectedElement(2717);
+ addExpectedElement(2718);
+ addExpectedElement(2719);
+ addExpectedElement(2720);
+ addExpectedElement(2721);
+ addExpectedElement(2722);
+ addExpectedElement(2723);
+ addExpectedElement(2724);
+ addExpectedElement(2725);
+ addExpectedElement(2726);
+ addExpectedElement(2727);
+ addExpectedElement(2728);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 20, parse_org_emftext_language_java_statements_Block_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Block"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_Constructor"
+ // Java.g:6952:1: parse_org_emftext_language_java_members_Constructor returns [org.emftext.language.java.members.Constructor element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? (a6= IDENTIFIER ) a7= '(' ( ( (a8_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a11= ')' ( (a12= 'throws' (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a16= '{' ( ( (a17_0= parse_org_emftext_language_java_statements_Statement ) ) )* a18= '}' ;
+ public final org.emftext.language.java.members.Constructor parse_org_emftext_language_java_members_Constructor() throws RecognitionException {
+ org.emftext.language.java.members.Constructor element = null;
+
+ int parse_org_emftext_language_java_members_Constructor_StartIndex = input.index();
+
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a6=null;
+ Token a7=null;
+ Token a9=null;
+ Token a11=null;
+ Token a12=null;
+ Token a14=null;
+ Token a16=null;
+ Token a18=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a2_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a4_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a8_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a10_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a13_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a15_0 =null;
+
+ org.emftext.language.java.statements.Statement a17_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return element; }
+
+ // Java.g:6955:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? (a6= IDENTIFIER ) a7= '(' ( ( (a8_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a11= ')' ( (a12= 'throws' (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a16= '{' ( ( (a17_0= parse_org_emftext_language_java_statements_Statement ) ) )* a18= '}' )
+ // Java.g:6956:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? (a6= IDENTIFIER ) a7= '(' ( ( (a8_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a11= ')' ( (a12= 'throws' (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a16= '{' ( ( (a17_0= parse_org_emftext_language_java_statements_Statement ) ) )* a18= '}'
+ {
+ // Java.g:6956:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop59:
+ do {
+ int alt59=2;
+ int LA59_0 = input.LA(1);
+
+ if ( (LA59_0==48||LA59_0==56||LA59_0==72||LA59_0==83||(LA59_0 >= 87 && LA59_0 <= 89)||(LA59_0 >= 92 && LA59_0 <= 93)||LA59_0==96||LA59_0==100||LA59_0==103) ) {
+ alt59=1;
+ }
+
+
+ switch (alt59) {
+ case 1 :
+ // Java.g:6957:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:6957:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:6958:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_Constructor5294);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop59;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2729);
+ addExpectedElement(2730);
+ addExpectedElement(2731);
+ addExpectedElement(2732);
+ addExpectedElement(2733);
+ addExpectedElement(2734);
+ addExpectedElement(2735);
+ addExpectedElement(2736);
+ addExpectedElement(2737);
+ addExpectedElement(2738);
+ addExpectedElement(2739);
+ addExpectedElement(2740);
+ addExpectedElement(2741);
+ addExpectedElement(2742);
+ }
+
+ // Java.g:6997:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )?
+ int alt61=2;
+ int LA61_0 = input.LA(1);
+
+ if ( (LA61_0==43) ) {
+ alt61=1;
+ }
+ switch (alt61) {
+ case 1 :
+ // Java.g:6998:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ {
+ // Java.g:6998:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ // Java.g:6999:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_members_Constructor5329); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2743);
+ }
+
+ // Java.g:7013:4: (a2_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:7014:5: a2_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_Constructor5355);
+ a2_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2744);
+ addExpectedElement(2745);
+ }
+
+ // Java.g:7040:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )*
+ loop60:
+ do {
+ int alt60=2;
+ int LA60_0 = input.LA(1);
+
+ if ( (LA60_0==33) ) {
+ alt60=1;
+ }
+
+
+ switch (alt60) {
+ case 1 :
+ // Java.g:7041:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ {
+ // Java.g:7041:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ // Java.g:7042:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_Constructor5396); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2746);
+ }
+
+ // Java.g:7056:6: (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:7057:7: a4_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_Constructor5430);
+ a4_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2747);
+ addExpectedElement(2748);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop60;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2749);
+ addExpectedElement(2750);
+ }
+
+ a5=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_members_Constructor5491); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_1_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2751);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2752);
+ }
+
+ // Java.g:7112:2: (a6= IDENTIFIER )
+ // Java.g:7113:3: a6= IDENTIFIER
+ {
+ a6=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_Constructor5528); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a6 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a6.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a6).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a6).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a6).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a6).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_2, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a6, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2753);
+ }
+
+ a7=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_members_Constructor5549); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2754);
+ addExpectedElement(2755);
+ addExpectedElement(2756);
+ addExpectedElement(2757);
+ addExpectedElement(2758);
+ addExpectedElement(2759);
+ addExpectedElement(2760);
+ addExpectedElement(2761);
+ addExpectedElement(2762);
+ addExpectedElement(2763);
+ addExpectedElement(2764);
+ addExpectedElement(2765);
+ addExpectedElement(2766);
+ addExpectedElement(2767);
+ addExpectedElement(2768);
+ addExpectedElement(2769);
+ addExpectedElement(2770);
+ addExpectedElement(2771);
+ addExpectedElement(2772);
+ addExpectedElement(2773);
+ addExpectedElement(2774);
+ addExpectedElement(2775);
+ addExpectedElement(2776);
+ addExpectedElement(2777);
+ }
+
+ // Java.g:7185:2: ( ( (a8_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )?
+ int alt63=2;
+ int LA63_0 = input.LA(1);
+
+ if ( (LA63_0==IDENTIFIER||LA63_0==48||LA63_0==56||LA63_0==58||LA63_0==60||LA63_0==63||LA63_0==68||LA63_0==72||LA63_0==74||LA63_0==80||(LA63_0 >= 82 && LA63_0 <= 83)||(LA63_0 >= 87 && LA63_0 <= 89)||(LA63_0 >= 91 && LA63_0 <= 93)||LA63_0==96||LA63_0==100||(LA63_0 >= 102 && LA63_0 <= 103)) ) {
+ alt63=1;
+ }
+ switch (alt63) {
+ case 1 :
+ // Java.g:7186:3: ( (a8_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ {
+ // Java.g:7186:3: ( (a8_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ // Java.g:7187:4: (a8_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ {
+ // Java.g:7187:4: (a8_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:7188:5: a8_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_Constructor5578);
+ a8_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a8_0 != null) {
+ if (a8_0 != null) {
+ Object value = a8_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_4_0_0_0, a8_0, true);
+ copyLocalizationInfos(a8_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2778);
+ addExpectedElement(2779);
+ }
+
+ // Java.g:7214:4: ( (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ loop62:
+ do {
+ int alt62=2;
+ int LA62_0 = input.LA(1);
+
+ if ( (LA62_0==33) ) {
+ alt62=1;
+ }
+
+
+ switch (alt62) {
+ case 1 :
+ // Java.g:7215:5: (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ {
+ // Java.g:7215:5: (a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ // Java.g:7216:6: a9= ',' (a10_0= parse_org_emftext_language_java_parameters_Parameter )
+ {
+ a9=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_Constructor5619); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_4_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2780);
+ addExpectedElement(2781);
+ addExpectedElement(2782);
+ addExpectedElement(2783);
+ addExpectedElement(2784);
+ addExpectedElement(2785);
+ addExpectedElement(2786);
+ addExpectedElement(2787);
+ addExpectedElement(2788);
+ addExpectedElement(2789);
+ addExpectedElement(2790);
+ addExpectedElement(2791);
+ addExpectedElement(2792);
+ addExpectedElement(2793);
+ addExpectedElement(2794);
+ addExpectedElement(2795);
+ addExpectedElement(2796);
+ addExpectedElement(2797);
+ addExpectedElement(2798);
+ addExpectedElement(2799);
+ addExpectedElement(2800);
+ addExpectedElement(2801);
+ addExpectedElement(2802);
+ }
+
+ // Java.g:7252:6: (a10_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:7253:7: a10_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_Constructor5653);
+ a10_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a10_0 != null) {
+ if (a10_0 != null) {
+ Object value = a10_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_4_0_0_1_0_0_1, a10_0, true);
+ copyLocalizationInfos(a10_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2803);
+ addExpectedElement(2804);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop62;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2805);
+ addExpectedElement(2806);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2807);
+ }
+
+ a11=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_members_Constructor5727); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_5, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2808);
+ addExpectedElement(2809);
+ }
+
+ // Java.g:7309:2: ( (a12= 'throws' (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )?
+ int alt65=2;
+ int LA65_0 = input.LA(1);
+
+ if ( (LA65_0==99) ) {
+ alt65=1;
+ }
+ switch (alt65) {
+ case 1 :
+ // Java.g:7310:3: (a12= 'throws' (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ {
+ // Java.g:7310:3: (a12= 'throws' (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ // Java.g:7311:4: a12= 'throws' (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ {
+ a12=(Token)match(input,99,FOLLOW_99_in_parse_org_emftext_language_java_members_Constructor5750); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_6_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a12, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2810);
+ addExpectedElement(2811);
+ }
+
+ // Java.g:7326:4: (a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:7327:5: a13_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_Constructor5776);
+ a13_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a13_0 != null) {
+ if (a13_0 != null) {
+ Object value = a13_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_6_0_0_1, a13_0, true);
+ copyLocalizationInfos(a13_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2812);
+ addExpectedElement(2813);
+ }
+
+ // Java.g:7353:4: ( (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ loop64:
+ do {
+ int alt64=2;
+ int LA64_0 = input.LA(1);
+
+ if ( (LA64_0==33) ) {
+ alt64=1;
+ }
+
+
+ switch (alt64) {
+ case 1 :
+ // Java.g:7354:5: (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ {
+ // Java.g:7354:5: (a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ // Java.g:7355:6: a14= ',' (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ {
+ a14=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_Constructor5817); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_6_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a14, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2814);
+ addExpectedElement(2815);
+ }
+
+ // Java.g:7370:6: (a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:7371:7: a15_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_Constructor5851);
+ a15_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a15_0 != null) {
+ if (a15_0 != null) {
+ Object value = a15_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_6_0_0_2_0_0_1, a15_0, true);
+ copyLocalizationInfos(a15_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2816);
+ addExpectedElement(2817);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop64;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2818);
+ addExpectedElement(2819);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2820);
+ }
+
+ a16=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_members_Constructor5925); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_8, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a16, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2821);
+ addExpectedElement(2822);
+ addExpectedElement(2823);
+ addExpectedElement(2824);
+ addExpectedElement(2825);
+ addExpectedElement(2826);
+ addExpectedElement(2827);
+ addExpectedElement(2828);
+ addExpectedElement(2829);
+ addExpectedElement(2830);
+ addExpectedElement(2831);
+ addExpectedElement(2832);
+ addExpectedElement(2833);
+ addExpectedElement(2834);
+ addExpectedElement(2835);
+ addExpectedElement(2836);
+ addExpectedElement(2837);
+ addExpectedElement(2838);
+ addExpectedElement(2839);
+ addExpectedElement(2840);
+ addExpectedElement(2841);
+ addExpectedElement(2842);
+ addExpectedElement(2843);
+ addExpectedElement(2844);
+ addExpectedElement(2845);
+ addExpectedElement(2846);
+ addExpectedElement(2847);
+ addExpectedElement(2848);
+ addExpectedElement(2849);
+ addExpectedElement(2850);
+ addExpectedElement(2851);
+ addExpectedElement(2852);
+ addExpectedElement(2853);
+ addExpectedElement(2854);
+ addExpectedElement(2855);
+ addExpectedElement(2856);
+ addExpectedElement(2857);
+ addExpectedElement(2858);
+ addExpectedElement(2859);
+ addExpectedElement(2860);
+ addExpectedElement(2861);
+ addExpectedElement(2862);
+ addExpectedElement(2863);
+ addExpectedElement(2864);
+ addExpectedElement(2865);
+ addExpectedElement(2866);
+ addExpectedElement(2867);
+ addExpectedElement(2868);
+ addExpectedElement(2869);
+ addExpectedElement(2870);
+ addExpectedElement(2871);
+ addExpectedElement(2872);
+ addExpectedElement(2873);
+ addExpectedElement(2874);
+ addExpectedElement(2875);
+ addExpectedElement(2876);
+ addExpectedElement(2877);
+ addExpectedElement(2878);
+ addExpectedElement(2879);
+ addExpectedElement(2880);
+ addExpectedElement(2881);
+ addExpectedElement(2882);
+ addExpectedElement(2883);
+ addExpectedElement(2884);
+ addExpectedElement(2885);
+ addExpectedElement(2886);
+ addExpectedElement(2887);
+ addExpectedElement(2888);
+ addExpectedElement(2889);
+ addExpectedElement(2890);
+ addExpectedElement(2891);
+ addExpectedElement(2892);
+ addExpectedElement(2893);
+ addExpectedElement(2894);
+ addExpectedElement(2895);
+ addExpectedElement(2896);
+ addExpectedElement(2897);
+ }
+
+ // Java.g:7502:2: ( ( (a17_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop66:
+ do {
+ int alt66=2;
+ int LA66_0 = input.LA(1);
+
+ if ( ((LA66_0 >= BOOLEAN_LITERAL && LA66_0 <= IDENTIFIER)||(LA66_0 >= OCTAL_INTEGER_LITERAL && LA66_0 <= OCTAL_LONG_LITERAL)||LA66_0==STRING_LITERAL||LA66_0==21||LA66_0==26||(LA66_0 >= 30 && LA66_0 <= 31)||(LA66_0 >= 34 && LA66_0 <= 35)||(LA66_0 >= 42 && LA66_0 <= 43)||LA66_0==48||(LA66_0 >= 56 && LA66_0 <= 60)||(LA66_0 >= 63 && LA66_0 <= 65)||(LA66_0 >= 67 && LA66_0 <= 68)||LA66_0==70||LA66_0==72||(LA66_0 >= 74 && LA66_0 <= 76)||(LA66_0 >= 80 && LA66_0 <= 85)||(LA66_0 >= 87 && LA66_0 <= 98)||(LA66_0 >= 100 && LA66_0 <= 105)||LA66_0==110) ) {
+ alt66=1;
+ }
+
+
+ switch (alt66) {
+ case 1 :
+ // Java.g:7503:3: ( (a17_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:7503:3: ( (a17_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:7504:4: (a17_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:7504:4: (a17_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:7505:5: a17_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_members_Constructor5954);
+ a17_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ if (a17_0 != null) {
+ if (a17_0 != null) {
+ Object value = a17_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CONSTRUCTOR__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_9_0_0_1, a17_0, true);
+ copyLocalizationInfos(a17_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2898);
+ addExpectedElement(2899);
+ addExpectedElement(2900);
+ addExpectedElement(2901);
+ addExpectedElement(2902);
+ addExpectedElement(2903);
+ addExpectedElement(2904);
+ addExpectedElement(2905);
+ addExpectedElement(2906);
+ addExpectedElement(2907);
+ addExpectedElement(2908);
+ addExpectedElement(2909);
+ addExpectedElement(2910);
+ addExpectedElement(2911);
+ addExpectedElement(2912);
+ addExpectedElement(2913);
+ addExpectedElement(2914);
+ addExpectedElement(2915);
+ addExpectedElement(2916);
+ addExpectedElement(2917);
+ addExpectedElement(2918);
+ addExpectedElement(2919);
+ addExpectedElement(2920);
+ addExpectedElement(2921);
+ addExpectedElement(2922);
+ addExpectedElement(2923);
+ addExpectedElement(2924);
+ addExpectedElement(2925);
+ addExpectedElement(2926);
+ addExpectedElement(2927);
+ addExpectedElement(2928);
+ addExpectedElement(2929);
+ addExpectedElement(2930);
+ addExpectedElement(2931);
+ addExpectedElement(2932);
+ addExpectedElement(2933);
+ addExpectedElement(2934);
+ addExpectedElement(2935);
+ addExpectedElement(2936);
+ addExpectedElement(2937);
+ addExpectedElement(2938);
+ addExpectedElement(2939);
+ addExpectedElement(2940);
+ addExpectedElement(2941);
+ addExpectedElement(2942);
+ addExpectedElement(2943);
+ addExpectedElement(2944);
+ addExpectedElement(2945);
+ addExpectedElement(2946);
+ addExpectedElement(2947);
+ addExpectedElement(2948);
+ addExpectedElement(2949);
+ addExpectedElement(2950);
+ addExpectedElement(2951);
+ addExpectedElement(2952);
+ addExpectedElement(2953);
+ addExpectedElement(2954);
+ addExpectedElement(2955);
+ addExpectedElement(2956);
+ addExpectedElement(2957);
+ addExpectedElement(2958);
+ addExpectedElement(2959);
+ addExpectedElement(2960);
+ addExpectedElement(2961);
+ addExpectedElement(2962);
+ addExpectedElement(2963);
+ addExpectedElement(2964);
+ addExpectedElement(2965);
+ addExpectedElement(2966);
+ addExpectedElement(2967);
+ addExpectedElement(2968);
+ addExpectedElement(2969);
+ addExpectedElement(2970);
+ addExpectedElement(2971);
+ addExpectedElement(2972);
+ addExpectedElement(2973);
+ addExpectedElement(2974);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop66;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(2975);
+ addExpectedElement(2976);
+ addExpectedElement(2977);
+ addExpectedElement(2978);
+ addExpectedElement(2979);
+ addExpectedElement(2980);
+ addExpectedElement(2981);
+ addExpectedElement(2982);
+ addExpectedElement(2983);
+ addExpectedElement(2984);
+ addExpectedElement(2985);
+ addExpectedElement(2986);
+ addExpectedElement(2987);
+ addExpectedElement(2988);
+ addExpectedElement(2989);
+ addExpectedElement(2990);
+ addExpectedElement(2991);
+ addExpectedElement(2992);
+ addExpectedElement(2993);
+ addExpectedElement(2994);
+ addExpectedElement(2995);
+ addExpectedElement(2996);
+ addExpectedElement(2997);
+ addExpectedElement(2998);
+ addExpectedElement(2999);
+ addExpectedElement(3000);
+ addExpectedElement(3001);
+ addExpectedElement(3002);
+ addExpectedElement(3003);
+ addExpectedElement(3004);
+ addExpectedElement(3005);
+ addExpectedElement(3006);
+ addExpectedElement(3007);
+ addExpectedElement(3008);
+ addExpectedElement(3009);
+ addExpectedElement(3010);
+ addExpectedElement(3011);
+ addExpectedElement(3012);
+ addExpectedElement(3013);
+ addExpectedElement(3014);
+ addExpectedElement(3015);
+ addExpectedElement(3016);
+ addExpectedElement(3017);
+ addExpectedElement(3018);
+ addExpectedElement(3019);
+ addExpectedElement(3020);
+ addExpectedElement(3021);
+ addExpectedElement(3022);
+ addExpectedElement(3023);
+ addExpectedElement(3024);
+ addExpectedElement(3025);
+ addExpectedElement(3026);
+ addExpectedElement(3027);
+ addExpectedElement(3028);
+ addExpectedElement(3029);
+ addExpectedElement(3030);
+ addExpectedElement(3031);
+ addExpectedElement(3032);
+ addExpectedElement(3033);
+ addExpectedElement(3034);
+ addExpectedElement(3035);
+ addExpectedElement(3036);
+ addExpectedElement(3037);
+ addExpectedElement(3038);
+ addExpectedElement(3039);
+ addExpectedElement(3040);
+ addExpectedElement(3041);
+ addExpectedElement(3042);
+ addExpectedElement(3043);
+ addExpectedElement(3044);
+ addExpectedElement(3045);
+ addExpectedElement(3046);
+ addExpectedElement(3047);
+ addExpectedElement(3048);
+ addExpectedElement(3049);
+ addExpectedElement(3050);
+ addExpectedElement(3051);
+ }
+
+ a18=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_members_Constructor5995); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createConstructor();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_19_0_0_11, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a18, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3052);
+ addExpectedElement(3053);
+ addExpectedElement(3054);
+ addExpectedElement(3055);
+ addExpectedElement(3056);
+ addExpectedElement(3057);
+ addExpectedElement(3058);
+ addExpectedElement(3059);
+ addExpectedElement(3060);
+ addExpectedElement(3061);
+ addExpectedElement(3062);
+ addExpectedElement(3063);
+ addExpectedElement(3064);
+ addExpectedElement(3065);
+ addExpectedElement(3066);
+ addExpectedElement(3067);
+ addExpectedElement(3068);
+ addExpectedElement(3069);
+ addExpectedElement(3070);
+ addExpectedElement(3071);
+ addExpectedElement(3072);
+ addExpectedElement(3073);
+ addExpectedElement(3074);
+ addExpectedElement(3075);
+ addExpectedElement(3076);
+ addExpectedElement(3077);
+ addExpectedElement(3078);
+ addExpectedElement(3079);
+ addExpectedElement(3080);
+ addExpectedElement(3081);
+ addExpectedElement(3082);
+ addExpectedElement(3083);
+ addExpectedElement(3084);
+ addExpectedElement(3085);
+ addExpectedElement(3086);
+ addExpectedElement(3087);
+ addExpectedElement(3088);
+ addExpectedElement(3089);
+ addExpectedElement(3090);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 21, parse_org_emftext_language_java_members_Constructor_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_Constructor"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_InterfaceMethod"
+ // Java.g:7743:1: parse_org_emftext_language_java_members_InterfaceMethod returns [org.emftext.language.java.members.InterfaceMethod element = null] : ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= ';' |c0= parse_org_emftext_language_java_annotations_AnnotationAttribute );
+ public final org.emftext.language.java.members.InterfaceMethod parse_org_emftext_language_java_members_InterfaceMethod() throws RecognitionException {
+ org.emftext.language.java.members.InterfaceMethod element = null;
+
+ int parse_org_emftext_language_java_members_InterfaceMethod_StartIndex = input.index();
+
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a8=null;
+ Token a9=null;
+ Token a11=null;
+ Token a13=null;
+ Token a15=null;
+ Token a17=null;
+ Token a19=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a2_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a4_0 =null;
+
+ org.emftext.language.java.types.TypeReference a6_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a7_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a10_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a12_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a14_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a16_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a18_0 =null;
+
+ org.emftext.language.java.annotations.AnnotationAttribute c0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return element; }
+
+ // Java.g:7746:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= ';' |c0= parse_org_emftext_language_java_annotations_AnnotationAttribute )
+ int alt76=2;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ int LA76_1 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA76_2 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 56:
+ {
+ int LA76_3 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 88:
+ {
+ int LA76_4 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 87:
+ {
+ int LA76_5 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 5, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 72:
+ {
+ int LA76_6 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 6, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 92:
+ {
+ int LA76_7 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 7, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 83:
+ {
+ int LA76_8 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 8, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 96:
+ {
+ int LA76_9 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 9, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 100:
+ {
+ int LA76_10 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 10, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 103:
+ {
+ int LA76_11 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 11, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 93:
+ {
+ int LA76_12 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 12, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 43:
+ {
+ int LA76_13 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 13, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA76_14 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 14, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 102:
+ {
+ int LA76_15 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 15, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 58:
+ {
+ int LA76_16 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 16, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 63:
+ {
+ int LA76_17 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 17, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 60:
+ {
+ int LA76_18 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 18, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 91:
+ {
+ int LA76_19 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 19, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA76_20 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 20, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 82:
+ {
+ int LA76_21 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 21, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 74:
+ {
+ int LA76_22 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 22, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 68:
+ {
+ int LA76_23 = input.LA(2);
+
+ if ( (synpred77_Java()) ) {
+ alt76=1;
+ }
+ else if ( (true) ) {
+ alt76=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 23, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 76, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt76) {
+ case 1 :
+ // Java.g:7747:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= ';'
+ {
+ // Java.g:7747:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop67:
+ do {
+ int alt67=2;
+ int LA67_0 = input.LA(1);
+
+ if ( (LA67_0==48||LA67_0==56||LA67_0==72||LA67_0==83||(LA67_0 >= 87 && LA67_0 <= 89)||(LA67_0 >= 92 && LA67_0 <= 93)||LA67_0==96||LA67_0==100||LA67_0==103) ) {
+ alt67=1;
+ }
+
+
+ switch (alt67) {
+ case 1 :
+ // Java.g:7748:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:7748:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:7749:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_InterfaceMethod6033);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop67;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3091);
+ addExpectedElement(3092);
+ addExpectedElement(3093);
+ addExpectedElement(3094);
+ addExpectedElement(3095);
+ addExpectedElement(3096);
+ addExpectedElement(3097);
+ addExpectedElement(3098);
+ addExpectedElement(3099);
+ addExpectedElement(3100);
+ addExpectedElement(3101);
+ addExpectedElement(3102);
+ addExpectedElement(3103);
+ addExpectedElement(3104);
+ addExpectedElement(3105);
+ addExpectedElement(3106);
+ addExpectedElement(3107);
+ addExpectedElement(3108);
+ addExpectedElement(3109);
+ addExpectedElement(3110);
+ addExpectedElement(3111);
+ addExpectedElement(3112);
+ addExpectedElement(3113);
+ addExpectedElement(3114);
+ }
+
+ // Java.g:7798:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )?
+ int alt69=2;
+ int LA69_0 = input.LA(1);
+
+ if ( (LA69_0==43) ) {
+ alt69=1;
+ }
+ switch (alt69) {
+ case 1 :
+ // Java.g:7799:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ {
+ // Java.g:7799:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ // Java.g:7800:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_members_InterfaceMethod6068); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3115);
+ }
+
+ // Java.g:7814:4: (a2_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:7815:5: a2_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_InterfaceMethod6094);
+ a2_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3116);
+ addExpectedElement(3117);
+ }
+
+ // Java.g:7841:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )*
+ loop68:
+ do {
+ int alt68=2;
+ int LA68_0 = input.LA(1);
+
+ if ( (LA68_0==33) ) {
+ alt68=1;
+ }
+
+
+ switch (alt68) {
+ case 1 :
+ // Java.g:7842:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ {
+ // Java.g:7842:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ // Java.g:7843:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_InterfaceMethod6135); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3118);
+ }
+
+ // Java.g:7857:6: (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:7858:7: a4_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_InterfaceMethod6169);
+ a4_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3119);
+ addExpectedElement(3120);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop68;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3121);
+ addExpectedElement(3122);
+ }
+
+ a5=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_members_InterfaceMethod6230); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_1_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3123);
+ addExpectedElement(3124);
+ addExpectedElement(3125);
+ addExpectedElement(3126);
+ addExpectedElement(3127);
+ addExpectedElement(3128);
+ addExpectedElement(3129);
+ addExpectedElement(3130);
+ addExpectedElement(3131);
+ addExpectedElement(3132);
+ addExpectedElement(3133);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3134);
+ addExpectedElement(3135);
+ addExpectedElement(3136);
+ addExpectedElement(3137);
+ addExpectedElement(3138);
+ addExpectedElement(3139);
+ addExpectedElement(3140);
+ addExpectedElement(3141);
+ addExpectedElement(3142);
+ addExpectedElement(3143);
+ addExpectedElement(3144);
+ }
+
+ // Java.g:7933:2: ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:7934:3: (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ // Java.g:7934:3: (a6_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:7935:4: a6_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_members_InterfaceMethod6272);
+ a6_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_2_0_0_0, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3145);
+ addExpectedElement(3146);
+ }
+
+ // Java.g:7961:3: ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop70:
+ do {
+ int alt70=2;
+ int LA70_0 = input.LA(1);
+
+ if ( (LA70_0==49) ) {
+ alt70=1;
+ }
+
+
+ switch (alt70) {
+ case 1 :
+ // Java.g:7962:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:7962:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:7963:5: a7_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_InterfaceMethod6306);
+ a7_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_2_0_0_1, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop70;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3147);
+ addExpectedElement(3148);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3149);
+ }
+
+ // Java.g:7996:2: (a8= IDENTIFIER )
+ // Java.g:7997:3: a8= IDENTIFIER
+ {
+ a8=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_InterfaceMethod6350); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a8 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_3, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3150);
+ }
+
+ a9=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_members_InterfaceMethod6371); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3151);
+ addExpectedElement(3152);
+ addExpectedElement(3153);
+ addExpectedElement(3154);
+ addExpectedElement(3155);
+ addExpectedElement(3156);
+ addExpectedElement(3157);
+ addExpectedElement(3158);
+ addExpectedElement(3159);
+ addExpectedElement(3160);
+ addExpectedElement(3161);
+ addExpectedElement(3162);
+ addExpectedElement(3163);
+ addExpectedElement(3164);
+ addExpectedElement(3165);
+ addExpectedElement(3166);
+ addExpectedElement(3167);
+ addExpectedElement(3168);
+ addExpectedElement(3169);
+ addExpectedElement(3170);
+ addExpectedElement(3171);
+ addExpectedElement(3172);
+ addExpectedElement(3173);
+ addExpectedElement(3174);
+ }
+
+ // Java.g:8069:2: ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )?
+ int alt72=2;
+ int LA72_0 = input.LA(1);
+
+ if ( (LA72_0==IDENTIFIER||LA72_0==48||LA72_0==56||LA72_0==58||LA72_0==60||LA72_0==63||LA72_0==68||LA72_0==72||LA72_0==74||LA72_0==80||(LA72_0 >= 82 && LA72_0 <= 83)||(LA72_0 >= 87 && LA72_0 <= 89)||(LA72_0 >= 91 && LA72_0 <= 93)||LA72_0==96||LA72_0==100||(LA72_0 >= 102 && LA72_0 <= 103)) ) {
+ alt72=1;
+ }
+ switch (alt72) {
+ case 1 :
+ // Java.g:8070:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ {
+ // Java.g:8070:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ // Java.g:8071:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ {
+ // Java.g:8071:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:8072:5: a10_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_InterfaceMethod6400);
+ a10_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a10_0 != null) {
+ if (a10_0 != null) {
+ Object value = a10_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_5_0_0_0, a10_0, true);
+ copyLocalizationInfos(a10_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3175);
+ addExpectedElement(3176);
+ }
+
+ // Java.g:8098:4: ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ loop71:
+ do {
+ int alt71=2;
+ int LA71_0 = input.LA(1);
+
+ if ( (LA71_0==33) ) {
+ alt71=1;
+ }
+
+
+ switch (alt71) {
+ case 1 :
+ // Java.g:8099:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ {
+ // Java.g:8099:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ // Java.g:8100:6: a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ {
+ a11=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_InterfaceMethod6441); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_5_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3177);
+ addExpectedElement(3178);
+ addExpectedElement(3179);
+ addExpectedElement(3180);
+ addExpectedElement(3181);
+ addExpectedElement(3182);
+ addExpectedElement(3183);
+ addExpectedElement(3184);
+ addExpectedElement(3185);
+ addExpectedElement(3186);
+ addExpectedElement(3187);
+ addExpectedElement(3188);
+ addExpectedElement(3189);
+ addExpectedElement(3190);
+ addExpectedElement(3191);
+ addExpectedElement(3192);
+ addExpectedElement(3193);
+ addExpectedElement(3194);
+ addExpectedElement(3195);
+ addExpectedElement(3196);
+ addExpectedElement(3197);
+ addExpectedElement(3198);
+ addExpectedElement(3199);
+ }
+
+ // Java.g:8136:6: (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:8137:7: a12_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_InterfaceMethod6475);
+ a12_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a12_0 != null) {
+ if (a12_0 != null) {
+ Object value = a12_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_5_0_0_1_0_0_1, a12_0, true);
+ copyLocalizationInfos(a12_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3200);
+ addExpectedElement(3201);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop71;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3202);
+ addExpectedElement(3203);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3204);
+ }
+
+ a13=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_members_InterfaceMethod6549); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a13, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3205);
+ addExpectedElement(3206);
+ addExpectedElement(3207);
+ }
+
+ // Java.g:8194:2: ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop73:
+ do {
+ int alt73=2;
+ int LA73_0 = input.LA(1);
+
+ if ( (LA73_0==49) ) {
+ alt73=1;
+ }
+
+
+ switch (alt73) {
+ case 1 :
+ // Java.g:8195:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:8195:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:8196:4: a14_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_InterfaceMethod6572);
+ a14_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a14_0 != null) {
+ if (a14_0 != null) {
+ Object value = a14_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_7, a14_0, true);
+ copyLocalizationInfos(a14_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop73;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3208);
+ addExpectedElement(3209);
+ addExpectedElement(3210);
+ }
+
+ // Java.g:8224:2: ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )?
+ int alt75=2;
+ int LA75_0 = input.LA(1);
+
+ if ( (LA75_0==99) ) {
+ alt75=1;
+ }
+ switch (alt75) {
+ case 1 :
+ // Java.g:8225:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ {
+ // Java.g:8225:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ // Java.g:8226:4: a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ {
+ a15=(Token)match(input,99,FOLLOW_99_in_parse_org_emftext_language_java_members_InterfaceMethod6607); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_8_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a15, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3211);
+ addExpectedElement(3212);
+ }
+
+ // Java.g:8241:4: (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:8242:5: a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_InterfaceMethod6633);
+ a16_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a16_0 != null) {
+ if (a16_0 != null) {
+ Object value = a16_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_8_0_0_1, a16_0, true);
+ copyLocalizationInfos(a16_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3213);
+ addExpectedElement(3214);
+ }
+
+ // Java.g:8268:4: ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ loop74:
+ do {
+ int alt74=2;
+ int LA74_0 = input.LA(1);
+
+ if ( (LA74_0==33) ) {
+ alt74=1;
+ }
+
+
+ switch (alt74) {
+ case 1 :
+ // Java.g:8269:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ {
+ // Java.g:8269:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ // Java.g:8270:6: a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ {
+ a17=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_InterfaceMethod6674); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_8_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a17, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3215);
+ addExpectedElement(3216);
+ }
+
+ // Java.g:8285:6: (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:8286:7: a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_InterfaceMethod6708);
+ a18_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ if (a18_0 != null) {
+ if (a18_0 != null) {
+ Object value = a18_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.INTERFACE_METHOD__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_8_0_0_2_0_0_1, a18_0, true);
+ copyLocalizationInfos(a18_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3217);
+ addExpectedElement(3218);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop74;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3219);
+ addExpectedElement(3220);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3221);
+ }
+
+ a19=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_members_InterfaceMethod6782); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createInterfaceMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_20_0_0_9, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a19, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3222);
+ addExpectedElement(3223);
+ addExpectedElement(3224);
+ addExpectedElement(3225);
+ addExpectedElement(3226);
+ addExpectedElement(3227);
+ addExpectedElement(3228);
+ addExpectedElement(3229);
+ addExpectedElement(3230);
+ addExpectedElement(3231);
+ addExpectedElement(3232);
+ addExpectedElement(3233);
+ addExpectedElement(3234);
+ addExpectedElement(3235);
+ addExpectedElement(3236);
+ addExpectedElement(3237);
+ addExpectedElement(3238);
+ addExpectedElement(3239);
+ addExpectedElement(3240);
+ addExpectedElement(3241);
+ addExpectedElement(3242);
+ addExpectedElement(3243);
+ addExpectedElement(3244);
+ addExpectedElement(3245);
+ addExpectedElement(3246);
+ addExpectedElement(3247);
+ addExpectedElement(3248);
+ addExpectedElement(3249);
+ addExpectedElement(3250);
+ addExpectedElement(3251);
+ addExpectedElement(3252);
+ addExpectedElement(3253);
+ addExpectedElement(3254);
+ addExpectedElement(3255);
+ addExpectedElement(3256);
+ addExpectedElement(3257);
+ addExpectedElement(3258);
+ addExpectedElement(3259);
+ addExpectedElement(3260);
+ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:8381:2: c0= parse_org_emftext_language_java_annotations_AnnotationAttribute
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttribute_in_parse_org_emftext_language_java_members_InterfaceMethod6801);
+ c0=parse_org_emftext_language_java_annotations_AnnotationAttribute();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 22, parse_org_emftext_language_java_members_InterfaceMethod_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_InterfaceMethod"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_ClassMethod"
+ // Java.g:8385:1: parse_org_emftext_language_java_members_ClassMethod returns [org.emftext.language.java.members.ClassMethod element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= '{' ( ( (a20_0= parse_org_emftext_language_java_statements_Statement ) ) )* a21= '}' ;
+ public final org.emftext.language.java.members.ClassMethod parse_org_emftext_language_java_members_ClassMethod() throws RecognitionException {
+ org.emftext.language.java.members.ClassMethod element = null;
+
+ int parse_org_emftext_language_java_members_ClassMethod_StartIndex = input.index();
+
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a8=null;
+ Token a9=null;
+ Token a11=null;
+ Token a13=null;
+ Token a15=null;
+ Token a17=null;
+ Token a19=null;
+ Token a21=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a2_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a4_0 =null;
+
+ org.emftext.language.java.types.TypeReference a6_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a7_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a10_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a12_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a14_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a16_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a18_0 =null;
+
+ org.emftext.language.java.statements.Statement a20_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return element; }
+
+ // Java.g:8388:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= '{' ( ( (a20_0= parse_org_emftext_language_java_statements_Statement ) ) )* a21= '}' )
+ // Java.g:8389:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= '{' ( ( (a20_0= parse_org_emftext_language_java_statements_Statement ) ) )* a21= '}'
+ {
+ // Java.g:8389:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop77:
+ do {
+ int alt77=2;
+ int LA77_0 = input.LA(1);
+
+ if ( (LA77_0==48||LA77_0==56||LA77_0==72||LA77_0==83||(LA77_0 >= 87 && LA77_0 <= 89)||(LA77_0 >= 92 && LA77_0 <= 93)||LA77_0==96||LA77_0==100||LA77_0==103) ) {
+ alt77=1;
+ }
+
+
+ switch (alt77) {
+ case 1 :
+ // Java.g:8390:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:8390:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:8391:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_ClassMethod6835);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop77;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3261);
+ addExpectedElement(3262);
+ addExpectedElement(3263);
+ addExpectedElement(3264);
+ addExpectedElement(3265);
+ addExpectedElement(3266);
+ addExpectedElement(3267);
+ addExpectedElement(3268);
+ addExpectedElement(3269);
+ addExpectedElement(3270);
+ addExpectedElement(3271);
+ addExpectedElement(3272);
+ addExpectedElement(3273);
+ addExpectedElement(3274);
+ addExpectedElement(3275);
+ addExpectedElement(3276);
+ addExpectedElement(3277);
+ addExpectedElement(3278);
+ addExpectedElement(3279);
+ addExpectedElement(3280);
+ addExpectedElement(3281);
+ addExpectedElement(3282);
+ addExpectedElement(3283);
+ addExpectedElement(3284);
+ }
+
+ // Java.g:8440:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )?
+ int alt79=2;
+ int LA79_0 = input.LA(1);
+
+ if ( (LA79_0==43) ) {
+ alt79=1;
+ }
+ switch (alt79) {
+ case 1 :
+ // Java.g:8441:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ {
+ // Java.g:8441:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ // Java.g:8442:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_members_ClassMethod6870); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3285);
+ }
+
+ // Java.g:8456:4: (a2_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:8457:5: a2_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_ClassMethod6896);
+ a2_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3286);
+ addExpectedElement(3287);
+ }
+
+ // Java.g:8483:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )*
+ loop78:
+ do {
+ int alt78=2;
+ int LA78_0 = input.LA(1);
+
+ if ( (LA78_0==33) ) {
+ alt78=1;
+ }
+
+
+ switch (alt78) {
+ case 1 :
+ // Java.g:8484:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ {
+ // Java.g:8484:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ // Java.g:8485:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_ClassMethod6937); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3288);
+ }
+
+ // Java.g:8499:6: (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:8500:7: a4_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_ClassMethod6971);
+ a4_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3289);
+ addExpectedElement(3290);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop78;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3291);
+ addExpectedElement(3292);
+ }
+
+ a5=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_members_ClassMethod7032); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_1_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3293);
+ addExpectedElement(3294);
+ addExpectedElement(3295);
+ addExpectedElement(3296);
+ addExpectedElement(3297);
+ addExpectedElement(3298);
+ addExpectedElement(3299);
+ addExpectedElement(3300);
+ addExpectedElement(3301);
+ addExpectedElement(3302);
+ addExpectedElement(3303);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3304);
+ addExpectedElement(3305);
+ addExpectedElement(3306);
+ addExpectedElement(3307);
+ addExpectedElement(3308);
+ addExpectedElement(3309);
+ addExpectedElement(3310);
+ addExpectedElement(3311);
+ addExpectedElement(3312);
+ addExpectedElement(3313);
+ addExpectedElement(3314);
+ }
+
+ // Java.g:8575:2: ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:8576:3: (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ // Java.g:8576:3: (a6_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:8577:4: a6_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_members_ClassMethod7074);
+ a6_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_2_0_0_0, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3315);
+ addExpectedElement(3316);
+ }
+
+ // Java.g:8603:3: ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop80:
+ do {
+ int alt80=2;
+ int LA80_0 = input.LA(1);
+
+ if ( (LA80_0==49) ) {
+ alt80=1;
+ }
+
+
+ switch (alt80) {
+ case 1 :
+ // Java.g:8604:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:8604:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:8605:5: a7_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_ClassMethod7108);
+ a7_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_2_0_0_1, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop80;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3317);
+ addExpectedElement(3318);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3319);
+ }
+
+ // Java.g:8638:2: (a8= IDENTIFIER )
+ // Java.g:8639:3: a8= IDENTIFIER
+ {
+ a8=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_ClassMethod7152); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a8 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.CLASS_METHOD__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_3, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3320);
+ }
+
+ a9=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_members_ClassMethod7173); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3321);
+ addExpectedElement(3322);
+ addExpectedElement(3323);
+ addExpectedElement(3324);
+ addExpectedElement(3325);
+ addExpectedElement(3326);
+ addExpectedElement(3327);
+ addExpectedElement(3328);
+ addExpectedElement(3329);
+ addExpectedElement(3330);
+ addExpectedElement(3331);
+ addExpectedElement(3332);
+ addExpectedElement(3333);
+ addExpectedElement(3334);
+ addExpectedElement(3335);
+ addExpectedElement(3336);
+ addExpectedElement(3337);
+ addExpectedElement(3338);
+ addExpectedElement(3339);
+ addExpectedElement(3340);
+ addExpectedElement(3341);
+ addExpectedElement(3342);
+ addExpectedElement(3343);
+ addExpectedElement(3344);
+ }
+
+ // Java.g:8711:2: ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )?
+ int alt82=2;
+ int LA82_0 = input.LA(1);
+
+ if ( (LA82_0==IDENTIFIER||LA82_0==48||LA82_0==56||LA82_0==58||LA82_0==60||LA82_0==63||LA82_0==68||LA82_0==72||LA82_0==74||LA82_0==80||(LA82_0 >= 82 && LA82_0 <= 83)||(LA82_0 >= 87 && LA82_0 <= 89)||(LA82_0 >= 91 && LA82_0 <= 93)||LA82_0==96||LA82_0==100||(LA82_0 >= 102 && LA82_0 <= 103)) ) {
+ alt82=1;
+ }
+ switch (alt82) {
+ case 1 :
+ // Java.g:8712:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ {
+ // Java.g:8712:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ // Java.g:8713:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ {
+ // Java.g:8713:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:8714:5: a10_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_ClassMethod7202);
+ a10_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a10_0 != null) {
+ if (a10_0 != null) {
+ Object value = a10_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_5_0_0_0, a10_0, true);
+ copyLocalizationInfos(a10_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3345);
+ addExpectedElement(3346);
+ }
+
+ // Java.g:8740:4: ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ loop81:
+ do {
+ int alt81=2;
+ int LA81_0 = input.LA(1);
+
+ if ( (LA81_0==33) ) {
+ alt81=1;
+ }
+
+
+ switch (alt81) {
+ case 1 :
+ // Java.g:8741:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ {
+ // Java.g:8741:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ // Java.g:8742:6: a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ {
+ a11=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_ClassMethod7243); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_5_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3347);
+ addExpectedElement(3348);
+ addExpectedElement(3349);
+ addExpectedElement(3350);
+ addExpectedElement(3351);
+ addExpectedElement(3352);
+ addExpectedElement(3353);
+ addExpectedElement(3354);
+ addExpectedElement(3355);
+ addExpectedElement(3356);
+ addExpectedElement(3357);
+ addExpectedElement(3358);
+ addExpectedElement(3359);
+ addExpectedElement(3360);
+ addExpectedElement(3361);
+ addExpectedElement(3362);
+ addExpectedElement(3363);
+ addExpectedElement(3364);
+ addExpectedElement(3365);
+ addExpectedElement(3366);
+ addExpectedElement(3367);
+ addExpectedElement(3368);
+ addExpectedElement(3369);
+ }
+
+ // Java.g:8778:6: (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:8779:7: a12_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_ClassMethod7277);
+ a12_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a12_0 != null) {
+ if (a12_0 != null) {
+ Object value = a12_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_5_0_0_1_0_0_1, a12_0, true);
+ copyLocalizationInfos(a12_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3370);
+ addExpectedElement(3371);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop81;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3372);
+ addExpectedElement(3373);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3374);
+ }
+
+ a13=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_members_ClassMethod7351); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a13, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3375);
+ addExpectedElement(3376);
+ addExpectedElement(3377);
+ }
+
+ // Java.g:8836:2: ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop83:
+ do {
+ int alt83=2;
+ int LA83_0 = input.LA(1);
+
+ if ( (LA83_0==49) ) {
+ alt83=1;
+ }
+
+
+ switch (alt83) {
+ case 1 :
+ // Java.g:8837:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:8837:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:8838:4: a14_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_ClassMethod7374);
+ a14_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a14_0 != null) {
+ if (a14_0 != null) {
+ Object value = a14_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_7, a14_0, true);
+ copyLocalizationInfos(a14_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop83;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3378);
+ addExpectedElement(3379);
+ addExpectedElement(3380);
+ }
+
+ // Java.g:8866:2: ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )?
+ int alt85=2;
+ int LA85_0 = input.LA(1);
+
+ if ( (LA85_0==99) ) {
+ alt85=1;
+ }
+ switch (alt85) {
+ case 1 :
+ // Java.g:8867:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ {
+ // Java.g:8867:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ // Java.g:8868:4: a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ {
+ a15=(Token)match(input,99,FOLLOW_99_in_parse_org_emftext_language_java_members_ClassMethod7409); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_8_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a15, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3381);
+ addExpectedElement(3382);
+ }
+
+ // Java.g:8883:4: (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:8884:5: a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_ClassMethod7435);
+ a16_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a16_0 != null) {
+ if (a16_0 != null) {
+ Object value = a16_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_8_0_0_1, a16_0, true);
+ copyLocalizationInfos(a16_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3383);
+ addExpectedElement(3384);
+ }
+
+ // Java.g:8910:4: ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ loop84:
+ do {
+ int alt84=2;
+ int LA84_0 = input.LA(1);
+
+ if ( (LA84_0==33) ) {
+ alt84=1;
+ }
+
+
+ switch (alt84) {
+ case 1 :
+ // Java.g:8911:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ {
+ // Java.g:8911:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ // Java.g:8912:6: a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ {
+ a17=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_ClassMethod7476); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_8_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a17, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3385);
+ addExpectedElement(3386);
+ }
+
+ // Java.g:8927:6: (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:8928:7: a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_ClassMethod7510);
+ a18_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a18_0 != null) {
+ if (a18_0 != null) {
+ Object value = a18_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_8_0_0_2_0_0_1, a18_0, true);
+ copyLocalizationInfos(a18_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3387);
+ addExpectedElement(3388);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop84;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3389);
+ addExpectedElement(3390);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3391);
+ }
+
+ a19=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_members_ClassMethod7584); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_10, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a19, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3392);
+ addExpectedElement(3393);
+ addExpectedElement(3394);
+ addExpectedElement(3395);
+ addExpectedElement(3396);
+ addExpectedElement(3397);
+ addExpectedElement(3398);
+ addExpectedElement(3399);
+ addExpectedElement(3400);
+ addExpectedElement(3401);
+ addExpectedElement(3402);
+ addExpectedElement(3403);
+ addExpectedElement(3404);
+ addExpectedElement(3405);
+ addExpectedElement(3406);
+ addExpectedElement(3407);
+ addExpectedElement(3408);
+ addExpectedElement(3409);
+ addExpectedElement(3410);
+ addExpectedElement(3411);
+ addExpectedElement(3412);
+ addExpectedElement(3413);
+ addExpectedElement(3414);
+ addExpectedElement(3415);
+ addExpectedElement(3416);
+ addExpectedElement(3417);
+ addExpectedElement(3418);
+ addExpectedElement(3419);
+ addExpectedElement(3420);
+ addExpectedElement(3421);
+ addExpectedElement(3422);
+ addExpectedElement(3423);
+ addExpectedElement(3424);
+ addExpectedElement(3425);
+ addExpectedElement(3426);
+ addExpectedElement(3427);
+ addExpectedElement(3428);
+ addExpectedElement(3429);
+ addExpectedElement(3430);
+ addExpectedElement(3431);
+ addExpectedElement(3432);
+ addExpectedElement(3433);
+ addExpectedElement(3434);
+ addExpectedElement(3435);
+ addExpectedElement(3436);
+ addExpectedElement(3437);
+ addExpectedElement(3438);
+ addExpectedElement(3439);
+ addExpectedElement(3440);
+ addExpectedElement(3441);
+ addExpectedElement(3442);
+ addExpectedElement(3443);
+ addExpectedElement(3444);
+ addExpectedElement(3445);
+ addExpectedElement(3446);
+ addExpectedElement(3447);
+ addExpectedElement(3448);
+ addExpectedElement(3449);
+ addExpectedElement(3450);
+ addExpectedElement(3451);
+ addExpectedElement(3452);
+ addExpectedElement(3453);
+ addExpectedElement(3454);
+ addExpectedElement(3455);
+ addExpectedElement(3456);
+ addExpectedElement(3457);
+ addExpectedElement(3458);
+ addExpectedElement(3459);
+ addExpectedElement(3460);
+ addExpectedElement(3461);
+ addExpectedElement(3462);
+ addExpectedElement(3463);
+ addExpectedElement(3464);
+ addExpectedElement(3465);
+ addExpectedElement(3466);
+ addExpectedElement(3467);
+ addExpectedElement(3468);
+ }
+
+ // Java.g:9059:2: ( ( (a20_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop86:
+ do {
+ int alt86=2;
+ int LA86_0 = input.LA(1);
+
+ if ( ((LA86_0 >= BOOLEAN_LITERAL && LA86_0 <= IDENTIFIER)||(LA86_0 >= OCTAL_INTEGER_LITERAL && LA86_0 <= OCTAL_LONG_LITERAL)||LA86_0==STRING_LITERAL||LA86_0==21||LA86_0==26||(LA86_0 >= 30 && LA86_0 <= 31)||(LA86_0 >= 34 && LA86_0 <= 35)||(LA86_0 >= 42 && LA86_0 <= 43)||LA86_0==48||(LA86_0 >= 56 && LA86_0 <= 60)||(LA86_0 >= 63 && LA86_0 <= 65)||(LA86_0 >= 67 && LA86_0 <= 68)||LA86_0==70||LA86_0==72||(LA86_0 >= 74 && LA86_0 <= 76)||(LA86_0 >= 80 && LA86_0 <= 85)||(LA86_0 >= 87 && LA86_0 <= 98)||(LA86_0 >= 100 && LA86_0 <= 105)||LA86_0==110) ) {
+ alt86=1;
+ }
+
+
+ switch (alt86) {
+ case 1 :
+ // Java.g:9060:3: ( (a20_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:9060:3: ( (a20_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:9061:4: (a20_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:9061:4: (a20_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:9062:5: a20_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_members_ClassMethod7613);
+ a20_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ if (a20_0 != null) {
+ if (a20_0 != null) {
+ Object value = a20_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.CLASS_METHOD__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_11_0_0_1, a20_0, true);
+ copyLocalizationInfos(a20_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3469);
+ addExpectedElement(3470);
+ addExpectedElement(3471);
+ addExpectedElement(3472);
+ addExpectedElement(3473);
+ addExpectedElement(3474);
+ addExpectedElement(3475);
+ addExpectedElement(3476);
+ addExpectedElement(3477);
+ addExpectedElement(3478);
+ addExpectedElement(3479);
+ addExpectedElement(3480);
+ addExpectedElement(3481);
+ addExpectedElement(3482);
+ addExpectedElement(3483);
+ addExpectedElement(3484);
+ addExpectedElement(3485);
+ addExpectedElement(3486);
+ addExpectedElement(3487);
+ addExpectedElement(3488);
+ addExpectedElement(3489);
+ addExpectedElement(3490);
+ addExpectedElement(3491);
+ addExpectedElement(3492);
+ addExpectedElement(3493);
+ addExpectedElement(3494);
+ addExpectedElement(3495);
+ addExpectedElement(3496);
+ addExpectedElement(3497);
+ addExpectedElement(3498);
+ addExpectedElement(3499);
+ addExpectedElement(3500);
+ addExpectedElement(3501);
+ addExpectedElement(3502);
+ addExpectedElement(3503);
+ addExpectedElement(3504);
+ addExpectedElement(3505);
+ addExpectedElement(3506);
+ addExpectedElement(3507);
+ addExpectedElement(3508);
+ addExpectedElement(3509);
+ addExpectedElement(3510);
+ addExpectedElement(3511);
+ addExpectedElement(3512);
+ addExpectedElement(3513);
+ addExpectedElement(3514);
+ addExpectedElement(3515);
+ addExpectedElement(3516);
+ addExpectedElement(3517);
+ addExpectedElement(3518);
+ addExpectedElement(3519);
+ addExpectedElement(3520);
+ addExpectedElement(3521);
+ addExpectedElement(3522);
+ addExpectedElement(3523);
+ addExpectedElement(3524);
+ addExpectedElement(3525);
+ addExpectedElement(3526);
+ addExpectedElement(3527);
+ addExpectedElement(3528);
+ addExpectedElement(3529);
+ addExpectedElement(3530);
+ addExpectedElement(3531);
+ addExpectedElement(3532);
+ addExpectedElement(3533);
+ addExpectedElement(3534);
+ addExpectedElement(3535);
+ addExpectedElement(3536);
+ addExpectedElement(3537);
+ addExpectedElement(3538);
+ addExpectedElement(3539);
+ addExpectedElement(3540);
+ addExpectedElement(3541);
+ addExpectedElement(3542);
+ addExpectedElement(3543);
+ addExpectedElement(3544);
+ addExpectedElement(3545);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop86;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3546);
+ addExpectedElement(3547);
+ addExpectedElement(3548);
+ addExpectedElement(3549);
+ addExpectedElement(3550);
+ addExpectedElement(3551);
+ addExpectedElement(3552);
+ addExpectedElement(3553);
+ addExpectedElement(3554);
+ addExpectedElement(3555);
+ addExpectedElement(3556);
+ addExpectedElement(3557);
+ addExpectedElement(3558);
+ addExpectedElement(3559);
+ addExpectedElement(3560);
+ addExpectedElement(3561);
+ addExpectedElement(3562);
+ addExpectedElement(3563);
+ addExpectedElement(3564);
+ addExpectedElement(3565);
+ addExpectedElement(3566);
+ addExpectedElement(3567);
+ addExpectedElement(3568);
+ addExpectedElement(3569);
+ addExpectedElement(3570);
+ addExpectedElement(3571);
+ addExpectedElement(3572);
+ addExpectedElement(3573);
+ addExpectedElement(3574);
+ addExpectedElement(3575);
+ addExpectedElement(3576);
+ addExpectedElement(3577);
+ addExpectedElement(3578);
+ addExpectedElement(3579);
+ addExpectedElement(3580);
+ addExpectedElement(3581);
+ addExpectedElement(3582);
+ addExpectedElement(3583);
+ addExpectedElement(3584);
+ addExpectedElement(3585);
+ addExpectedElement(3586);
+ addExpectedElement(3587);
+ addExpectedElement(3588);
+ addExpectedElement(3589);
+ addExpectedElement(3590);
+ addExpectedElement(3591);
+ addExpectedElement(3592);
+ addExpectedElement(3593);
+ addExpectedElement(3594);
+ addExpectedElement(3595);
+ addExpectedElement(3596);
+ addExpectedElement(3597);
+ addExpectedElement(3598);
+ addExpectedElement(3599);
+ addExpectedElement(3600);
+ addExpectedElement(3601);
+ addExpectedElement(3602);
+ addExpectedElement(3603);
+ addExpectedElement(3604);
+ addExpectedElement(3605);
+ addExpectedElement(3606);
+ addExpectedElement(3607);
+ addExpectedElement(3608);
+ addExpectedElement(3609);
+ addExpectedElement(3610);
+ addExpectedElement(3611);
+ addExpectedElement(3612);
+ addExpectedElement(3613);
+ addExpectedElement(3614);
+ addExpectedElement(3615);
+ addExpectedElement(3616);
+ addExpectedElement(3617);
+ addExpectedElement(3618);
+ addExpectedElement(3619);
+ addExpectedElement(3620);
+ addExpectedElement(3621);
+ addExpectedElement(3622);
+ }
+
+ a21=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_members_ClassMethod7654); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createClassMethod();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_21_0_0_13, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a21, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3623);
+ addExpectedElement(3624);
+ addExpectedElement(3625);
+ addExpectedElement(3626);
+ addExpectedElement(3627);
+ addExpectedElement(3628);
+ addExpectedElement(3629);
+ addExpectedElement(3630);
+ addExpectedElement(3631);
+ addExpectedElement(3632);
+ addExpectedElement(3633);
+ addExpectedElement(3634);
+ addExpectedElement(3635);
+ addExpectedElement(3636);
+ addExpectedElement(3637);
+ addExpectedElement(3638);
+ addExpectedElement(3639);
+ addExpectedElement(3640);
+ addExpectedElement(3641);
+ addExpectedElement(3642);
+ addExpectedElement(3643);
+ addExpectedElement(3644);
+ addExpectedElement(3645);
+ addExpectedElement(3646);
+ addExpectedElement(3647);
+ addExpectedElement(3648);
+ addExpectedElement(3649);
+ addExpectedElement(3650);
+ addExpectedElement(3651);
+ addExpectedElement(3652);
+ addExpectedElement(3653);
+ addExpectedElement(3654);
+ addExpectedElement(3655);
+ addExpectedElement(3656);
+ addExpectedElement(3657);
+ addExpectedElement(3658);
+ addExpectedElement(3659);
+ addExpectedElement(3660);
+ addExpectedElement(3661);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 23, parse_org_emftext_language_java_members_ClassMethod_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_ClassMethod"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_annotations_AnnotationAttribute"
+ // Java.g:9300:1: parse_org_emftext_language_java_annotations_AnnotationAttribute returns [org.emftext.language.java.annotations.AnnotationAttribute element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= 'default' (a20_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a21= ';' ;
+ public final org.emftext.language.java.annotations.AnnotationAttribute parse_org_emftext_language_java_annotations_AnnotationAttribute() throws RecognitionException {
+ org.emftext.language.java.annotations.AnnotationAttribute element = null;
+
+ int parse_org_emftext_language_java_annotations_AnnotationAttribute_StartIndex = input.index();
+
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a8=null;
+ Token a9=null;
+ Token a11=null;
+ Token a13=null;
+ Token a15=null;
+ Token a17=null;
+ Token a19=null;
+ Token a21=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a2_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a4_0 =null;
+
+ org.emftext.language.java.types.TypeReference a6_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a7_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a10_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a12_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a14_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a16_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a18_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a20_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return element; }
+
+ // Java.g:9303:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= 'default' (a20_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a21= ';' )
+ // Java.g:9304:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= 'default' (a20_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a21= ';'
+ {
+ // Java.g:9304:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop87:
+ do {
+ int alt87=2;
+ int LA87_0 = input.LA(1);
+
+ if ( (LA87_0==48||LA87_0==56||LA87_0==72||LA87_0==83||(LA87_0 >= 87 && LA87_0 <= 89)||(LA87_0 >= 92 && LA87_0 <= 93)||LA87_0==96||LA87_0==100||LA87_0==103) ) {
+ alt87=1;
+ }
+
+
+ switch (alt87) {
+ case 1 :
+ // Java.g:9305:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:9305:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:9306:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7692);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop87;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3662);
+ addExpectedElement(3663);
+ addExpectedElement(3664);
+ addExpectedElement(3665);
+ addExpectedElement(3666);
+ addExpectedElement(3667);
+ addExpectedElement(3668);
+ addExpectedElement(3669);
+ addExpectedElement(3670);
+ addExpectedElement(3671);
+ addExpectedElement(3672);
+ addExpectedElement(3673);
+ addExpectedElement(3674);
+ addExpectedElement(3675);
+ addExpectedElement(3676);
+ addExpectedElement(3677);
+ addExpectedElement(3678);
+ addExpectedElement(3679);
+ addExpectedElement(3680);
+ addExpectedElement(3681);
+ addExpectedElement(3682);
+ addExpectedElement(3683);
+ addExpectedElement(3684);
+ addExpectedElement(3685);
+ }
+
+ // Java.g:9355:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )?
+ int alt89=2;
+ int LA89_0 = input.LA(1);
+
+ if ( (LA89_0==43) ) {
+ alt89=1;
+ }
+ switch (alt89) {
+ case 1 :
+ // Java.g:9356:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ {
+ // Java.g:9356:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ // Java.g:9357:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7727); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3686);
+ }
+
+ // Java.g:9371:4: (a2_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:9372:5: a2_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7753);
+ a2_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3687);
+ addExpectedElement(3688);
+ }
+
+ // Java.g:9398:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )*
+ loop88:
+ do {
+ int alt88=2;
+ int LA88_0 = input.LA(1);
+
+ if ( (LA88_0==33) ) {
+ alt88=1;
+ }
+
+
+ switch (alt88) {
+ case 1 :
+ // Java.g:9399:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ {
+ // Java.g:9399:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ // Java.g:9400:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7794); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3689);
+ }
+
+ // Java.g:9414:6: (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:9415:7: a4_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7828);
+ a4_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__TYPE_PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3690);
+ addExpectedElement(3691);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop88;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3692);
+ addExpectedElement(3693);
+ }
+
+ a5=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7889); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_1_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3694);
+ addExpectedElement(3695);
+ addExpectedElement(3696);
+ addExpectedElement(3697);
+ addExpectedElement(3698);
+ addExpectedElement(3699);
+ addExpectedElement(3700);
+ addExpectedElement(3701);
+ addExpectedElement(3702);
+ addExpectedElement(3703);
+ addExpectedElement(3704);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3705);
+ addExpectedElement(3706);
+ addExpectedElement(3707);
+ addExpectedElement(3708);
+ addExpectedElement(3709);
+ addExpectedElement(3710);
+ addExpectedElement(3711);
+ addExpectedElement(3712);
+ addExpectedElement(3713);
+ addExpectedElement(3714);
+ addExpectedElement(3715);
+ }
+
+ // Java.g:9490:2: ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:9491:3: (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ // Java.g:9491:3: (a6_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:9492:4: a6_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7931);
+ a6_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_2_0_0_0, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3716);
+ addExpectedElement(3717);
+ }
+
+ // Java.g:9518:3: ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop90:
+ do {
+ int alt90=2;
+ int LA90_0 = input.LA(1);
+
+ if ( (LA90_0==49) ) {
+ alt90=1;
+ }
+
+
+ switch (alt90) {
+ case 1 :
+ // Java.g:9519:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:9519:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:9520:5: a7_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7965);
+ a7_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_2_0_0_1, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop90;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3718);
+ addExpectedElement(3719);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3720);
+ }
+
+ // Java.g:9553:2: (a8= IDENTIFIER )
+ // Java.g:9554:3: a8= IDENTIFIER
+ {
+ a8=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8009); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a8 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_3, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3721);
+ }
+
+ a9=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8030); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3722);
+ addExpectedElement(3723);
+ addExpectedElement(3724);
+ addExpectedElement(3725);
+ addExpectedElement(3726);
+ addExpectedElement(3727);
+ addExpectedElement(3728);
+ addExpectedElement(3729);
+ addExpectedElement(3730);
+ addExpectedElement(3731);
+ addExpectedElement(3732);
+ addExpectedElement(3733);
+ addExpectedElement(3734);
+ addExpectedElement(3735);
+ addExpectedElement(3736);
+ addExpectedElement(3737);
+ addExpectedElement(3738);
+ addExpectedElement(3739);
+ addExpectedElement(3740);
+ addExpectedElement(3741);
+ addExpectedElement(3742);
+ addExpectedElement(3743);
+ addExpectedElement(3744);
+ addExpectedElement(3745);
+ }
+
+ // Java.g:9626:2: ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )?
+ int alt92=2;
+ int LA92_0 = input.LA(1);
+
+ if ( (LA92_0==IDENTIFIER||LA92_0==48||LA92_0==56||LA92_0==58||LA92_0==60||LA92_0==63||LA92_0==68||LA92_0==72||LA92_0==74||LA92_0==80||(LA92_0 >= 82 && LA92_0 <= 83)||(LA92_0 >= 87 && LA92_0 <= 89)||(LA92_0 >= 91 && LA92_0 <= 93)||LA92_0==96||LA92_0==100||(LA92_0 >= 102 && LA92_0 <= 103)) ) {
+ alt92=1;
+ }
+ switch (alt92) {
+ case 1 :
+ // Java.g:9627:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ {
+ // Java.g:9627:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ // Java.g:9628:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ {
+ // Java.g:9628:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:9629:5: a10_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8059);
+ a10_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a10_0 != null) {
+ if (a10_0 != null) {
+ Object value = a10_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_5_0_0_0, a10_0, true);
+ copyLocalizationInfos(a10_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3746);
+ addExpectedElement(3747);
+ }
+
+ // Java.g:9655:4: ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ loop91:
+ do {
+ int alt91=2;
+ int LA91_0 = input.LA(1);
+
+ if ( (LA91_0==33) ) {
+ alt91=1;
+ }
+
+
+ switch (alt91) {
+ case 1 :
+ // Java.g:9656:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ {
+ // Java.g:9656:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ // Java.g:9657:6: a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ {
+ a11=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8100); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_5_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3748);
+ addExpectedElement(3749);
+ addExpectedElement(3750);
+ addExpectedElement(3751);
+ addExpectedElement(3752);
+ addExpectedElement(3753);
+ addExpectedElement(3754);
+ addExpectedElement(3755);
+ addExpectedElement(3756);
+ addExpectedElement(3757);
+ addExpectedElement(3758);
+ addExpectedElement(3759);
+ addExpectedElement(3760);
+ addExpectedElement(3761);
+ addExpectedElement(3762);
+ addExpectedElement(3763);
+ addExpectedElement(3764);
+ addExpectedElement(3765);
+ addExpectedElement(3766);
+ addExpectedElement(3767);
+ addExpectedElement(3768);
+ addExpectedElement(3769);
+ addExpectedElement(3770);
+ }
+
+ // Java.g:9693:6: (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:9694:7: a12_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8134);
+ a12_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a12_0 != null) {
+ if (a12_0 != null) {
+ Object value = a12_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__PARAMETERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_5_0_0_1_0_0_1, a12_0, true);
+ copyLocalizationInfos(a12_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3771);
+ addExpectedElement(3772);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop91;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3773);
+ addExpectedElement(3774);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3775);
+ }
+
+ a13=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8208); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a13, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3776);
+ addExpectedElement(3777);
+ addExpectedElement(3778);
+ }
+
+ // Java.g:9751:2: ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop93:
+ do {
+ int alt93=2;
+ int LA93_0 = input.LA(1);
+
+ if ( (LA93_0==49) ) {
+ alt93=1;
+ }
+
+
+ switch (alt93) {
+ case 1 :
+ // Java.g:9752:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:9752:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:9753:4: a14_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8231);
+ a14_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a14_0 != null) {
+ if (a14_0 != null) {
+ Object value = a14_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_7, a14_0, true);
+ copyLocalizationInfos(a14_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop93;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3779);
+ addExpectedElement(3780);
+ addExpectedElement(3781);
+ }
+
+ // Java.g:9781:2: ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )?
+ int alt95=2;
+ int LA95_0 = input.LA(1);
+
+ if ( (LA95_0==99) ) {
+ alt95=1;
+ }
+ switch (alt95) {
+ case 1 :
+ // Java.g:9782:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ {
+ // Java.g:9782:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ // Java.g:9783:4: a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ {
+ a15=(Token)match(input,99,FOLLOW_99_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8266); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_8_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a15, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3782);
+ addExpectedElement(3783);
+ }
+
+ // Java.g:9798:4: (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:9799:5: a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8292);
+ a16_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a16_0 != null) {
+ if (a16_0 != null) {
+ Object value = a16_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_8_0_0_1, a16_0, true);
+ copyLocalizationInfos(a16_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3784);
+ addExpectedElement(3785);
+ }
+
+ // Java.g:9825:4: ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ loop94:
+ do {
+ int alt94=2;
+ int LA94_0 = input.LA(1);
+
+ if ( (LA94_0==33) ) {
+ alt94=1;
+ }
+
+
+ switch (alt94) {
+ case 1 :
+ // Java.g:9826:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ {
+ // Java.g:9826:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ // Java.g:9827:6: a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ {
+ a17=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8333); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_8_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a17, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3786);
+ addExpectedElement(3787);
+ }
+
+ // Java.g:9842:6: (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:9843:7: a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8367);
+ a18_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a18_0 != null) {
+ if (a18_0 != null) {
+ Object value = a18_0;
+ addObjectToList(element, org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__EXCEPTIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_8_0_0_2_0_0_1, a18_0, true);
+ copyLocalizationInfos(a18_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3788);
+ addExpectedElement(3789);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop94;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3790);
+ addExpectedElement(3791);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3792);
+ }
+
+ a19=(Token)match(input,66,FOLLOW_66_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8441); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_9, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a19, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3793);
+ addExpectedElement(3794);
+ addExpectedElement(3795);
+ addExpectedElement(3796);
+ addExpectedElement(3797);
+ addExpectedElement(3798);
+ addExpectedElement(3799);
+ addExpectedElement(3800);
+ addExpectedElement(3801);
+ addExpectedElement(3802);
+ addExpectedElement(3803);
+ addExpectedElement(3804);
+ addExpectedElement(3805);
+ addExpectedElement(3806);
+ addExpectedElement(3807);
+ addExpectedElement(3808);
+ addExpectedElement(3809);
+ addExpectedElement(3810);
+ addExpectedElement(3811);
+ addExpectedElement(3812);
+ addExpectedElement(3813);
+ addExpectedElement(3814);
+ addExpectedElement(3815);
+ addExpectedElement(3816);
+ addExpectedElement(3817);
+ addExpectedElement(3818);
+ addExpectedElement(3819);
+ addExpectedElement(3820);
+ addExpectedElement(3821);
+ addExpectedElement(3822);
+ addExpectedElement(3823);
+ addExpectedElement(3824);
+ addExpectedElement(3825);
+ addExpectedElement(3826);
+ addExpectedElement(3827);
+ addExpectedElement(3828);
+ addExpectedElement(3829);
+ addExpectedElement(3830);
+ addExpectedElement(3831);
+ addExpectedElement(3832);
+ addExpectedElement(3833);
+ addExpectedElement(3834);
+ addExpectedElement(3835);
+ }
+
+ // Java.g:9940:2: (a20_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:9941:3: a20_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8459);
+ a20_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ if (a20_0 != null) {
+ if (a20_0 != null) {
+ Object value = a20_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.annotations.AnnotationsPackage.ANNOTATION_ATTRIBUTE__DEFAULT_VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_10, a20_0, true);
+ copyLocalizationInfos(a20_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3836);
+ }
+
+ a21=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8477); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_22_0_0_11, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a21, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3837);
+ addExpectedElement(3838);
+ addExpectedElement(3839);
+ addExpectedElement(3840);
+ addExpectedElement(3841);
+ addExpectedElement(3842);
+ addExpectedElement(3843);
+ addExpectedElement(3844);
+ addExpectedElement(3845);
+ addExpectedElement(3846);
+ addExpectedElement(3847);
+ addExpectedElement(3848);
+ addExpectedElement(3849);
+ addExpectedElement(3850);
+ addExpectedElement(3851);
+ addExpectedElement(3852);
+ addExpectedElement(3853);
+ addExpectedElement(3854);
+ addExpectedElement(3855);
+ addExpectedElement(3856);
+ addExpectedElement(3857);
+ addExpectedElement(3858);
+ addExpectedElement(3859);
+ addExpectedElement(3860);
+ addExpectedElement(3861);
+ addExpectedElement(3862);
+ addExpectedElement(3863);
+ addExpectedElement(3864);
+ addExpectedElement(3865);
+ addExpectedElement(3866);
+ addExpectedElement(3867);
+ addExpectedElement(3868);
+ addExpectedElement(3869);
+ addExpectedElement(3870);
+ addExpectedElement(3871);
+ addExpectedElement(3872);
+ addExpectedElement(3873);
+ addExpectedElement(3874);
+ addExpectedElement(3875);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 24, parse_org_emftext_language_java_annotations_AnnotationAttribute_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_annotations_AnnotationAttribute"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_parameters_OrdinaryParameter"
+ // Java.g:10020:1: parse_org_emftext_language_java_parameters_OrdinaryParameter returns [org.emftext.language.java.parameters.OrdinaryParameter element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ;
+ public final org.emftext.language.java.parameters.OrdinaryParameter parse_org_emftext_language_java_parameters_OrdinaryParameter() throws RecognitionException {
+ org.emftext.language.java.parameters.OrdinaryParameter element = null;
+
+ int parse_org_emftext_language_java_parameters_OrdinaryParameter_StartIndex = input.index();
+
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a8=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.types.TypeReference a1_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a6_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a9_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return element; }
+
+ // Java.g:10023:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:10024:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ // Java.g:10024:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop96:
+ do {
+ int alt96=2;
+ int LA96_0 = input.LA(1);
+
+ if ( (LA96_0==48||LA96_0==56||LA96_0==72||LA96_0==83||(LA96_0 >= 87 && LA96_0 <= 89)||(LA96_0 >= 92 && LA96_0 <= 93)||LA96_0==96||LA96_0==100||LA96_0==103) ) {
+ alt96=1;
+ }
+
+
+ switch (alt96) {
+ case 1 :
+ // Java.g:10025:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:10025:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:10026:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8515);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop96;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3876);
+ addExpectedElement(3877);
+ addExpectedElement(3878);
+ addExpectedElement(3879);
+ addExpectedElement(3880);
+ addExpectedElement(3881);
+ addExpectedElement(3882);
+ addExpectedElement(3883);
+ addExpectedElement(3884);
+ addExpectedElement(3885);
+ addExpectedElement(3886);
+ addExpectedElement(3887);
+ addExpectedElement(3888);
+ addExpectedElement(3889);
+ addExpectedElement(3890);
+ addExpectedElement(3891);
+ addExpectedElement(3892);
+ addExpectedElement(3893);
+ addExpectedElement(3894);
+ addExpectedElement(3895);
+ addExpectedElement(3896);
+ addExpectedElement(3897);
+ addExpectedElement(3898);
+ }
+
+ // Java.g:10074:2: (a1_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:10075:3: a1_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8545);
+ a1_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3899);
+ addExpectedElement(3900);
+ addExpectedElement(3901);
+ }
+
+ // Java.g:10102:2: ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop97:
+ do {
+ int alt97=2;
+ int LA97_0 = input.LA(1);
+
+ if ( (LA97_0==49) ) {
+ alt97=1;
+ }
+
+
+ switch (alt97) {
+ case 1 :
+ // Java.g:10103:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:10103:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:10104:4: a2_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8572);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop97;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3902);
+ addExpectedElement(3903);
+ addExpectedElement(3904);
+ }
+
+ // Java.g:10132:2: ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )?
+ int alt99=2;
+ int LA99_0 = input.LA(1);
+
+ if ( (LA99_0==43) ) {
+ alt99=1;
+ }
+ switch (alt99) {
+ case 1 :
+ // Java.g:10133:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ {
+ // Java.g:10133:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ // Java.g:10134:4: a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>'
+ {
+ a3=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8607); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3905);
+ addExpectedElement(3906);
+ addExpectedElement(3907);
+ addExpectedElement(3908);
+ addExpectedElement(3909);
+ addExpectedElement(3910);
+ addExpectedElement(3911);
+ addExpectedElement(3912);
+ addExpectedElement(3913);
+ addExpectedElement(3914);
+ addExpectedElement(3915);
+ addExpectedElement(3916);
+ addExpectedElement(3917);
+ addExpectedElement(3918);
+ }
+
+ // Java.g:10161:4: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:10162:5: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8633);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_3_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3919);
+ addExpectedElement(3920);
+ }
+
+ // Java.g:10188:4: ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop98:
+ do {
+ int alt98=2;
+ int LA98_0 = input.LA(1);
+
+ if ( (LA98_0==33) ) {
+ alt98=1;
+ }
+
+
+ switch (alt98) {
+ case 1 :
+ // Java.g:10189:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:10189:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:10190:6: a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a5=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8674); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_3_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3921);
+ addExpectedElement(3922);
+ addExpectedElement(3923);
+ addExpectedElement(3924);
+ addExpectedElement(3925);
+ addExpectedElement(3926);
+ addExpectedElement(3927);
+ addExpectedElement(3928);
+ addExpectedElement(3929);
+ addExpectedElement(3930);
+ addExpectedElement(3931);
+ addExpectedElement(3932);
+ addExpectedElement(3933);
+ addExpectedElement(3934);
+ }
+
+ // Java.g:10217:6: (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:10218:7: a6_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8708);
+ a6_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_3_0_0_2_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3935);
+ addExpectedElement(3936);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop98;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3937);
+ addExpectedElement(3938);
+ }
+
+ a7=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8769); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3939);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3940);
+ }
+
+ // Java.g:10273:2: (a8= IDENTIFIER )
+ // Java.g:10274:3: a8= IDENTIFIER
+ {
+ a8=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8806); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ if (a8 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_4, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3941);
+ addExpectedElement(3942);
+ addExpectedElement(3943);
+ addExpectedElement(3944);
+ addExpectedElement(3945);
+ addExpectedElement(3946);
+ addExpectedElement(3947);
+ addExpectedElement(3948);
+ addExpectedElement(3949);
+ addExpectedElement(3950);
+ addExpectedElement(3951);
+ }
+
+ // Java.g:10319:2: ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop100:
+ do {
+ int alt100=2;
+ int LA100_0 = input.LA(1);
+
+ if ( (LA100_0==49) ) {
+ alt100=1;
+ }
+
+
+ switch (alt100) {
+ case 1 :
+ // Java.g:10320:3: (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:10320:3: (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:10321:4: a9_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8836);
+ a9_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createOrdinaryParameter();
+ startIncompleteElement(element);
+ }
+ if (a9_0 != null) {
+ if (a9_0 != null) {
+ Object value = a9_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.ORDINARY_PARAMETER__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_23_0_0_5, a9_0, true);
+ copyLocalizationInfos(a9_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop100;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3952);
+ addExpectedElement(3953);
+ addExpectedElement(3954);
+ addExpectedElement(3955);
+ addExpectedElement(3956);
+ addExpectedElement(3957);
+ addExpectedElement(3958);
+ addExpectedElement(3959);
+ addExpectedElement(3960);
+ addExpectedElement(3961);
+ addExpectedElement(3962);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 25, parse_org_emftext_language_java_parameters_OrdinaryParameter_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_parameters_OrdinaryParameter"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_parameters_VariableLengthParameter"
+ // Java.g:10359:1: parse_org_emftext_language_java_parameters_VariableLengthParameter returns [org.emftext.language.java.parameters.VariableLengthParameter element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? a8= '...' (a9= IDENTIFIER ) ;
+ public final org.emftext.language.java.parameters.VariableLengthParameter parse_org_emftext_language_java_parameters_VariableLengthParameter() throws RecognitionException {
+ org.emftext.language.java.parameters.VariableLengthParameter element = null;
+
+ int parse_org_emftext_language_java_parameters_VariableLengthParameter_StartIndex = input.index();
+
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a8=null;
+ Token a9=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.types.TypeReference a1_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a6_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return element; }
+
+ // Java.g:10362:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? a8= '...' (a9= IDENTIFIER ) )
+ // Java.g:10363:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? a8= '...' (a9= IDENTIFIER )
+ {
+ // Java.g:10363:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop101:
+ do {
+ int alt101=2;
+ int LA101_0 = input.LA(1);
+
+ if ( (LA101_0==48||LA101_0==56||LA101_0==72||LA101_0==83||(LA101_0 >= 87 && LA101_0 <= 89)||(LA101_0 >= 92 && LA101_0 <= 93)||LA101_0==96||LA101_0==100||LA101_0==103) ) {
+ alt101=1;
+ }
+
+
+ switch (alt101) {
+ case 1 :
+ // Java.g:10364:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:10364:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:10365:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8886);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop101;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3963);
+ addExpectedElement(3964);
+ addExpectedElement(3965);
+ addExpectedElement(3966);
+ addExpectedElement(3967);
+ addExpectedElement(3968);
+ addExpectedElement(3969);
+ addExpectedElement(3970);
+ addExpectedElement(3971);
+ addExpectedElement(3972);
+ addExpectedElement(3973);
+ addExpectedElement(3974);
+ addExpectedElement(3975);
+ addExpectedElement(3976);
+ addExpectedElement(3977);
+ addExpectedElement(3978);
+ addExpectedElement(3979);
+ addExpectedElement(3980);
+ addExpectedElement(3981);
+ addExpectedElement(3982);
+ addExpectedElement(3983);
+ addExpectedElement(3984);
+ addExpectedElement(3985);
+ }
+
+ // Java.g:10413:2: (a1_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:10414:3: a1_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8916);
+ a1_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3986);
+ addExpectedElement(3987);
+ addExpectedElement(3988);
+ }
+
+ // Java.g:10441:2: ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop102:
+ do {
+ int alt102=2;
+ int LA102_0 = input.LA(1);
+
+ if ( (LA102_0==49) ) {
+ alt102=1;
+ }
+
+
+ switch (alt102) {
+ case 1 :
+ // Java.g:10442:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:10442:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:10443:4: a2_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8943);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop102;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3989);
+ addExpectedElement(3990);
+ addExpectedElement(3991);
+ }
+
+ // Java.g:10471:2: ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )?
+ int alt104=2;
+ int LA104_0 = input.LA(1);
+
+ if ( (LA104_0==43) ) {
+ alt104=1;
+ }
+ switch (alt104) {
+ case 1 :
+ // Java.g:10472:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ {
+ // Java.g:10472:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ // Java.g:10473:4: a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>'
+ {
+ a3=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8978); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(3992);
+ addExpectedElement(3993);
+ addExpectedElement(3994);
+ addExpectedElement(3995);
+ addExpectedElement(3996);
+ addExpectedElement(3997);
+ addExpectedElement(3998);
+ addExpectedElement(3999);
+ addExpectedElement(4000);
+ addExpectedElement(4001);
+ addExpectedElement(4002);
+ addExpectedElement(4003);
+ addExpectedElement(4004);
+ addExpectedElement(4005);
+ }
+
+ // Java.g:10500:4: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:10501:5: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9004);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_3_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4006);
+ addExpectedElement(4007);
+ }
+
+ // Java.g:10527:4: ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop103:
+ do {
+ int alt103=2;
+ int LA103_0 = input.LA(1);
+
+ if ( (LA103_0==33) ) {
+ alt103=1;
+ }
+
+
+ switch (alt103) {
+ case 1 :
+ // Java.g:10528:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:10528:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:10529:6: a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a5=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9045); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_3_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4008);
+ addExpectedElement(4009);
+ addExpectedElement(4010);
+ addExpectedElement(4011);
+ addExpectedElement(4012);
+ addExpectedElement(4013);
+ addExpectedElement(4014);
+ addExpectedElement(4015);
+ addExpectedElement(4016);
+ addExpectedElement(4017);
+ addExpectedElement(4018);
+ addExpectedElement(4019);
+ addExpectedElement(4020);
+ addExpectedElement(4021);
+ }
+
+ // Java.g:10556:6: (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:10557:7: a6_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9079);
+ a6_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_3_0_0_2_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4022);
+ addExpectedElement(4023);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop103;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4024);
+ addExpectedElement(4025);
+ }
+
+ a7=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9140); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4026);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4027);
+ }
+
+ a8=(Token)match(input,38,FOLLOW_38_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9173); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a8, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4028);
+ }
+
+ // Java.g:10626:2: (a9= IDENTIFIER )
+ // Java.g:10627:3: a9= IDENTIFIER
+ {
+ a9=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9191); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.parameters.ParametersFactory.eINSTANCE.createVariableLengthParameter();
+ startIncompleteElement(element);
+ }
+ if (a9 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a9.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a9).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a9).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a9).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a9).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.parameters.ParametersPackage.VARIABLE_LENGTH_PARAMETER__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_24_0_0_5, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a9, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4029);
+ addExpectedElement(4030);
+ addExpectedElement(4031);
+ addExpectedElement(4032);
+ addExpectedElement(4033);
+ addExpectedElement(4034);
+ addExpectedElement(4035);
+ addExpectedElement(4036);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 26, parse_org_emftext_language_java_parameters_VariableLengthParameter_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_parameters_VariableLengthParameter"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_variables_LocalVariable"
+ // Java.g:10671:1: parse_org_emftext_language_java_variables_LocalVariable returns [org.emftext.language.java.variables.LocalVariable element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ( (a12= ',' (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable ) ) )* ;
+ public final org.emftext.language.java.variables.LocalVariable parse_org_emftext_language_java_variables_LocalVariable() throws RecognitionException {
+ org.emftext.language.java.variables.LocalVariable element = null;
+
+ int parse_org_emftext_language_java_variables_LocalVariable_StartIndex = input.index();
+
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a8=null;
+ Token a10=null;
+ Token a12=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.types.TypeReference a1_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a6_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a9_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a11_0 =null;
+
+ org.emftext.language.java.variables.AdditionalLocalVariable a13_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return element; }
+
+ // Java.g:10674:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ( (a12= ',' (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable ) ) )* )
+ // Java.g:10675:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ( (a12= ',' (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable ) ) )*
+ {
+ // Java.g:10675:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop105:
+ do {
+ int alt105=2;
+ int LA105_0 = input.LA(1);
+
+ if ( (LA105_0==48||LA105_0==56||LA105_0==72||LA105_0==83||(LA105_0 >= 87 && LA105_0 <= 89)||(LA105_0 >= 92 && LA105_0 <= 93)||LA105_0==96||LA105_0==100||LA105_0==103) ) {
+ alt105=1;
+ }
+
+
+ switch (alt105) {
+ case 1 :
+ // Java.g:10676:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:10676:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:10677:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_variables_LocalVariable9236);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop105;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4037);
+ addExpectedElement(4038);
+ addExpectedElement(4039);
+ addExpectedElement(4040);
+ addExpectedElement(4041);
+ addExpectedElement(4042);
+ addExpectedElement(4043);
+ addExpectedElement(4044);
+ addExpectedElement(4045);
+ addExpectedElement(4046);
+ addExpectedElement(4047);
+ addExpectedElement(4048);
+ addExpectedElement(4049);
+ addExpectedElement(4050);
+ addExpectedElement(4051);
+ addExpectedElement(4052);
+ addExpectedElement(4053);
+ addExpectedElement(4054);
+ addExpectedElement(4055);
+ addExpectedElement(4056);
+ addExpectedElement(4057);
+ addExpectedElement(4058);
+ addExpectedElement(4059);
+ }
+
+ // Java.g:10725:2: (a1_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:10726:3: a1_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_variables_LocalVariable9266);
+ a1_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4060);
+ addExpectedElement(4061);
+ addExpectedElement(4062);
+ }
+
+ // Java.g:10753:2: ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop106:
+ do {
+ int alt106=2;
+ int LA106_0 = input.LA(1);
+
+ if ( (LA106_0==49) ) {
+ alt106=1;
+ }
+
+
+ switch (alt106) {
+ case 1 :
+ // Java.g:10754:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:10754:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:10755:4: a2_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_variables_LocalVariable9293);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop106;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4063);
+ addExpectedElement(4064);
+ addExpectedElement(4065);
+ }
+
+ // Java.g:10783:2: ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )?
+ int alt108=2;
+ int LA108_0 = input.LA(1);
+
+ if ( (LA108_0==43) ) {
+ alt108=1;
+ }
+ switch (alt108) {
+ case 1 :
+ // Java.g:10784:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ {
+ // Java.g:10784:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ // Java.g:10785:4: a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>'
+ {
+ a3=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_variables_LocalVariable9328); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4066);
+ addExpectedElement(4067);
+ addExpectedElement(4068);
+ addExpectedElement(4069);
+ addExpectedElement(4070);
+ addExpectedElement(4071);
+ addExpectedElement(4072);
+ addExpectedElement(4073);
+ addExpectedElement(4074);
+ addExpectedElement(4075);
+ addExpectedElement(4076);
+ addExpectedElement(4077);
+ addExpectedElement(4078);
+ addExpectedElement(4079);
+ }
+
+ // Java.g:10812:4: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:10813:5: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_variables_LocalVariable9354);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_3_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4080);
+ addExpectedElement(4081);
+ }
+
+ // Java.g:10839:4: ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop107:
+ do {
+ int alt107=2;
+ int LA107_0 = input.LA(1);
+
+ if ( (LA107_0==33) ) {
+ alt107=1;
+ }
+
+
+ switch (alt107) {
+ case 1 :
+ // Java.g:10840:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:10840:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:10841:6: a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a5=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_variables_LocalVariable9395); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_3_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4082);
+ addExpectedElement(4083);
+ addExpectedElement(4084);
+ addExpectedElement(4085);
+ addExpectedElement(4086);
+ addExpectedElement(4087);
+ addExpectedElement(4088);
+ addExpectedElement(4089);
+ addExpectedElement(4090);
+ addExpectedElement(4091);
+ addExpectedElement(4092);
+ addExpectedElement(4093);
+ addExpectedElement(4094);
+ addExpectedElement(4095);
+ }
+
+ // Java.g:10868:6: (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:10869:7: a6_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_variables_LocalVariable9429);
+ a6_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_3_0_0_2_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4096);
+ addExpectedElement(4097);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop107;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4098);
+ addExpectedElement(4099);
+ }
+
+ a7=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_variables_LocalVariable9490); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4100);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4101);
+ }
+
+ // Java.g:10924:2: (a8= IDENTIFIER )
+ // Java.g:10925:3: a8= IDENTIFIER
+ {
+ a8=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_variables_LocalVariable9527); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a8 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_4, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4102);
+ addExpectedElement(4103);
+ addExpectedElement(4104);
+ addExpectedElement(4105);
+ addExpectedElement(4106);
+ }
+
+ // Java.g:10964:2: ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop109:
+ do {
+ int alt109=2;
+ int LA109_0 = input.LA(1);
+
+ if ( (LA109_0==49) ) {
+ alt109=1;
+ }
+
+
+ switch (alt109) {
+ case 1 :
+ // Java.g:10965:3: (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:10965:3: (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:10966:4: a9_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_variables_LocalVariable9557);
+ a9_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a9_0 != null) {
+ if (a9_0 != null) {
+ Object value = a9_0;
+ addObjectToList(element, org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_5, a9_0, true);
+ copyLocalizationInfos(a9_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop109;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4107);
+ addExpectedElement(4108);
+ addExpectedElement(4109);
+ addExpectedElement(4110);
+ addExpectedElement(4111);
+ }
+
+ // Java.g:10996:2: ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ int alt110=2;
+ int LA110_0 = input.LA(1);
+
+ if ( (LA110_0==44) ) {
+ alt110=1;
+ }
+ switch (alt110) {
+ case 1 :
+ // Java.g:10997:3: (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:10997:3: (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:10998:4: a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a10=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_variables_LocalVariable9592); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_6_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4112);
+ addExpectedElement(4113);
+ addExpectedElement(4114);
+ addExpectedElement(4115);
+ addExpectedElement(4116);
+ addExpectedElement(4117);
+ addExpectedElement(4118);
+ addExpectedElement(4119);
+ addExpectedElement(4120);
+ addExpectedElement(4121);
+ addExpectedElement(4122);
+ addExpectedElement(4123);
+ addExpectedElement(4124);
+ addExpectedElement(4125);
+ addExpectedElement(4126);
+ addExpectedElement(4127);
+ addExpectedElement(4128);
+ addExpectedElement(4129);
+ addExpectedElement(4130);
+ addExpectedElement(4131);
+ addExpectedElement(4132);
+ addExpectedElement(4133);
+ addExpectedElement(4134);
+ addExpectedElement(4135);
+ addExpectedElement(4136);
+ addExpectedElement(4137);
+ addExpectedElement(4138);
+ addExpectedElement(4139);
+ addExpectedElement(4140);
+ addExpectedElement(4141);
+ addExpectedElement(4142);
+ addExpectedElement(4143);
+ addExpectedElement(4144);
+ addExpectedElement(4145);
+ addExpectedElement(4146);
+ addExpectedElement(4147);
+ addExpectedElement(4148);
+ addExpectedElement(4149);
+ addExpectedElement(4150);
+ addExpectedElement(4151);
+ addExpectedElement(4152);
+ addExpectedElement(4153);
+ addExpectedElement(4154);
+ }
+
+ // Java.g:11054:4: (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:11055:5: a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_variables_LocalVariable9618);
+ a11_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a11_0 != null) {
+ if (a11_0 != null) {
+ Object value = a11_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__INITIAL_VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_6_0_0_3, a11_0, true);
+ copyLocalizationInfos(a11_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4155);
+ addExpectedElement(4156);
+ addExpectedElement(4157);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4158);
+ addExpectedElement(4159);
+ addExpectedElement(4160);
+ }
+
+ // Java.g:11091:2: ( (a12= ',' (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable ) ) )*
+ loop111:
+ do {
+ int alt111=2;
+ int LA111_0 = input.LA(1);
+
+ if ( (LA111_0==33) ) {
+ alt111=1;
+ }
+
+
+ switch (alt111) {
+ case 1 :
+ // Java.g:11092:3: (a12= ',' (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable ) )
+ {
+ // Java.g:11092:3: (a12= ',' (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable ) )
+ // Java.g:11093:4: a12= ',' (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable )
+ {
+ a12=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_variables_LocalVariable9668); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_7_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a12, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4161);
+ }
+
+ // Java.g:11107:4: (a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable )
+ // Java.g:11108:5: a13_0= parse_org_emftext_language_java_variables_AdditionalLocalVariable
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_variables_AdditionalLocalVariable_in_parse_org_emftext_language_java_variables_LocalVariable9694);
+ a13_0=parse_org_emftext_language_java_variables_AdditionalLocalVariable();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a13_0 != null) {
+ if (a13_0 != null) {
+ Object value = a13_0;
+ addObjectToList(element, org.emftext.language.java.variables.VariablesPackage.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_25_0_0_7_0_0_1, a13_0, true);
+ copyLocalizationInfos(a13_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4162);
+ addExpectedElement(4163);
+ addExpectedElement(4164);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop111;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4165);
+ addExpectedElement(4166);
+ addExpectedElement(4167);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 27, parse_org_emftext_language_java_variables_LocalVariable_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_variables_LocalVariable"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_LocalVariableStatement"
+ // Java.g:11146:1: parse_org_emftext_language_java_statements_LocalVariableStatement returns [org.emftext.language.java.statements.LocalVariableStatement element = null] : (a0_0= parse_org_emftext_language_java_variables_LocalVariable ) a1= ';' ;
+ public final org.emftext.language.java.statements.LocalVariableStatement parse_org_emftext_language_java_statements_LocalVariableStatement() throws RecognitionException {
+ org.emftext.language.java.statements.LocalVariableStatement element = null;
+
+ int parse_org_emftext_language_java_statements_LocalVariableStatement_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.variables.LocalVariable a0_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return element; }
+
+ // Java.g:11149:2: ( (a0_0= parse_org_emftext_language_java_variables_LocalVariable ) a1= ';' )
+ // Java.g:11150:2: (a0_0= parse_org_emftext_language_java_variables_LocalVariable ) a1= ';'
+ {
+ // Java.g:11150:2: (a0_0= parse_org_emftext_language_java_variables_LocalVariable )
+ // Java.g:11151:3: a0_0= parse_org_emftext_language_java_variables_LocalVariable
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_variables_LocalVariable_in_parse_org_emftext_language_java_statements_LocalVariableStatement9754);
+ a0_0=parse_org_emftext_language_java_variables_LocalVariable();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createLocalVariableStatement();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.LOCAL_VARIABLE_STATEMENT__VARIABLE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_26_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4168);
+ }
+
+ a1=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_LocalVariableStatement9772); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createLocalVariableStatement();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_26_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4169);
+ addExpectedElement(4170);
+ addExpectedElement(4171);
+ addExpectedElement(4172);
+ addExpectedElement(4173);
+ addExpectedElement(4174);
+ addExpectedElement(4175);
+ addExpectedElement(4176);
+ addExpectedElement(4177);
+ addExpectedElement(4178);
+ addExpectedElement(4179);
+ addExpectedElement(4180);
+ addExpectedElement(4181);
+ addExpectedElement(4182);
+ addExpectedElement(4183);
+ addExpectedElement(4184);
+ addExpectedElement(4185);
+ addExpectedElement(4186);
+ addExpectedElement(4187);
+ addExpectedElement(4188);
+ addExpectedElement(4189);
+ addExpectedElement(4190);
+ addExpectedElement(4191);
+ addExpectedElement(4192);
+ addExpectedElement(4193);
+ addExpectedElement(4194);
+ addExpectedElement(4195);
+ addExpectedElement(4196);
+ addExpectedElement(4197);
+ addExpectedElement(4198);
+ addExpectedElement(4199);
+ addExpectedElement(4200);
+ addExpectedElement(4201);
+ addExpectedElement(4202);
+ addExpectedElement(4203);
+ addExpectedElement(4204);
+ addExpectedElement(4205);
+ addExpectedElement(4206);
+ addExpectedElement(4207);
+ addExpectedElement(4208);
+ addExpectedElement(4209);
+ addExpectedElement(4210);
+ addExpectedElement(4211);
+ addExpectedElement(4212);
+ addExpectedElement(4213);
+ addExpectedElement(4214);
+ addExpectedElement(4215);
+ addExpectedElement(4216);
+ addExpectedElement(4217);
+ addExpectedElement(4218);
+ addExpectedElement(4219);
+ addExpectedElement(4220);
+ addExpectedElement(4221);
+ addExpectedElement(4222);
+ addExpectedElement(4223);
+ addExpectedElement(4224);
+ addExpectedElement(4225);
+ addExpectedElement(4226);
+ addExpectedElement(4227);
+ addExpectedElement(4228);
+ addExpectedElement(4229);
+ addExpectedElement(4230);
+ addExpectedElement(4231);
+ addExpectedElement(4232);
+ addExpectedElement(4233);
+ addExpectedElement(4234);
+ addExpectedElement(4235);
+ addExpectedElement(4236);
+ addExpectedElement(4237);
+ addExpectedElement(4238);
+ addExpectedElement(4239);
+ addExpectedElement(4240);
+ addExpectedElement(4241);
+ addExpectedElement(4242);
+ addExpectedElement(4243);
+ addExpectedElement(4244);
+ addExpectedElement(4245);
+ addExpectedElement(4246);
+ addExpectedElement(4247);
+ addExpectedElement(4248);
+ addExpectedElement(4249);
+ addExpectedElement(4250);
+ addExpectedElement(4251);
+ addExpectedElement(4252);
+ addExpectedElement(4253);
+ addExpectedElement(4254);
+ addExpectedElement(4255);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 28, parse_org_emftext_language_java_statements_LocalVariableStatement_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_LocalVariableStatement"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_variables_AdditionalLocalVariable"
+ // Java.g:11278:1: parse_org_emftext_language_java_variables_AdditionalLocalVariable returns [org.emftext.language.java.variables.AdditionalLocalVariable element = null] : (a0= IDENTIFIER ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ;
+ public final org.emftext.language.java.variables.AdditionalLocalVariable parse_org_emftext_language_java_variables_AdditionalLocalVariable() throws RecognitionException {
+ org.emftext.language.java.variables.AdditionalLocalVariable element = null;
+
+ int parse_org_emftext_language_java_variables_AdditionalLocalVariable_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.arrays.ArrayDimension a1_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return element; }
+
+ // Java.g:11281:2: ( (a0= IDENTIFIER ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? )
+ // Java.g:11282:2: (a0= IDENTIFIER ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ {
+ // Java.g:11282:2: (a0= IDENTIFIER )
+ // Java.g:11283:3: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9805); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createAdditionalLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.ADDITIONAL_LOCAL_VARIABLE__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.ADDITIONAL_LOCAL_VARIABLE__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_27_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4256);
+ addExpectedElement(4257);
+ addExpectedElement(4258);
+ addExpectedElement(4259);
+ addExpectedElement(4260);
+ }
+
+ // Java.g:11322:2: ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop112:
+ do {
+ int alt112=2;
+ int LA112_0 = input.LA(1);
+
+ if ( (LA112_0==49) ) {
+ alt112=1;
+ }
+
+
+ switch (alt112) {
+ case 1 :
+ // Java.g:11323:3: (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:11323:3: (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:11324:4: a1_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9835);
+ a1_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createAdditionalLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.variables.VariablesPackage.ADDITIONAL_LOCAL_VARIABLE__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_27_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop112;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4261);
+ addExpectedElement(4262);
+ addExpectedElement(4263);
+ addExpectedElement(4264);
+ addExpectedElement(4265);
+ }
+
+ // Java.g:11354:2: ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ int alt113=2;
+ int LA113_0 = input.LA(1);
+
+ if ( (LA113_0==44) ) {
+ alt113=1;
+ }
+ switch (alt113) {
+ case 1 :
+ // Java.g:11355:3: (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:11355:3: (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:11356:4: a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a2=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9870); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createAdditionalLocalVariable();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_27_0_0_2_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4266);
+ addExpectedElement(4267);
+ addExpectedElement(4268);
+ addExpectedElement(4269);
+ addExpectedElement(4270);
+ addExpectedElement(4271);
+ addExpectedElement(4272);
+ addExpectedElement(4273);
+ addExpectedElement(4274);
+ addExpectedElement(4275);
+ addExpectedElement(4276);
+ addExpectedElement(4277);
+ addExpectedElement(4278);
+ addExpectedElement(4279);
+ addExpectedElement(4280);
+ addExpectedElement(4281);
+ addExpectedElement(4282);
+ addExpectedElement(4283);
+ addExpectedElement(4284);
+ addExpectedElement(4285);
+ addExpectedElement(4286);
+ addExpectedElement(4287);
+ addExpectedElement(4288);
+ addExpectedElement(4289);
+ addExpectedElement(4290);
+ addExpectedElement(4291);
+ addExpectedElement(4292);
+ addExpectedElement(4293);
+ addExpectedElement(4294);
+ addExpectedElement(4295);
+ addExpectedElement(4296);
+ addExpectedElement(4297);
+ addExpectedElement(4298);
+ addExpectedElement(4299);
+ addExpectedElement(4300);
+ addExpectedElement(4301);
+ addExpectedElement(4302);
+ addExpectedElement(4303);
+ addExpectedElement(4304);
+ addExpectedElement(4305);
+ addExpectedElement(4306);
+ addExpectedElement(4307);
+ addExpectedElement(4308);
+ }
+
+ // Java.g:11412:4: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:11413:5: a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9896);
+ a3_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.variables.VariablesFactory.eINSTANCE.createAdditionalLocalVariable();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.variables.VariablesPackage.ADDITIONAL_LOCAL_VARIABLE__INITIAL_VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_27_0_0_2_0_0_3, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4309);
+ addExpectedElement(4310);
+ addExpectedElement(4311);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4312);
+ addExpectedElement(4313);
+ addExpectedElement(4314);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 29, parse_org_emftext_language_java_variables_AdditionalLocalVariable_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_variables_AdditionalLocalVariable"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_Field"
+ // Java.g:11451:1: parse_org_emftext_language_java_members_Field returns [org.emftext.language.java.members.Field element = null] : ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ( (a12= ',' (a13_0= parse_org_emftext_language_java_members_AdditionalField ) ) )* a14= ';' ;
+ public final org.emftext.language.java.members.Field parse_org_emftext_language_java_members_Field() throws RecognitionException {
+ org.emftext.language.java.members.Field element = null;
+
+ int parse_org_emftext_language_java_members_Field_StartIndex = input.index();
+
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a8=null;
+ Token a10=null;
+ Token a12=null;
+ Token a14=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.types.TypeReference a1_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a6_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a9_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a11_0 =null;
+
+ org.emftext.language.java.members.AdditionalField a13_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return element; }
+
+ // Java.g:11454:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ( (a12= ',' (a13_0= parse_org_emftext_language_java_members_AdditionalField ) ) )* a14= ';' )
+ // Java.g:11455:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )? (a8= IDENTIFIER ) ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ( (a12= ',' (a13_0= parse_org_emftext_language_java_members_AdditionalField ) ) )* a14= ';'
+ {
+ // Java.g:11455:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop114:
+ do {
+ int alt114=2;
+ int LA114_0 = input.LA(1);
+
+ if ( (LA114_0==48||LA114_0==56||LA114_0==72||LA114_0==83||(LA114_0 >= 87 && LA114_0 <= 89)||(LA114_0 >= 92 && LA114_0 <= 93)||LA114_0==96||LA114_0==100||LA114_0==103) ) {
+ alt114=1;
+ }
+
+
+ switch (alt114) {
+ case 1 :
+ // Java.g:11456:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:11456:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:11457:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_Field9961);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.FIELD__ANNOTATIONS_AND_MODIFIERS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop114;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4315);
+ addExpectedElement(4316);
+ addExpectedElement(4317);
+ addExpectedElement(4318);
+ addExpectedElement(4319);
+ addExpectedElement(4320);
+ addExpectedElement(4321);
+ addExpectedElement(4322);
+ addExpectedElement(4323);
+ addExpectedElement(4324);
+ addExpectedElement(4325);
+ addExpectedElement(4326);
+ addExpectedElement(4327);
+ addExpectedElement(4328);
+ addExpectedElement(4329);
+ addExpectedElement(4330);
+ addExpectedElement(4331);
+ addExpectedElement(4332);
+ addExpectedElement(4333);
+ addExpectedElement(4334);
+ addExpectedElement(4335);
+ addExpectedElement(4336);
+ addExpectedElement(4337);
+ }
+
+ // Java.g:11505:2: (a1_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:11506:3: a1_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_members_Field9991);
+ a1_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4338);
+ addExpectedElement(4339);
+ addExpectedElement(4340);
+ }
+
+ // Java.g:11533:2: ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop115:
+ do {
+ int alt115=2;
+ int LA115_0 = input.LA(1);
+
+ if ( (LA115_0==49) ) {
+ alt115=1;
+ }
+
+
+ switch (alt115) {
+ case 1 :
+ // Java.g:11534:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:11534:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:11535:4: a2_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_Field10018);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.FIELD__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop115;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4341);
+ addExpectedElement(4342);
+ addExpectedElement(4343);
+ }
+
+ // Java.g:11563:2: ( (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' ) )?
+ int alt117=2;
+ int LA117_0 = input.LA(1);
+
+ if ( (LA117_0==43) ) {
+ alt117=1;
+ }
+ switch (alt117) {
+ case 1 :
+ // Java.g:11564:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ {
+ // Java.g:11564:3: (a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>' )
+ // Java.g:11565:4: a3= '<' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a7= '>'
+ {
+ a3=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_members_Field10053); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4344);
+ addExpectedElement(4345);
+ addExpectedElement(4346);
+ addExpectedElement(4347);
+ addExpectedElement(4348);
+ addExpectedElement(4349);
+ addExpectedElement(4350);
+ addExpectedElement(4351);
+ addExpectedElement(4352);
+ addExpectedElement(4353);
+ addExpectedElement(4354);
+ addExpectedElement(4355);
+ addExpectedElement(4356);
+ addExpectedElement(4357);
+ }
+
+ // Java.g:11592:4: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:11593:5: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_members_Field10079);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.FIELD__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_3_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4358);
+ addExpectedElement(4359);
+ }
+
+ // Java.g:11619:4: ( (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop116:
+ do {
+ int alt116=2;
+ int LA116_0 = input.LA(1);
+
+ if ( (LA116_0==33) ) {
+ alt116=1;
+ }
+
+
+ switch (alt116) {
+ case 1 :
+ // Java.g:11620:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:11620:5: (a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:11621:6: a5= ',' (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a5=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_Field10120); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_3_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4360);
+ addExpectedElement(4361);
+ addExpectedElement(4362);
+ addExpectedElement(4363);
+ addExpectedElement(4364);
+ addExpectedElement(4365);
+ addExpectedElement(4366);
+ addExpectedElement(4367);
+ addExpectedElement(4368);
+ addExpectedElement(4369);
+ addExpectedElement(4370);
+ addExpectedElement(4371);
+ addExpectedElement(4372);
+ addExpectedElement(4373);
+ }
+
+ // Java.g:11648:6: (a6_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:11649:7: a6_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_members_Field10154);
+ a6_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.FIELD__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_3_0_0_2_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4374);
+ addExpectedElement(4375);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop116;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4376);
+ addExpectedElement(4377);
+ }
+
+ a7=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_members_Field10215); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4378);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4379);
+ }
+
+ // Java.g:11704:2: (a8= IDENTIFIER )
+ // Java.g:11705:3: a8= IDENTIFIER
+ {
+ a8=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_Field10252); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a8 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a8.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a8).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a8).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_4, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a8, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4380);
+ addExpectedElement(4381);
+ addExpectedElement(4382);
+ addExpectedElement(4383);
+ }
+
+ // Java.g:11743:2: ( (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop118:
+ do {
+ int alt118=2;
+ int LA118_0 = input.LA(1);
+
+ if ( (LA118_0==49) ) {
+ alt118=1;
+ }
+
+
+ switch (alt118) {
+ case 1 :
+ // Java.g:11744:3: (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:11744:3: (a9_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:11745:4: a9_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_Field10282);
+ a9_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a9_0 != null) {
+ if (a9_0 != null) {
+ Object value = a9_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.FIELD__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_5, a9_0, true);
+ copyLocalizationInfos(a9_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop118;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4384);
+ addExpectedElement(4385);
+ addExpectedElement(4386);
+ addExpectedElement(4387);
+ }
+
+ // Java.g:11774:2: ( (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ int alt119=2;
+ int LA119_0 = input.LA(1);
+
+ if ( (LA119_0==44) ) {
+ alt119=1;
+ }
+ switch (alt119) {
+ case 1 :
+ // Java.g:11775:3: (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:11775:3: (a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:11776:4: a10= '=' (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a10=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_members_Field10317); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_6_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4388);
+ addExpectedElement(4389);
+ addExpectedElement(4390);
+ addExpectedElement(4391);
+ addExpectedElement(4392);
+ addExpectedElement(4393);
+ addExpectedElement(4394);
+ addExpectedElement(4395);
+ addExpectedElement(4396);
+ addExpectedElement(4397);
+ addExpectedElement(4398);
+ addExpectedElement(4399);
+ addExpectedElement(4400);
+ addExpectedElement(4401);
+ addExpectedElement(4402);
+ addExpectedElement(4403);
+ addExpectedElement(4404);
+ addExpectedElement(4405);
+ addExpectedElement(4406);
+ addExpectedElement(4407);
+ addExpectedElement(4408);
+ addExpectedElement(4409);
+ addExpectedElement(4410);
+ addExpectedElement(4411);
+ addExpectedElement(4412);
+ addExpectedElement(4413);
+ addExpectedElement(4414);
+ addExpectedElement(4415);
+ addExpectedElement(4416);
+ addExpectedElement(4417);
+ addExpectedElement(4418);
+ addExpectedElement(4419);
+ addExpectedElement(4420);
+ addExpectedElement(4421);
+ addExpectedElement(4422);
+ addExpectedElement(4423);
+ addExpectedElement(4424);
+ addExpectedElement(4425);
+ addExpectedElement(4426);
+ addExpectedElement(4427);
+ addExpectedElement(4428);
+ addExpectedElement(4429);
+ addExpectedElement(4430);
+ }
+
+ // Java.g:11832:4: (a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:11833:5: a11_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_Field10343);
+ a11_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a11_0 != null) {
+ if (a11_0 != null) {
+ Object value = a11_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.FIELD__INITIAL_VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_6_0_0_3, a11_0, true);
+ copyLocalizationInfos(a11_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4431);
+ addExpectedElement(4432);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4433);
+ addExpectedElement(4434);
+ }
+
+ // Java.g:11867:2: ( (a12= ',' (a13_0= parse_org_emftext_language_java_members_AdditionalField ) ) )*
+ loop120:
+ do {
+ int alt120=2;
+ int LA120_0 = input.LA(1);
+
+ if ( (LA120_0==33) ) {
+ alt120=1;
+ }
+
+
+ switch (alt120) {
+ case 1 :
+ // Java.g:11868:3: (a12= ',' (a13_0= parse_org_emftext_language_java_members_AdditionalField ) )
+ {
+ // Java.g:11868:3: (a12= ',' (a13_0= parse_org_emftext_language_java_members_AdditionalField ) )
+ // Java.g:11869:4: a12= ',' (a13_0= parse_org_emftext_language_java_members_AdditionalField )
+ {
+ a12=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_members_Field10393); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_7_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a12, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4435);
+ }
+
+ // Java.g:11883:4: (a13_0= parse_org_emftext_language_java_members_AdditionalField )
+ // Java.g:11884:5: a13_0= parse_org_emftext_language_java_members_AdditionalField
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_AdditionalField_in_parse_org_emftext_language_java_members_Field10419);
+ a13_0=parse_org_emftext_language_java_members_AdditionalField();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ if (a13_0 != null) {
+ if (a13_0 != null) {
+ Object value = a13_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.FIELD__ADDITIONAL_FIELDS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_7_0_0_1, a13_0, true);
+ copyLocalizationInfos(a13_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4436);
+ addExpectedElement(4437);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop120;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4438);
+ addExpectedElement(4439);
+ }
+
+ a14=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_members_Field10460); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createField();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_28_0_0_8, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a14, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4440);
+ addExpectedElement(4441);
+ addExpectedElement(4442);
+ addExpectedElement(4443);
+ addExpectedElement(4444);
+ addExpectedElement(4445);
+ addExpectedElement(4446);
+ addExpectedElement(4447);
+ addExpectedElement(4448);
+ addExpectedElement(4449);
+ addExpectedElement(4450);
+ addExpectedElement(4451);
+ addExpectedElement(4452);
+ addExpectedElement(4453);
+ addExpectedElement(4454);
+ addExpectedElement(4455);
+ addExpectedElement(4456);
+ addExpectedElement(4457);
+ addExpectedElement(4458);
+ addExpectedElement(4459);
+ addExpectedElement(4460);
+ addExpectedElement(4461);
+ addExpectedElement(4462);
+ addExpectedElement(4463);
+ addExpectedElement(4464);
+ addExpectedElement(4465);
+ addExpectedElement(4466);
+ addExpectedElement(4467);
+ addExpectedElement(4468);
+ addExpectedElement(4469);
+ addExpectedElement(4470);
+ addExpectedElement(4471);
+ addExpectedElement(4472);
+ addExpectedElement(4473);
+ addExpectedElement(4474);
+ addExpectedElement(4475);
+ addExpectedElement(4476);
+ addExpectedElement(4477);
+ addExpectedElement(4478);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 30, parse_org_emftext_language_java_members_Field_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_Field"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_AdditionalField"
+ // Java.g:11972:1: parse_org_emftext_language_java_members_AdditionalField returns [org.emftext.language.java.members.AdditionalField element = null] : (a0= IDENTIFIER ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ;
+ public final org.emftext.language.java.members.AdditionalField parse_org_emftext_language_java_members_AdditionalField() throws RecognitionException {
+ org.emftext.language.java.members.AdditionalField element = null;
+
+ int parse_org_emftext_language_java_members_AdditionalField_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.arrays.ArrayDimension a1_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return element; }
+
+ // Java.g:11975:2: ( (a0= IDENTIFIER ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? )
+ // Java.g:11976:2: (a0= IDENTIFIER ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ {
+ // Java.g:11976:2: (a0= IDENTIFIER )
+ // Java.g:11977:3: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_AdditionalField10493); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createAdditionalField();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ADDITIONAL_FIELD__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ADDITIONAL_FIELD__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_29_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4479);
+ addExpectedElement(4480);
+ addExpectedElement(4481);
+ addExpectedElement(4482);
+ }
+
+ // Java.g:12015:2: ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop121:
+ do {
+ int alt121=2;
+ int LA121_0 = input.LA(1);
+
+ if ( (LA121_0==49) ) {
+ alt121=1;
+ }
+
+
+ switch (alt121) {
+ case 1 :
+ // Java.g:12016:3: (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:12016:3: (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:12017:4: a1_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_AdditionalField10523);
+ a1_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createAdditionalField();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.members.MembersPackage.ADDITIONAL_FIELD__ARRAY_DIMENSIONS_AFTER, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_29_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop121;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4483);
+ addExpectedElement(4484);
+ addExpectedElement(4485);
+ addExpectedElement(4486);
+ }
+
+ // Java.g:12046:2: ( (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ int alt122=2;
+ int LA122_0 = input.LA(1);
+
+ if ( (LA122_0==44) ) {
+ alt122=1;
+ }
+ switch (alt122) {
+ case 1 :
+ // Java.g:12047:3: (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:12047:3: (a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:12048:4: a2= '=' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a2=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_members_AdditionalField10558); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createAdditionalField();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_29_0_0_2_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4487);
+ addExpectedElement(4488);
+ addExpectedElement(4489);
+ addExpectedElement(4490);
+ addExpectedElement(4491);
+ addExpectedElement(4492);
+ addExpectedElement(4493);
+ addExpectedElement(4494);
+ addExpectedElement(4495);
+ addExpectedElement(4496);
+ addExpectedElement(4497);
+ addExpectedElement(4498);
+ addExpectedElement(4499);
+ addExpectedElement(4500);
+ addExpectedElement(4501);
+ addExpectedElement(4502);
+ addExpectedElement(4503);
+ addExpectedElement(4504);
+ addExpectedElement(4505);
+ addExpectedElement(4506);
+ addExpectedElement(4507);
+ addExpectedElement(4508);
+ addExpectedElement(4509);
+ addExpectedElement(4510);
+ addExpectedElement(4511);
+ addExpectedElement(4512);
+ addExpectedElement(4513);
+ addExpectedElement(4514);
+ addExpectedElement(4515);
+ addExpectedElement(4516);
+ addExpectedElement(4517);
+ addExpectedElement(4518);
+ addExpectedElement(4519);
+ addExpectedElement(4520);
+ addExpectedElement(4521);
+ addExpectedElement(4522);
+ addExpectedElement(4523);
+ addExpectedElement(4524);
+ addExpectedElement(4525);
+ addExpectedElement(4526);
+ addExpectedElement(4527);
+ addExpectedElement(4528);
+ addExpectedElement(4529);
+ }
+
+ // Java.g:12104:4: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:12105:5: a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_AdditionalField10584);
+ a3_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createAdditionalField();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.members.MembersPackage.ADDITIONAL_FIELD__INITIAL_VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_29_0_0_2_0_0_3, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4530);
+ addExpectedElement(4531);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4532);
+ addExpectedElement(4533);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 31, parse_org_emftext_language_java_members_AdditionalField_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_AdditionalField"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_EmptyMember"
+ // Java.g:12141:1: parse_org_emftext_language_java_members_EmptyMember returns [org.emftext.language.java.members.EmptyMember element = null] : a0= ';' ;
+ public final org.emftext.language.java.members.EmptyMember parse_org_emftext_language_java_members_EmptyMember() throws RecognitionException {
+ org.emftext.language.java.members.EmptyMember element = null;
+
+ int parse_org_emftext_language_java_members_EmptyMember_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return element; }
+
+ // Java.g:12144:2: (a0= ';' )
+ // Java.g:12145:2: a0= ';'
+ {
+ a0=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_members_EmptyMember10640); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.members.MembersFactory.eINSTANCE.createEmptyMember();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_30_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4534);
+ addExpectedElement(4535);
+ addExpectedElement(4536);
+ addExpectedElement(4537);
+ addExpectedElement(4538);
+ addExpectedElement(4539);
+ addExpectedElement(4540);
+ addExpectedElement(4541);
+ addExpectedElement(4542);
+ addExpectedElement(4543);
+ addExpectedElement(4544);
+ addExpectedElement(4545);
+ addExpectedElement(4546);
+ addExpectedElement(4547);
+ addExpectedElement(4548);
+ addExpectedElement(4549);
+ addExpectedElement(4550);
+ addExpectedElement(4551);
+ addExpectedElement(4552);
+ addExpectedElement(4553);
+ addExpectedElement(4554);
+ addExpectedElement(4555);
+ addExpectedElement(4556);
+ addExpectedElement(4557);
+ addExpectedElement(4558);
+ addExpectedElement(4559);
+ addExpectedElement(4560);
+ addExpectedElement(4561);
+ addExpectedElement(4562);
+ addExpectedElement(4563);
+ addExpectedElement(4564);
+ addExpectedElement(4565);
+ addExpectedElement(4566);
+ addExpectedElement(4567);
+ addExpectedElement(4568);
+ addExpectedElement(4569);
+ addExpectedElement(4570);
+ addExpectedElement(4571);
+ addExpectedElement(4572);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 32, parse_org_emftext_language_java_members_EmptyMember_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_EmptyMember"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_instantiations_NewConstructorCall"
+ // Java.g:12199:1: parse_org_emftext_language_java_instantiations_NewConstructorCall returns [org.emftext.language.java.instantiations.NewConstructorCall element = null] : a0= 'new' ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7= '<' (a8_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a11= '>' ) )? a12= '(' ( ( (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a16= ')' ( (a17_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) )? ( (a18= '.' (a19_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.instantiations.NewConstructorCall parse_org_emftext_language_java_instantiations_NewConstructorCall() throws RecognitionException {
+ org.emftext.language.java.instantiations.NewConstructorCall element = null;
+
+ int parse_org_emftext_language_java_instantiations_NewConstructorCall_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a9=null;
+ Token a11=null;
+ Token a12=null;
+ Token a14=null;
+ Token a16=null;
+ Token a18=null;
+ org.emftext.language.java.generics.TypeArgument a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+ org.emftext.language.java.types.TypeReference a6_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a8_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a10_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a13_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a15_0 =null;
+
+ org.emftext.language.java.classifiers.AnonymousClass a17_0 =null;
+
+ org.emftext.language.java.references.Reference a19_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return element; }
+
+ // Java.g:12202:2: (a0= 'new' ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7= '<' (a8_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a11= '>' ) )? a12= '(' ( ( (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a16= ')' ( (a17_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) )? ( (a18= '.' (a19_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:12203:2: a0= 'new' ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7= '<' (a8_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a11= '>' ) )? a12= '(' ( ( (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a16= ')' ( (a17_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) )? ( (a18= '.' (a19_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ a0=(Token)match(input,84,FOLLOW_84_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10669); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4573);
+ addExpectedElement(4574);
+ addExpectedElement(4575);
+ addExpectedElement(4576);
+ addExpectedElement(4577);
+ addExpectedElement(4578);
+ addExpectedElement(4579);
+ addExpectedElement(4580);
+ addExpectedElement(4581);
+ addExpectedElement(4582);
+ addExpectedElement(4583);
+ addExpectedElement(4584);
+ }
+
+ // Java.g:12228:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )?
+ int alt124=2;
+ int LA124_0 = input.LA(1);
+
+ if ( (LA124_0==43) ) {
+ alt124=1;
+ }
+ switch (alt124) {
+ case 1 :
+ // Java.g:12229:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ {
+ // Java.g:12229:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ // Java.g:12230:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10692); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4585);
+ addExpectedElement(4586);
+ addExpectedElement(4587);
+ addExpectedElement(4588);
+ addExpectedElement(4589);
+ addExpectedElement(4590);
+ addExpectedElement(4591);
+ addExpectedElement(4592);
+ addExpectedElement(4593);
+ addExpectedElement(4594);
+ addExpectedElement(4595);
+ addExpectedElement(4596);
+ addExpectedElement(4597);
+ addExpectedElement(4598);
+ }
+
+ // Java.g:12257:4: (a2_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:12258:5: a2_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10718);
+ a2_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4599);
+ addExpectedElement(4600);
+ }
+
+ // Java.g:12284:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop123:
+ do {
+ int alt123=2;
+ int LA123_0 = input.LA(1);
+
+ if ( (LA123_0==33) ) {
+ alt123=1;
+ }
+
+
+ switch (alt123) {
+ case 1 :
+ // Java.g:12285:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:12285:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:12286:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10759); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4601);
+ addExpectedElement(4602);
+ addExpectedElement(4603);
+ addExpectedElement(4604);
+ addExpectedElement(4605);
+ addExpectedElement(4606);
+ addExpectedElement(4607);
+ addExpectedElement(4608);
+ addExpectedElement(4609);
+ addExpectedElement(4610);
+ addExpectedElement(4611);
+ addExpectedElement(4612);
+ addExpectedElement(4613);
+ addExpectedElement(4614);
+ }
+
+ // Java.g:12313:6: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:12314:7: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10793);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4615);
+ addExpectedElement(4616);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop123;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4617);
+ addExpectedElement(4618);
+ }
+
+ a5=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10854); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_1_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4619);
+ addExpectedElement(4620);
+ addExpectedElement(4621);
+ addExpectedElement(4622);
+ addExpectedElement(4623);
+ addExpectedElement(4624);
+ addExpectedElement(4625);
+ addExpectedElement(4626);
+ addExpectedElement(4627);
+ addExpectedElement(4628);
+ addExpectedElement(4629);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4630);
+ addExpectedElement(4631);
+ addExpectedElement(4632);
+ addExpectedElement(4633);
+ addExpectedElement(4634);
+ addExpectedElement(4635);
+ addExpectedElement(4636);
+ addExpectedElement(4637);
+ addExpectedElement(4638);
+ addExpectedElement(4639);
+ addExpectedElement(4640);
+ }
+
+ // Java.g:12389:2: (a6_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:12390:3: a6_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10891);
+ a6_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_2, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4641);
+ addExpectedElement(4642);
+ }
+
+ // Java.g:12416:2: ( (a7= '<' (a8_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a11= '>' ) )?
+ int alt126=2;
+ int LA126_0 = input.LA(1);
+
+ if ( (LA126_0==43) ) {
+ alt126=1;
+ }
+ switch (alt126) {
+ case 1 :
+ // Java.g:12417:3: (a7= '<' (a8_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a11= '>' )
+ {
+ // Java.g:12417:3: (a7= '<' (a8_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a11= '>' )
+ // Java.g:12418:4: a7= '<' (a8_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a11= '>'
+ {
+ a7=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10918); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4643);
+ addExpectedElement(4644);
+ addExpectedElement(4645);
+ addExpectedElement(4646);
+ addExpectedElement(4647);
+ addExpectedElement(4648);
+ addExpectedElement(4649);
+ addExpectedElement(4650);
+ addExpectedElement(4651);
+ addExpectedElement(4652);
+ addExpectedElement(4653);
+ addExpectedElement(4654);
+ addExpectedElement(4655);
+ addExpectedElement(4656);
+ }
+
+ // Java.g:12445:4: (a8_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:12446:5: a8_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10944);
+ a8_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a8_0 != null) {
+ if (a8_0 != null) {
+ Object value = a8_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__CALL_TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_3_0_0_1, a8_0, true);
+ copyLocalizationInfos(a8_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4657);
+ addExpectedElement(4658);
+ }
+
+ // Java.g:12472:4: ( (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop125:
+ do {
+ int alt125=2;
+ int LA125_0 = input.LA(1);
+
+ if ( (LA125_0==33) ) {
+ alt125=1;
+ }
+
+
+ switch (alt125) {
+ case 1 :
+ // Java.g:12473:5: (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:12473:5: (a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:12474:6: a9= ',' (a10_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a9=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10985); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_3_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4659);
+ addExpectedElement(4660);
+ addExpectedElement(4661);
+ addExpectedElement(4662);
+ addExpectedElement(4663);
+ addExpectedElement(4664);
+ addExpectedElement(4665);
+ addExpectedElement(4666);
+ addExpectedElement(4667);
+ addExpectedElement(4668);
+ addExpectedElement(4669);
+ addExpectedElement(4670);
+ addExpectedElement(4671);
+ addExpectedElement(4672);
+ }
+
+ // Java.g:12501:6: (a10_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:12502:7: a10_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11019);
+ a10_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a10_0 != null) {
+ if (a10_0 != null) {
+ Object value = a10_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__CALL_TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_3_0_0_2_0_0_1, a10_0, true);
+ copyLocalizationInfos(a10_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4673);
+ addExpectedElement(4674);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop125;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4675);
+ addExpectedElement(4676);
+ }
+
+ a11=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11080); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_3_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4677);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4678);
+ }
+
+ a12=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11113); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a12, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4679);
+ addExpectedElement(4680);
+ addExpectedElement(4681);
+ addExpectedElement(4682);
+ addExpectedElement(4683);
+ addExpectedElement(4684);
+ addExpectedElement(4685);
+ addExpectedElement(4686);
+ addExpectedElement(4687);
+ addExpectedElement(4688);
+ addExpectedElement(4689);
+ addExpectedElement(4690);
+ addExpectedElement(4691);
+ addExpectedElement(4692);
+ addExpectedElement(4693);
+ addExpectedElement(4694);
+ addExpectedElement(4695);
+ addExpectedElement(4696);
+ addExpectedElement(4697);
+ addExpectedElement(4698);
+ addExpectedElement(4699);
+ addExpectedElement(4700);
+ addExpectedElement(4701);
+ addExpectedElement(4702);
+ addExpectedElement(4703);
+ addExpectedElement(4704);
+ addExpectedElement(4705);
+ addExpectedElement(4706);
+ addExpectedElement(4707);
+ addExpectedElement(4708);
+ addExpectedElement(4709);
+ addExpectedElement(4710);
+ addExpectedElement(4711);
+ addExpectedElement(4712);
+ addExpectedElement(4713);
+ addExpectedElement(4714);
+ addExpectedElement(4715);
+ addExpectedElement(4716);
+ addExpectedElement(4717);
+ addExpectedElement(4718);
+ addExpectedElement(4719);
+ addExpectedElement(4720);
+ addExpectedElement(4721);
+ addExpectedElement(4722);
+ }
+
+ // Java.g:12614:2: ( ( (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )?
+ int alt128=2;
+ int LA128_0 = input.LA(1);
+
+ if ( ((LA128_0 >= BOOLEAN_LITERAL && LA128_0 <= IDENTIFIER)||(LA128_0 >= OCTAL_INTEGER_LITERAL && LA128_0 <= OCTAL_LONG_LITERAL)||LA128_0==STRING_LITERAL||LA128_0==21||LA128_0==26||(LA128_0 >= 30 && LA128_0 <= 31)||(LA128_0 >= 34 && LA128_0 <= 35)||LA128_0==43||LA128_0==48||LA128_0==58||LA128_0==60||(LA128_0 >= 63 && LA128_0 <= 64)||LA128_0==68||LA128_0==74||LA128_0==80||LA128_0==82||(LA128_0 >= 84 && LA128_0 <= 85)||LA128_0==91||LA128_0==94||LA128_0==97||LA128_0==102||LA128_0==105||LA128_0==110) ) {
+ alt128=1;
+ }
+ switch (alt128) {
+ case 1 :
+ // Java.g:12615:3: ( (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ {
+ // Java.g:12615:3: ( (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ // Java.g:12616:4: (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ {
+ // Java.g:12616:4: (a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:12617:5: a13_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11142);
+ a13_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a13_0 != null) {
+ if (a13_0 != null) {
+ Object value = a13_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_5_0_0_0, a13_0, true);
+ copyLocalizationInfos(a13_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4723);
+ addExpectedElement(4724);
+ }
+
+ // Java.g:12643:4: ( (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ loop127:
+ do {
+ int alt127=2;
+ int LA127_0 = input.LA(1);
+
+ if ( (LA127_0==33) ) {
+ alt127=1;
+ }
+
+
+ switch (alt127) {
+ case 1 :
+ // Java.g:12644:5: (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:12644:5: (a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:12645:6: a14= ',' (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a14=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11183); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_5_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a14, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4725);
+ addExpectedElement(4726);
+ addExpectedElement(4727);
+ addExpectedElement(4728);
+ addExpectedElement(4729);
+ addExpectedElement(4730);
+ addExpectedElement(4731);
+ addExpectedElement(4732);
+ addExpectedElement(4733);
+ addExpectedElement(4734);
+ addExpectedElement(4735);
+ addExpectedElement(4736);
+ addExpectedElement(4737);
+ addExpectedElement(4738);
+ addExpectedElement(4739);
+ addExpectedElement(4740);
+ addExpectedElement(4741);
+ addExpectedElement(4742);
+ addExpectedElement(4743);
+ addExpectedElement(4744);
+ addExpectedElement(4745);
+ addExpectedElement(4746);
+ addExpectedElement(4747);
+ addExpectedElement(4748);
+ addExpectedElement(4749);
+ addExpectedElement(4750);
+ addExpectedElement(4751);
+ addExpectedElement(4752);
+ addExpectedElement(4753);
+ addExpectedElement(4754);
+ addExpectedElement(4755);
+ addExpectedElement(4756);
+ addExpectedElement(4757);
+ addExpectedElement(4758);
+ addExpectedElement(4759);
+ addExpectedElement(4760);
+ addExpectedElement(4761);
+ addExpectedElement(4762);
+ addExpectedElement(4763);
+ addExpectedElement(4764);
+ addExpectedElement(4765);
+ addExpectedElement(4766);
+ addExpectedElement(4767);
+ }
+
+ // Java.g:12701:6: (a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:12702:7: a15_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11217);
+ a15_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a15_0 != null) {
+ if (a15_0 != null) {
+ Object value = a15_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_5_0_0_1_0_0_1, a15_0, true);
+ copyLocalizationInfos(a15_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4768);
+ addExpectedElement(4769);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop127;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4770);
+ addExpectedElement(4771);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4772);
+ }
+
+ a16=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11291); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a16, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4773);
+ addExpectedElement(4774);
+ addExpectedElement(4775);
+ addExpectedElement(4776);
+ addExpectedElement(4777);
+ addExpectedElement(4778);
+ addExpectedElement(4779);
+ addExpectedElement(4780);
+ addExpectedElement(4781);
+ addExpectedElement(4782);
+ addExpectedElement(4783);
+ addExpectedElement(4784);
+ addExpectedElement(4785);
+ addExpectedElement(4786);
+ addExpectedElement(4787);
+ addExpectedElement(4788);
+ addExpectedElement(4789);
+ addExpectedElement(4790);
+ addExpectedElement(4791);
+ addExpectedElement(4792);
+ addExpectedElement(4793);
+ addExpectedElement(4794);
+ addExpectedElement(4795);
+ addExpectedElement(4796);
+ addExpectedElement(4797);
+ addExpectedElement(4798);
+ addExpectedElement(4799);
+ addExpectedElement(4800);
+ addExpectedElement(4801);
+ addExpectedElement(4802);
+ addExpectedElement(4803);
+ addExpectedElement(4804);
+ addExpectedElement(4805);
+ addExpectedElement(4806);
+ addExpectedElement(4807);
+ addExpectedElement(4808);
+ addExpectedElement(4809);
+ addExpectedElement(4810);
+ addExpectedElement(4811);
+ addExpectedElement(4812);
+ addExpectedElement(4813);
+ addExpectedElement(4814);
+ addExpectedElement(4815);
+ addExpectedElement(4816);
+ addExpectedElement(4817);
+ addExpectedElement(4818);
+ addExpectedElement(4819);
+ addExpectedElement(4820);
+ addExpectedElement(4821);
+ addExpectedElement(4822);
+ addExpectedElement(4823);
+ addExpectedElement(4824);
+ addExpectedElement(4825);
+ addExpectedElement(4826);
+ addExpectedElement(4827);
+ addExpectedElement(4828);
+ addExpectedElement(4829);
+ addExpectedElement(4830);
+ addExpectedElement(4831);
+ addExpectedElement(4832);
+ addExpectedElement(4833);
+ addExpectedElement(4834);
+ addExpectedElement(4835);
+ addExpectedElement(4836);
+ addExpectedElement(4837);
+ addExpectedElement(4838);
+ }
+
+ // Java.g:12822:2: ( (a17_0= parse_org_emftext_language_java_classifiers_AnonymousClass ) )?
+ int alt129=2;
+ int LA129_0 = input.LA(1);
+
+ if ( (LA129_0==105) ) {
+ alt129=1;
+ }
+ switch (alt129) {
+ case 1 :
+ // Java.g:12823:3: (a17_0= parse_org_emftext_language_java_classifiers_AnonymousClass )
+ {
+ // Java.g:12823:3: (a17_0= parse_org_emftext_language_java_classifiers_AnonymousClass )
+ // Java.g:12824:4: a17_0= parse_org_emftext_language_java_classifiers_AnonymousClass
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_AnonymousClass_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11314);
+ a17_0=parse_org_emftext_language_java_classifiers_AnonymousClass();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a17_0 != null) {
+ if (a17_0 != null) {
+ Object value = a17_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_7, a17_0, true);
+ copyLocalizationInfos(a17_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4839);
+ addExpectedElement(4840);
+ addExpectedElement(4841);
+ addExpectedElement(4842);
+ addExpectedElement(4843);
+ addExpectedElement(4844);
+ addExpectedElement(4845);
+ addExpectedElement(4846);
+ addExpectedElement(4847);
+ addExpectedElement(4848);
+ addExpectedElement(4849);
+ addExpectedElement(4850);
+ addExpectedElement(4851);
+ addExpectedElement(4852);
+ addExpectedElement(4853);
+ addExpectedElement(4854);
+ addExpectedElement(4855);
+ addExpectedElement(4856);
+ addExpectedElement(4857);
+ addExpectedElement(4858);
+ addExpectedElement(4859);
+ addExpectedElement(4860);
+ addExpectedElement(4861);
+ addExpectedElement(4862);
+ addExpectedElement(4863);
+ addExpectedElement(4864);
+ addExpectedElement(4865);
+ addExpectedElement(4866);
+ addExpectedElement(4867);
+ addExpectedElement(4868);
+ addExpectedElement(4869);
+ addExpectedElement(4870);
+ addExpectedElement(4871);
+ addExpectedElement(4872);
+ addExpectedElement(4873);
+ addExpectedElement(4874);
+ addExpectedElement(4875);
+ addExpectedElement(4876);
+ addExpectedElement(4877);
+ addExpectedElement(4878);
+ addExpectedElement(4879);
+ addExpectedElement(4880);
+ addExpectedElement(4881);
+ addExpectedElement(4882);
+ addExpectedElement(4883);
+ addExpectedElement(4884);
+ addExpectedElement(4885);
+ addExpectedElement(4886);
+ addExpectedElement(4887);
+ addExpectedElement(4888);
+ addExpectedElement(4889);
+ addExpectedElement(4890);
+ addExpectedElement(4891);
+ addExpectedElement(4892);
+ addExpectedElement(4893);
+ addExpectedElement(4894);
+ addExpectedElement(4895);
+ addExpectedElement(4896);
+ addExpectedElement(4897);
+ addExpectedElement(4898);
+ addExpectedElement(4899);
+ addExpectedElement(4900);
+ addExpectedElement(4901);
+ addExpectedElement(4902);
+ addExpectedElement(4903);
+ }
+
+ // Java.g:12914:2: ( (a18= '.' (a19_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt130=2;
+ int LA130_0 = input.LA(1);
+
+ if ( (LA130_0==37) ) {
+ alt130=1;
+ }
+ switch (alt130) {
+ case 1 :
+ // Java.g:12915:3: (a18= '.' (a19_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:12915:3: (a18= '.' (a19_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:12916:4: a18= '.' (a19_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a18=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11349); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_8_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a18, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4904);
+ addExpectedElement(4905);
+ addExpectedElement(4906);
+ addExpectedElement(4907);
+ addExpectedElement(4908);
+ addExpectedElement(4909);
+ addExpectedElement(4910);
+ addExpectedElement(4911);
+ addExpectedElement(4912);
+ addExpectedElement(4913);
+ addExpectedElement(4914);
+ addExpectedElement(4915);
+ addExpectedElement(4916);
+ addExpectedElement(4917);
+ addExpectedElement(4918);
+ addExpectedElement(4919);
+ addExpectedElement(4920);
+ addExpectedElement(4921);
+ addExpectedElement(4922);
+ addExpectedElement(4923);
+ addExpectedElement(4924);
+ addExpectedElement(4925);
+ addExpectedElement(4926);
+ }
+
+ // Java.g:12952:4: (a19_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:12953:5: a19_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11375);
+ a19_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createNewConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a19_0 != null) {
+ if (a19_0 != null) {
+ Object value = a19_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.NEW_CONSTRUCTOR_CALL__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_31_0_0_8_0_0_1, a19_0, true);
+ copyLocalizationInfos(a19_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4927);
+ addExpectedElement(4928);
+ addExpectedElement(4929);
+ addExpectedElement(4930);
+ addExpectedElement(4931);
+ addExpectedElement(4932);
+ addExpectedElement(4933);
+ addExpectedElement(4934);
+ addExpectedElement(4935);
+ addExpectedElement(4936);
+ addExpectedElement(4937);
+ addExpectedElement(4938);
+ addExpectedElement(4939);
+ addExpectedElement(4940);
+ addExpectedElement(4941);
+ addExpectedElement(4942);
+ addExpectedElement(4943);
+ addExpectedElement(4944);
+ addExpectedElement(4945);
+ addExpectedElement(4946);
+ addExpectedElement(4947);
+ addExpectedElement(4948);
+ addExpectedElement(4949);
+ addExpectedElement(4950);
+ addExpectedElement(4951);
+ addExpectedElement(4952);
+ addExpectedElement(4953);
+ addExpectedElement(4954);
+ addExpectedElement(4955);
+ addExpectedElement(4956);
+ addExpectedElement(4957);
+ addExpectedElement(4958);
+ addExpectedElement(4959);
+ addExpectedElement(4960);
+ addExpectedElement(4961);
+ addExpectedElement(4962);
+ addExpectedElement(4963);
+ addExpectedElement(4964);
+ addExpectedElement(4965);
+ addExpectedElement(4966);
+ addExpectedElement(4967);
+ addExpectedElement(4968);
+ addExpectedElement(4969);
+ addExpectedElement(4970);
+ addExpectedElement(4971);
+ addExpectedElement(4972);
+ addExpectedElement(4973);
+ addExpectedElement(4974);
+ addExpectedElement(4975);
+ addExpectedElement(4976);
+ addExpectedElement(4977);
+ addExpectedElement(4978);
+ addExpectedElement(4979);
+ addExpectedElement(4980);
+ addExpectedElement(4981);
+ addExpectedElement(4982);
+ addExpectedElement(4983);
+ addExpectedElement(4984);
+ addExpectedElement(4985);
+ addExpectedElement(4986);
+ addExpectedElement(4987);
+ addExpectedElement(4988);
+ addExpectedElement(4989);
+ addExpectedElement(4990);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(4991);
+ addExpectedElement(4992);
+ addExpectedElement(4993);
+ addExpectedElement(4994);
+ addExpectedElement(4995);
+ addExpectedElement(4996);
+ addExpectedElement(4997);
+ addExpectedElement(4998);
+ addExpectedElement(4999);
+ addExpectedElement(5000);
+ addExpectedElement(5001);
+ addExpectedElement(5002);
+ addExpectedElement(5003);
+ addExpectedElement(5004);
+ addExpectedElement(5005);
+ addExpectedElement(5006);
+ addExpectedElement(5007);
+ addExpectedElement(5008);
+ addExpectedElement(5009);
+ addExpectedElement(5010);
+ addExpectedElement(5011);
+ addExpectedElement(5012);
+ addExpectedElement(5013);
+ addExpectedElement(5014);
+ addExpectedElement(5015);
+ addExpectedElement(5016);
+ addExpectedElement(5017);
+ addExpectedElement(5018);
+ addExpectedElement(5019);
+ addExpectedElement(5020);
+ addExpectedElement(5021);
+ addExpectedElement(5022);
+ addExpectedElement(5023);
+ addExpectedElement(5024);
+ addExpectedElement(5025);
+ addExpectedElement(5026);
+ addExpectedElement(5027);
+ addExpectedElement(5028);
+ addExpectedElement(5029);
+ addExpectedElement(5030);
+ addExpectedElement(5031);
+ addExpectedElement(5032);
+ addExpectedElement(5033);
+ addExpectedElement(5034);
+ addExpectedElement(5035);
+ addExpectedElement(5036);
+ addExpectedElement(5037);
+ addExpectedElement(5038);
+ addExpectedElement(5039);
+ addExpectedElement(5040);
+ addExpectedElement(5041);
+ addExpectedElement(5042);
+ addExpectedElement(5043);
+ addExpectedElement(5044);
+ addExpectedElement(5045);
+ addExpectedElement(5046);
+ addExpectedElement(5047);
+ addExpectedElement(5048);
+ addExpectedElement(5049);
+ addExpectedElement(5050);
+ addExpectedElement(5051);
+ addExpectedElement(5052);
+ addExpectedElement(5053);
+ addExpectedElement(5054);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 33, parse_org_emftext_language_java_instantiations_NewConstructorCall_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_instantiations_NewConstructorCall"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_instantiations_ExplicitConstructorCall"
+ // Java.g:13113:1: parse_org_emftext_language_java_instantiations_ExplicitConstructorCall returns [org.emftext.language.java.instantiations.ExplicitConstructorCall element = null] : ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )? (a5_0= parse_org_emftext_language_java_literals_Self ) a6= '(' ( ( (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a10= ')' ( (a11= '.' (a12_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.instantiations.ExplicitConstructorCall parse_org_emftext_language_java_instantiations_ExplicitConstructorCall() throws RecognitionException {
+ org.emftext.language.java.instantiations.ExplicitConstructorCall element = null;
+
+ int parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a4=null;
+ Token a6=null;
+ Token a8=null;
+ Token a10=null;
+ Token a11=null;
+ org.emftext.language.java.generics.TypeArgument a1_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a3_0 =null;
+
+ org.emftext.language.java.literals.Self a5_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a7_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a9_0 =null;
+
+ org.emftext.language.java.references.Reference a12_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return element; }
+
+ // Java.g:13116:2: ( ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )? (a5_0= parse_org_emftext_language_java_literals_Self ) a6= '(' ( ( (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a10= ')' ( (a11= '.' (a12_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:13117:2: ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )? (a5_0= parse_org_emftext_language_java_literals_Self ) a6= '(' ( ( (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a10= ')' ( (a11= '.' (a12_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ // Java.g:13117:2: ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )?
+ int alt132=2;
+ int LA132_0 = input.LA(1);
+
+ if ( (LA132_0==43) ) {
+ alt132=1;
+ }
+ switch (alt132) {
+ case 1 :
+ // Java.g:13118:3: (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' )
+ {
+ // Java.g:13118:3: (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' )
+ // Java.g:13119:4: a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>'
+ {
+ a0=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11440); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_0_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5055);
+ addExpectedElement(5056);
+ addExpectedElement(5057);
+ addExpectedElement(5058);
+ addExpectedElement(5059);
+ addExpectedElement(5060);
+ addExpectedElement(5061);
+ addExpectedElement(5062);
+ addExpectedElement(5063);
+ addExpectedElement(5064);
+ addExpectedElement(5065);
+ addExpectedElement(5066);
+ addExpectedElement(5067);
+ addExpectedElement(5068);
+ }
+
+ // Java.g:13146:4: (a1_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:13147:5: a1_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11466);
+ a1_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_0_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5069);
+ addExpectedElement(5070);
+ }
+
+ // Java.g:13173:4: ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop131:
+ do {
+ int alt131=2;
+ int LA131_0 = input.LA(1);
+
+ if ( (LA131_0==33) ) {
+ alt131=1;
+ }
+
+
+ switch (alt131) {
+ case 1 :
+ // Java.g:13174:5: (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:13174:5: (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:13175:6: a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a2=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11507); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_0_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5071);
+ addExpectedElement(5072);
+ addExpectedElement(5073);
+ addExpectedElement(5074);
+ addExpectedElement(5075);
+ addExpectedElement(5076);
+ addExpectedElement(5077);
+ addExpectedElement(5078);
+ addExpectedElement(5079);
+ addExpectedElement(5080);
+ addExpectedElement(5081);
+ addExpectedElement(5082);
+ addExpectedElement(5083);
+ addExpectedElement(5084);
+ }
+
+ // Java.g:13202:6: (a3_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:13203:7: a3_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11541);
+ a3_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_0_0_0_2_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5085);
+ addExpectedElement(5086);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop131;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5087);
+ addExpectedElement(5088);
+ }
+
+ a4=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11602); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_0_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5089);
+ addExpectedElement(5090);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5091);
+ addExpectedElement(5092);
+ }
+
+ // Java.g:13260:2: (a5_0= parse_org_emftext_language_java_literals_Self )
+ // Java.g:13261:3: a5_0= parse_org_emftext_language_java_literals_Self
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_Self_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11639);
+ a5_0=parse_org_emftext_language_java_literals_Self();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__CALL_TARGET), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_1, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5093);
+ }
+
+ a6=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11657); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5094);
+ addExpectedElement(5095);
+ addExpectedElement(5096);
+ addExpectedElement(5097);
+ addExpectedElement(5098);
+ addExpectedElement(5099);
+ addExpectedElement(5100);
+ addExpectedElement(5101);
+ addExpectedElement(5102);
+ addExpectedElement(5103);
+ addExpectedElement(5104);
+ addExpectedElement(5105);
+ addExpectedElement(5106);
+ addExpectedElement(5107);
+ addExpectedElement(5108);
+ addExpectedElement(5109);
+ addExpectedElement(5110);
+ addExpectedElement(5111);
+ addExpectedElement(5112);
+ addExpectedElement(5113);
+ addExpectedElement(5114);
+ addExpectedElement(5115);
+ addExpectedElement(5116);
+ addExpectedElement(5117);
+ addExpectedElement(5118);
+ addExpectedElement(5119);
+ addExpectedElement(5120);
+ addExpectedElement(5121);
+ addExpectedElement(5122);
+ addExpectedElement(5123);
+ addExpectedElement(5124);
+ addExpectedElement(5125);
+ addExpectedElement(5126);
+ addExpectedElement(5127);
+ addExpectedElement(5128);
+ addExpectedElement(5129);
+ addExpectedElement(5130);
+ addExpectedElement(5131);
+ addExpectedElement(5132);
+ addExpectedElement(5133);
+ addExpectedElement(5134);
+ addExpectedElement(5135);
+ addExpectedElement(5136);
+ addExpectedElement(5137);
+ }
+
+ // Java.g:13343:2: ( ( (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )?
+ int alt134=2;
+ int LA134_0 = input.LA(1);
+
+ if ( ((LA134_0 >= BOOLEAN_LITERAL && LA134_0 <= IDENTIFIER)||(LA134_0 >= OCTAL_INTEGER_LITERAL && LA134_0 <= OCTAL_LONG_LITERAL)||LA134_0==STRING_LITERAL||LA134_0==21||LA134_0==26||(LA134_0 >= 30 && LA134_0 <= 31)||(LA134_0 >= 34 && LA134_0 <= 35)||LA134_0==43||LA134_0==48||LA134_0==58||LA134_0==60||(LA134_0 >= 63 && LA134_0 <= 64)||LA134_0==68||LA134_0==74||LA134_0==80||LA134_0==82||(LA134_0 >= 84 && LA134_0 <= 85)||LA134_0==91||LA134_0==94||LA134_0==97||LA134_0==102||LA134_0==105||LA134_0==110) ) {
+ alt134=1;
+ }
+ switch (alt134) {
+ case 1 :
+ // Java.g:13344:3: ( (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ {
+ // Java.g:13344:3: ( (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ // Java.g:13345:4: (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ {
+ // Java.g:13345:4: (a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:13346:5: a7_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11686);
+ a7_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_3_0_0_0, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5138);
+ addExpectedElement(5139);
+ }
+
+ // Java.g:13372:4: ( (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ loop133:
+ do {
+ int alt133=2;
+ int LA133_0 = input.LA(1);
+
+ if ( (LA133_0==33) ) {
+ alt133=1;
+ }
+
+
+ switch (alt133) {
+ case 1 :
+ // Java.g:13373:5: (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:13373:5: (a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:13374:6: a8= ',' (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a8=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11727); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_3_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a8, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5140);
+ addExpectedElement(5141);
+ addExpectedElement(5142);
+ addExpectedElement(5143);
+ addExpectedElement(5144);
+ addExpectedElement(5145);
+ addExpectedElement(5146);
+ addExpectedElement(5147);
+ addExpectedElement(5148);
+ addExpectedElement(5149);
+ addExpectedElement(5150);
+ addExpectedElement(5151);
+ addExpectedElement(5152);
+ addExpectedElement(5153);
+ addExpectedElement(5154);
+ addExpectedElement(5155);
+ addExpectedElement(5156);
+ addExpectedElement(5157);
+ addExpectedElement(5158);
+ addExpectedElement(5159);
+ addExpectedElement(5160);
+ addExpectedElement(5161);
+ addExpectedElement(5162);
+ addExpectedElement(5163);
+ addExpectedElement(5164);
+ addExpectedElement(5165);
+ addExpectedElement(5166);
+ addExpectedElement(5167);
+ addExpectedElement(5168);
+ addExpectedElement(5169);
+ addExpectedElement(5170);
+ addExpectedElement(5171);
+ addExpectedElement(5172);
+ addExpectedElement(5173);
+ addExpectedElement(5174);
+ addExpectedElement(5175);
+ addExpectedElement(5176);
+ addExpectedElement(5177);
+ addExpectedElement(5178);
+ addExpectedElement(5179);
+ addExpectedElement(5180);
+ addExpectedElement(5181);
+ addExpectedElement(5182);
+ }
+
+ // Java.g:13430:6: (a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:13431:7: a9_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11761);
+ a9_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a9_0 != null) {
+ if (a9_0 != null) {
+ Object value = a9_0;
+ addObjectToList(element, org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_3_0_0_1_0_0_1, a9_0, true);
+ copyLocalizationInfos(a9_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5183);
+ addExpectedElement(5184);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop133;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5185);
+ addExpectedElement(5186);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5187);
+ }
+
+ a10=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11835); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5188);
+ addExpectedElement(5189);
+ addExpectedElement(5190);
+ addExpectedElement(5191);
+ addExpectedElement(5192);
+ addExpectedElement(5193);
+ addExpectedElement(5194);
+ addExpectedElement(5195);
+ addExpectedElement(5196);
+ addExpectedElement(5197);
+ addExpectedElement(5198);
+ addExpectedElement(5199);
+ addExpectedElement(5200);
+ addExpectedElement(5201);
+ addExpectedElement(5202);
+ addExpectedElement(5203);
+ addExpectedElement(5204);
+ addExpectedElement(5205);
+ addExpectedElement(5206);
+ addExpectedElement(5207);
+ addExpectedElement(5208);
+ addExpectedElement(5209);
+ addExpectedElement(5210);
+ addExpectedElement(5211);
+ addExpectedElement(5212);
+ addExpectedElement(5213);
+ addExpectedElement(5214);
+ addExpectedElement(5215);
+ addExpectedElement(5216);
+ addExpectedElement(5217);
+ addExpectedElement(5218);
+ addExpectedElement(5219);
+ addExpectedElement(5220);
+ addExpectedElement(5221);
+ addExpectedElement(5222);
+ addExpectedElement(5223);
+ addExpectedElement(5224);
+ addExpectedElement(5225);
+ addExpectedElement(5226);
+ addExpectedElement(5227);
+ addExpectedElement(5228);
+ addExpectedElement(5229);
+ addExpectedElement(5230);
+ addExpectedElement(5231);
+ addExpectedElement(5232);
+ addExpectedElement(5233);
+ addExpectedElement(5234);
+ addExpectedElement(5235);
+ addExpectedElement(5236);
+ addExpectedElement(5237);
+ addExpectedElement(5238);
+ addExpectedElement(5239);
+ addExpectedElement(5240);
+ addExpectedElement(5241);
+ addExpectedElement(5242);
+ addExpectedElement(5243);
+ addExpectedElement(5244);
+ addExpectedElement(5245);
+ addExpectedElement(5246);
+ addExpectedElement(5247);
+ addExpectedElement(5248);
+ addExpectedElement(5249);
+ addExpectedElement(5250);
+ addExpectedElement(5251);
+ addExpectedElement(5252);
+ }
+
+ // Java.g:13550:2: ( (a11= '.' (a12_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt135=2;
+ int LA135_0 = input.LA(1);
+
+ if ( (LA135_0==37) ) {
+ alt135=1;
+ }
+ switch (alt135) {
+ case 1 :
+ // Java.g:13551:3: (a11= '.' (a12_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:13551:3: (a11= '.' (a12_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:13552:4: a11= '.' (a12_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a11=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11858); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_5_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5253);
+ addExpectedElement(5254);
+ addExpectedElement(5255);
+ addExpectedElement(5256);
+ addExpectedElement(5257);
+ addExpectedElement(5258);
+ addExpectedElement(5259);
+ addExpectedElement(5260);
+ addExpectedElement(5261);
+ addExpectedElement(5262);
+ addExpectedElement(5263);
+ addExpectedElement(5264);
+ addExpectedElement(5265);
+ addExpectedElement(5266);
+ addExpectedElement(5267);
+ addExpectedElement(5268);
+ addExpectedElement(5269);
+ addExpectedElement(5270);
+ addExpectedElement(5271);
+ addExpectedElement(5272);
+ addExpectedElement(5273);
+ addExpectedElement(5274);
+ addExpectedElement(5275);
+ }
+
+ // Java.g:13588:4: (a12_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:13589:5: a12_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11884);
+ a12_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.instantiations.InstantiationsFactory.eINSTANCE.createExplicitConstructorCall();
+ startIncompleteElement(element);
+ }
+ if (a12_0 != null) {
+ if (a12_0 != null) {
+ Object value = a12_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.instantiations.InstantiationsPackage.EXPLICIT_CONSTRUCTOR_CALL__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_32_0_0_5_0_0_1, a12_0, true);
+ copyLocalizationInfos(a12_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5276);
+ addExpectedElement(5277);
+ addExpectedElement(5278);
+ addExpectedElement(5279);
+ addExpectedElement(5280);
+ addExpectedElement(5281);
+ addExpectedElement(5282);
+ addExpectedElement(5283);
+ addExpectedElement(5284);
+ addExpectedElement(5285);
+ addExpectedElement(5286);
+ addExpectedElement(5287);
+ addExpectedElement(5288);
+ addExpectedElement(5289);
+ addExpectedElement(5290);
+ addExpectedElement(5291);
+ addExpectedElement(5292);
+ addExpectedElement(5293);
+ addExpectedElement(5294);
+ addExpectedElement(5295);
+ addExpectedElement(5296);
+ addExpectedElement(5297);
+ addExpectedElement(5298);
+ addExpectedElement(5299);
+ addExpectedElement(5300);
+ addExpectedElement(5301);
+ addExpectedElement(5302);
+ addExpectedElement(5303);
+ addExpectedElement(5304);
+ addExpectedElement(5305);
+ addExpectedElement(5306);
+ addExpectedElement(5307);
+ addExpectedElement(5308);
+ addExpectedElement(5309);
+ addExpectedElement(5310);
+ addExpectedElement(5311);
+ addExpectedElement(5312);
+ addExpectedElement(5313);
+ addExpectedElement(5314);
+ addExpectedElement(5315);
+ addExpectedElement(5316);
+ addExpectedElement(5317);
+ addExpectedElement(5318);
+ addExpectedElement(5319);
+ addExpectedElement(5320);
+ addExpectedElement(5321);
+ addExpectedElement(5322);
+ addExpectedElement(5323);
+ addExpectedElement(5324);
+ addExpectedElement(5325);
+ addExpectedElement(5326);
+ addExpectedElement(5327);
+ addExpectedElement(5328);
+ addExpectedElement(5329);
+ addExpectedElement(5330);
+ addExpectedElement(5331);
+ addExpectedElement(5332);
+ addExpectedElement(5333);
+ addExpectedElement(5334);
+ addExpectedElement(5335);
+ addExpectedElement(5336);
+ addExpectedElement(5337);
+ addExpectedElement(5338);
+ addExpectedElement(5339);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5340);
+ addExpectedElement(5341);
+ addExpectedElement(5342);
+ addExpectedElement(5343);
+ addExpectedElement(5344);
+ addExpectedElement(5345);
+ addExpectedElement(5346);
+ addExpectedElement(5347);
+ addExpectedElement(5348);
+ addExpectedElement(5349);
+ addExpectedElement(5350);
+ addExpectedElement(5351);
+ addExpectedElement(5352);
+ addExpectedElement(5353);
+ addExpectedElement(5354);
+ addExpectedElement(5355);
+ addExpectedElement(5356);
+ addExpectedElement(5357);
+ addExpectedElement(5358);
+ addExpectedElement(5359);
+ addExpectedElement(5360);
+ addExpectedElement(5361);
+ addExpectedElement(5362);
+ addExpectedElement(5363);
+ addExpectedElement(5364);
+ addExpectedElement(5365);
+ addExpectedElement(5366);
+ addExpectedElement(5367);
+ addExpectedElement(5368);
+ addExpectedElement(5369);
+ addExpectedElement(5370);
+ addExpectedElement(5371);
+ addExpectedElement(5372);
+ addExpectedElement(5373);
+ addExpectedElement(5374);
+ addExpectedElement(5375);
+ addExpectedElement(5376);
+ addExpectedElement(5377);
+ addExpectedElement(5378);
+ addExpectedElement(5379);
+ addExpectedElement(5380);
+ addExpectedElement(5381);
+ addExpectedElement(5382);
+ addExpectedElement(5383);
+ addExpectedElement(5384);
+ addExpectedElement(5385);
+ addExpectedElement(5386);
+ addExpectedElement(5387);
+ addExpectedElement(5388);
+ addExpectedElement(5389);
+ addExpectedElement(5390);
+ addExpectedElement(5391);
+ addExpectedElement(5392);
+ addExpectedElement(5393);
+ addExpectedElement(5394);
+ addExpectedElement(5395);
+ addExpectedElement(5396);
+ addExpectedElement(5397);
+ addExpectedElement(5398);
+ addExpectedElement(5399);
+ addExpectedElement(5400);
+ addExpectedElement(5401);
+ addExpectedElement(5402);
+ addExpectedElement(5403);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 34, parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_instantiations_ExplicitConstructorCall"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped"
+ // Java.g:13749:1: parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped returns [org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped element = null] : a0= 'new' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )+ (a3_0= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a4_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a5= '.' (a6_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped element = null;
+
+ int parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_StartIndex = input.index();
+
+ Token a0=null;
+ Token a5=null;
+ org.emftext.language.java.types.TypeReference a1_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a2_0 =null;
+
+ org.emftext.language.java.arrays.ArrayInitializer a3_0 =null;
+
+ org.emftext.language.java.arrays.ArraySelector a4_0 =null;
+
+ org.emftext.language.java.references.Reference a6_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return element; }
+
+ // Java.g:13752:2: (a0= 'new' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )+ (a3_0= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a4_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a5= '.' (a6_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:13753:2: a0= 'new' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )+ (a3_0= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a4_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a5= '.' (a6_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ a0=(Token)match(input,84,FOLLOW_84_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped11940); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_33_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5404);
+ addExpectedElement(5405);
+ addExpectedElement(5406);
+ addExpectedElement(5407);
+ addExpectedElement(5408);
+ addExpectedElement(5409);
+ addExpectedElement(5410);
+ addExpectedElement(5411);
+ addExpectedElement(5412);
+ addExpectedElement(5413);
+ addExpectedElement(5414);
+ }
+
+ // Java.g:13777:2: (a1_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:13778:3: a1_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped11958);
+ a1_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_33_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5415);
+ }
+
+ // Java.g:13803:2: ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )+
+ int cnt136=0;
+ loop136:
+ do {
+ int alt136=2;
+ int LA136_0 = input.LA(1);
+
+ if ( (LA136_0==49) ) {
+ alt136=1;
+ }
+
+
+ switch (alt136) {
+ case 1 :
+ // Java.g:13804:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:13804:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:13805:4: a2_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped11985);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_33_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt136 >= 1 ) break loop136;
+ if (state.backtracking>0) {state.failed=true; return element;}
+ EarlyExitException eee =
+ new EarlyExitException(136, input);
+ throw eee;
+ }
+ cnt136++;
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5416);
+ addExpectedElement(5417);
+ }
+
+ // Java.g:13832:2: (a3_0= parse_org_emftext_language_java_arrays_ArrayInitializer )
+ // Java.g:13833:3: a3_0= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12015);
+ a3_0=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__ARRAY_INITIALIZER), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_33_0_0_3, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5418);
+ addExpectedElement(5419);
+ addExpectedElement(5420);
+ addExpectedElement(5421);
+ addExpectedElement(5422);
+ addExpectedElement(5423);
+ addExpectedElement(5424);
+ addExpectedElement(5425);
+ addExpectedElement(5426);
+ addExpectedElement(5427);
+ addExpectedElement(5428);
+ addExpectedElement(5429);
+ addExpectedElement(5430);
+ addExpectedElement(5431);
+ addExpectedElement(5432);
+ addExpectedElement(5433);
+ addExpectedElement(5434);
+ addExpectedElement(5435);
+ addExpectedElement(5436);
+ addExpectedElement(5437);
+ addExpectedElement(5438);
+ addExpectedElement(5439);
+ addExpectedElement(5440);
+ addExpectedElement(5441);
+ addExpectedElement(5442);
+ addExpectedElement(5443);
+ addExpectedElement(5444);
+ addExpectedElement(5445);
+ addExpectedElement(5446);
+ addExpectedElement(5447);
+ addExpectedElement(5448);
+ addExpectedElement(5449);
+ addExpectedElement(5450);
+ addExpectedElement(5451);
+ addExpectedElement(5452);
+ addExpectedElement(5453);
+ addExpectedElement(5454);
+ addExpectedElement(5455);
+ addExpectedElement(5456);
+ addExpectedElement(5457);
+ addExpectedElement(5458);
+ addExpectedElement(5459);
+ addExpectedElement(5460);
+ addExpectedElement(5461);
+ addExpectedElement(5462);
+ addExpectedElement(5463);
+ addExpectedElement(5464);
+ addExpectedElement(5465);
+ addExpectedElement(5466);
+ addExpectedElement(5467);
+ addExpectedElement(5468);
+ addExpectedElement(5469);
+ addExpectedElement(5470);
+ addExpectedElement(5471);
+ addExpectedElement(5472);
+ addExpectedElement(5473);
+ addExpectedElement(5474);
+ addExpectedElement(5475);
+ addExpectedElement(5476);
+ addExpectedElement(5477);
+ addExpectedElement(5478);
+ addExpectedElement(5479);
+ addExpectedElement(5480);
+ addExpectedElement(5481);
+ addExpectedElement(5482);
+ addExpectedElement(5483);
+ }
+
+ // Java.g:13923:2: ( (a4_0= parse_org_emftext_language_java_arrays_ArraySelector ) )*
+ loop137:
+ do {
+ int alt137=2;
+ int LA137_0 = input.LA(1);
+
+ if ( (LA137_0==49) ) {
+ alt137=1;
+ }
+
+
+ switch (alt137) {
+ case 1 :
+ // Java.g:13924:3: (a4_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ {
+ // Java.g:13924:3: (a4_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ // Java.g:13925:4: a4_0= parse_org_emftext_language_java_arrays_ArraySelector
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12042);
+ a4_0=parse_org_emftext_language_java_arrays_ArraySelector();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__ARRAY_SELECTORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_33_0_0_4, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop137;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5484);
+ addExpectedElement(5485);
+ addExpectedElement(5486);
+ addExpectedElement(5487);
+ addExpectedElement(5488);
+ addExpectedElement(5489);
+ addExpectedElement(5490);
+ addExpectedElement(5491);
+ addExpectedElement(5492);
+ addExpectedElement(5493);
+ addExpectedElement(5494);
+ addExpectedElement(5495);
+ addExpectedElement(5496);
+ addExpectedElement(5497);
+ addExpectedElement(5498);
+ addExpectedElement(5499);
+ addExpectedElement(5500);
+ addExpectedElement(5501);
+ addExpectedElement(5502);
+ addExpectedElement(5503);
+ addExpectedElement(5504);
+ addExpectedElement(5505);
+ addExpectedElement(5506);
+ addExpectedElement(5507);
+ addExpectedElement(5508);
+ addExpectedElement(5509);
+ addExpectedElement(5510);
+ addExpectedElement(5511);
+ addExpectedElement(5512);
+ addExpectedElement(5513);
+ addExpectedElement(5514);
+ addExpectedElement(5515);
+ addExpectedElement(5516);
+ addExpectedElement(5517);
+ addExpectedElement(5518);
+ addExpectedElement(5519);
+ addExpectedElement(5520);
+ addExpectedElement(5521);
+ addExpectedElement(5522);
+ addExpectedElement(5523);
+ addExpectedElement(5524);
+ addExpectedElement(5525);
+ addExpectedElement(5526);
+ addExpectedElement(5527);
+ addExpectedElement(5528);
+ addExpectedElement(5529);
+ addExpectedElement(5530);
+ addExpectedElement(5531);
+ addExpectedElement(5532);
+ addExpectedElement(5533);
+ addExpectedElement(5534);
+ addExpectedElement(5535);
+ addExpectedElement(5536);
+ addExpectedElement(5537);
+ addExpectedElement(5538);
+ addExpectedElement(5539);
+ addExpectedElement(5540);
+ addExpectedElement(5541);
+ addExpectedElement(5542);
+ addExpectedElement(5543);
+ addExpectedElement(5544);
+ addExpectedElement(5545);
+ addExpectedElement(5546);
+ addExpectedElement(5547);
+ addExpectedElement(5548);
+ addExpectedElement(5549);
+ }
+
+ // Java.g:14016:2: ( (a5= '.' (a6_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt138=2;
+ int LA138_0 = input.LA(1);
+
+ if ( (LA138_0==37) ) {
+ alt138=1;
+ }
+ switch (alt138) {
+ case 1 :
+ // Java.g:14017:3: (a5= '.' (a6_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:14017:3: (a5= '.' (a6_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:14018:4: a5= '.' (a6_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a5=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12077); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_33_0_0_5_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5550);
+ addExpectedElement(5551);
+ addExpectedElement(5552);
+ addExpectedElement(5553);
+ addExpectedElement(5554);
+ addExpectedElement(5555);
+ addExpectedElement(5556);
+ addExpectedElement(5557);
+ addExpectedElement(5558);
+ addExpectedElement(5559);
+ addExpectedElement(5560);
+ addExpectedElement(5561);
+ addExpectedElement(5562);
+ addExpectedElement(5563);
+ addExpectedElement(5564);
+ addExpectedElement(5565);
+ addExpectedElement(5566);
+ addExpectedElement(5567);
+ addExpectedElement(5568);
+ addExpectedElement(5569);
+ addExpectedElement(5570);
+ addExpectedElement(5571);
+ addExpectedElement(5572);
+ }
+
+ // Java.g:14054:4: (a6_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:14055:5: a6_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12103);
+ a6_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_TYPED__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_33_0_0_5_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5573);
+ addExpectedElement(5574);
+ addExpectedElement(5575);
+ addExpectedElement(5576);
+ addExpectedElement(5577);
+ addExpectedElement(5578);
+ addExpectedElement(5579);
+ addExpectedElement(5580);
+ addExpectedElement(5581);
+ addExpectedElement(5582);
+ addExpectedElement(5583);
+ addExpectedElement(5584);
+ addExpectedElement(5585);
+ addExpectedElement(5586);
+ addExpectedElement(5587);
+ addExpectedElement(5588);
+ addExpectedElement(5589);
+ addExpectedElement(5590);
+ addExpectedElement(5591);
+ addExpectedElement(5592);
+ addExpectedElement(5593);
+ addExpectedElement(5594);
+ addExpectedElement(5595);
+ addExpectedElement(5596);
+ addExpectedElement(5597);
+ addExpectedElement(5598);
+ addExpectedElement(5599);
+ addExpectedElement(5600);
+ addExpectedElement(5601);
+ addExpectedElement(5602);
+ addExpectedElement(5603);
+ addExpectedElement(5604);
+ addExpectedElement(5605);
+ addExpectedElement(5606);
+ addExpectedElement(5607);
+ addExpectedElement(5608);
+ addExpectedElement(5609);
+ addExpectedElement(5610);
+ addExpectedElement(5611);
+ addExpectedElement(5612);
+ addExpectedElement(5613);
+ addExpectedElement(5614);
+ addExpectedElement(5615);
+ addExpectedElement(5616);
+ addExpectedElement(5617);
+ addExpectedElement(5618);
+ addExpectedElement(5619);
+ addExpectedElement(5620);
+ addExpectedElement(5621);
+ addExpectedElement(5622);
+ addExpectedElement(5623);
+ addExpectedElement(5624);
+ addExpectedElement(5625);
+ addExpectedElement(5626);
+ addExpectedElement(5627);
+ addExpectedElement(5628);
+ addExpectedElement(5629);
+ addExpectedElement(5630);
+ addExpectedElement(5631);
+ addExpectedElement(5632);
+ addExpectedElement(5633);
+ addExpectedElement(5634);
+ addExpectedElement(5635);
+ addExpectedElement(5636);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5637);
+ addExpectedElement(5638);
+ addExpectedElement(5639);
+ addExpectedElement(5640);
+ addExpectedElement(5641);
+ addExpectedElement(5642);
+ addExpectedElement(5643);
+ addExpectedElement(5644);
+ addExpectedElement(5645);
+ addExpectedElement(5646);
+ addExpectedElement(5647);
+ addExpectedElement(5648);
+ addExpectedElement(5649);
+ addExpectedElement(5650);
+ addExpectedElement(5651);
+ addExpectedElement(5652);
+ addExpectedElement(5653);
+ addExpectedElement(5654);
+ addExpectedElement(5655);
+ addExpectedElement(5656);
+ addExpectedElement(5657);
+ addExpectedElement(5658);
+ addExpectedElement(5659);
+ addExpectedElement(5660);
+ addExpectedElement(5661);
+ addExpectedElement(5662);
+ addExpectedElement(5663);
+ addExpectedElement(5664);
+ addExpectedElement(5665);
+ addExpectedElement(5666);
+ addExpectedElement(5667);
+ addExpectedElement(5668);
+ addExpectedElement(5669);
+ addExpectedElement(5670);
+ addExpectedElement(5671);
+ addExpectedElement(5672);
+ addExpectedElement(5673);
+ addExpectedElement(5674);
+ addExpectedElement(5675);
+ addExpectedElement(5676);
+ addExpectedElement(5677);
+ addExpectedElement(5678);
+ addExpectedElement(5679);
+ addExpectedElement(5680);
+ addExpectedElement(5681);
+ addExpectedElement(5682);
+ addExpectedElement(5683);
+ addExpectedElement(5684);
+ addExpectedElement(5685);
+ addExpectedElement(5686);
+ addExpectedElement(5687);
+ addExpectedElement(5688);
+ addExpectedElement(5689);
+ addExpectedElement(5690);
+ addExpectedElement(5691);
+ addExpectedElement(5692);
+ addExpectedElement(5693);
+ addExpectedElement(5694);
+ addExpectedElement(5695);
+ addExpectedElement(5696);
+ addExpectedElement(5697);
+ addExpectedElement(5698);
+ addExpectedElement(5699);
+ addExpectedElement(5700);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 35, parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped"
+ // Java.g:14215:1: parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped returns [org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped element = null] : (a0_0= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped element = null;
+
+ int parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped_StartIndex = input.index();
+
+ Token a2=null;
+ org.emftext.language.java.arrays.ArrayInitializer a0_0 =null;
+
+ org.emftext.language.java.arrays.ArraySelector a1_0 =null;
+
+ org.emftext.language.java.references.Reference a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return element; }
+
+ // Java.g:14218:2: ( (a0_0= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:14219:2: (a0_0= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ // Java.g:14219:2: (a0_0= parse_org_emftext_language_java_arrays_ArrayInitializer )
+ // Java.g:14220:3: a0_0= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12163);
+ a0_0=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesUntyped();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_UNTYPED__ARRAY_INITIALIZER), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_34_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5701);
+ addExpectedElement(5702);
+ addExpectedElement(5703);
+ addExpectedElement(5704);
+ addExpectedElement(5705);
+ addExpectedElement(5706);
+ addExpectedElement(5707);
+ addExpectedElement(5708);
+ addExpectedElement(5709);
+ addExpectedElement(5710);
+ addExpectedElement(5711);
+ addExpectedElement(5712);
+ addExpectedElement(5713);
+ addExpectedElement(5714);
+ addExpectedElement(5715);
+ addExpectedElement(5716);
+ addExpectedElement(5717);
+ addExpectedElement(5718);
+ addExpectedElement(5719);
+ addExpectedElement(5720);
+ addExpectedElement(5721);
+ addExpectedElement(5722);
+ addExpectedElement(5723);
+ addExpectedElement(5724);
+ addExpectedElement(5725);
+ addExpectedElement(5726);
+ addExpectedElement(5727);
+ addExpectedElement(5728);
+ addExpectedElement(5729);
+ addExpectedElement(5730);
+ addExpectedElement(5731);
+ addExpectedElement(5732);
+ addExpectedElement(5733);
+ addExpectedElement(5734);
+ addExpectedElement(5735);
+ addExpectedElement(5736);
+ addExpectedElement(5737);
+ addExpectedElement(5738);
+ addExpectedElement(5739);
+ addExpectedElement(5740);
+ addExpectedElement(5741);
+ addExpectedElement(5742);
+ addExpectedElement(5743);
+ addExpectedElement(5744);
+ addExpectedElement(5745);
+ addExpectedElement(5746);
+ addExpectedElement(5747);
+ addExpectedElement(5748);
+ addExpectedElement(5749);
+ addExpectedElement(5750);
+ addExpectedElement(5751);
+ addExpectedElement(5752);
+ addExpectedElement(5753);
+ addExpectedElement(5754);
+ addExpectedElement(5755);
+ addExpectedElement(5756);
+ addExpectedElement(5757);
+ addExpectedElement(5758);
+ addExpectedElement(5759);
+ addExpectedElement(5760);
+ addExpectedElement(5761);
+ addExpectedElement(5762);
+ addExpectedElement(5763);
+ addExpectedElement(5764);
+ addExpectedElement(5765);
+ addExpectedElement(5766);
+ }
+
+ // Java.g:14310:2: ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )*
+ loop139:
+ do {
+ int alt139=2;
+ int LA139_0 = input.LA(1);
+
+ if ( (LA139_0==49) ) {
+ alt139=1;
+ }
+
+
+ switch (alt139) {
+ case 1 :
+ // Java.g:14311:3: (a1_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ {
+ // Java.g:14311:3: (a1_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ // Java.g:14312:4: a1_0= parse_org_emftext_language_java_arrays_ArraySelector
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12190);
+ a1_0=parse_org_emftext_language_java_arrays_ArraySelector();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesUntyped();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_UNTYPED__ARRAY_SELECTORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_34_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop139;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5767);
+ addExpectedElement(5768);
+ addExpectedElement(5769);
+ addExpectedElement(5770);
+ addExpectedElement(5771);
+ addExpectedElement(5772);
+ addExpectedElement(5773);
+ addExpectedElement(5774);
+ addExpectedElement(5775);
+ addExpectedElement(5776);
+ addExpectedElement(5777);
+ addExpectedElement(5778);
+ addExpectedElement(5779);
+ addExpectedElement(5780);
+ addExpectedElement(5781);
+ addExpectedElement(5782);
+ addExpectedElement(5783);
+ addExpectedElement(5784);
+ addExpectedElement(5785);
+ addExpectedElement(5786);
+ addExpectedElement(5787);
+ addExpectedElement(5788);
+ addExpectedElement(5789);
+ addExpectedElement(5790);
+ addExpectedElement(5791);
+ addExpectedElement(5792);
+ addExpectedElement(5793);
+ addExpectedElement(5794);
+ addExpectedElement(5795);
+ addExpectedElement(5796);
+ addExpectedElement(5797);
+ addExpectedElement(5798);
+ addExpectedElement(5799);
+ addExpectedElement(5800);
+ addExpectedElement(5801);
+ addExpectedElement(5802);
+ addExpectedElement(5803);
+ addExpectedElement(5804);
+ addExpectedElement(5805);
+ addExpectedElement(5806);
+ addExpectedElement(5807);
+ addExpectedElement(5808);
+ addExpectedElement(5809);
+ addExpectedElement(5810);
+ addExpectedElement(5811);
+ addExpectedElement(5812);
+ addExpectedElement(5813);
+ addExpectedElement(5814);
+ addExpectedElement(5815);
+ addExpectedElement(5816);
+ addExpectedElement(5817);
+ addExpectedElement(5818);
+ addExpectedElement(5819);
+ addExpectedElement(5820);
+ addExpectedElement(5821);
+ addExpectedElement(5822);
+ addExpectedElement(5823);
+ addExpectedElement(5824);
+ addExpectedElement(5825);
+ addExpectedElement(5826);
+ addExpectedElement(5827);
+ addExpectedElement(5828);
+ addExpectedElement(5829);
+ addExpectedElement(5830);
+ addExpectedElement(5831);
+ addExpectedElement(5832);
+ }
+
+ // Java.g:14403:2: ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt140=2;
+ int LA140_0 = input.LA(1);
+
+ if ( (LA140_0==37) ) {
+ alt140=1;
+ }
+ switch (alt140) {
+ case 1 :
+ // Java.g:14404:3: (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:14404:3: (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:14405:4: a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a2=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12225); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesUntyped();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_34_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5833);
+ addExpectedElement(5834);
+ addExpectedElement(5835);
+ addExpectedElement(5836);
+ addExpectedElement(5837);
+ addExpectedElement(5838);
+ addExpectedElement(5839);
+ addExpectedElement(5840);
+ addExpectedElement(5841);
+ addExpectedElement(5842);
+ addExpectedElement(5843);
+ addExpectedElement(5844);
+ addExpectedElement(5845);
+ addExpectedElement(5846);
+ addExpectedElement(5847);
+ addExpectedElement(5848);
+ addExpectedElement(5849);
+ addExpectedElement(5850);
+ addExpectedElement(5851);
+ addExpectedElement(5852);
+ addExpectedElement(5853);
+ addExpectedElement(5854);
+ addExpectedElement(5855);
+ }
+
+ // Java.g:14441:4: (a3_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:14442:5: a3_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12251);
+ a3_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationByValuesUntyped();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_VALUES_UNTYPED__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_34_0_0_2_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5856);
+ addExpectedElement(5857);
+ addExpectedElement(5858);
+ addExpectedElement(5859);
+ addExpectedElement(5860);
+ addExpectedElement(5861);
+ addExpectedElement(5862);
+ addExpectedElement(5863);
+ addExpectedElement(5864);
+ addExpectedElement(5865);
+ addExpectedElement(5866);
+ addExpectedElement(5867);
+ addExpectedElement(5868);
+ addExpectedElement(5869);
+ addExpectedElement(5870);
+ addExpectedElement(5871);
+ addExpectedElement(5872);
+ addExpectedElement(5873);
+ addExpectedElement(5874);
+ addExpectedElement(5875);
+ addExpectedElement(5876);
+ addExpectedElement(5877);
+ addExpectedElement(5878);
+ addExpectedElement(5879);
+ addExpectedElement(5880);
+ addExpectedElement(5881);
+ addExpectedElement(5882);
+ addExpectedElement(5883);
+ addExpectedElement(5884);
+ addExpectedElement(5885);
+ addExpectedElement(5886);
+ addExpectedElement(5887);
+ addExpectedElement(5888);
+ addExpectedElement(5889);
+ addExpectedElement(5890);
+ addExpectedElement(5891);
+ addExpectedElement(5892);
+ addExpectedElement(5893);
+ addExpectedElement(5894);
+ addExpectedElement(5895);
+ addExpectedElement(5896);
+ addExpectedElement(5897);
+ addExpectedElement(5898);
+ addExpectedElement(5899);
+ addExpectedElement(5900);
+ addExpectedElement(5901);
+ addExpectedElement(5902);
+ addExpectedElement(5903);
+ addExpectedElement(5904);
+ addExpectedElement(5905);
+ addExpectedElement(5906);
+ addExpectedElement(5907);
+ addExpectedElement(5908);
+ addExpectedElement(5909);
+ addExpectedElement(5910);
+ addExpectedElement(5911);
+ addExpectedElement(5912);
+ addExpectedElement(5913);
+ addExpectedElement(5914);
+ addExpectedElement(5915);
+ addExpectedElement(5916);
+ addExpectedElement(5917);
+ addExpectedElement(5918);
+ addExpectedElement(5919);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5920);
+ addExpectedElement(5921);
+ addExpectedElement(5922);
+ addExpectedElement(5923);
+ addExpectedElement(5924);
+ addExpectedElement(5925);
+ addExpectedElement(5926);
+ addExpectedElement(5927);
+ addExpectedElement(5928);
+ addExpectedElement(5929);
+ addExpectedElement(5930);
+ addExpectedElement(5931);
+ addExpectedElement(5932);
+ addExpectedElement(5933);
+ addExpectedElement(5934);
+ addExpectedElement(5935);
+ addExpectedElement(5936);
+ addExpectedElement(5937);
+ addExpectedElement(5938);
+ addExpectedElement(5939);
+ addExpectedElement(5940);
+ addExpectedElement(5941);
+ addExpectedElement(5942);
+ addExpectedElement(5943);
+ addExpectedElement(5944);
+ addExpectedElement(5945);
+ addExpectedElement(5946);
+ addExpectedElement(5947);
+ addExpectedElement(5948);
+ addExpectedElement(5949);
+ addExpectedElement(5950);
+ addExpectedElement(5951);
+ addExpectedElement(5952);
+ addExpectedElement(5953);
+ addExpectedElement(5954);
+ addExpectedElement(5955);
+ addExpectedElement(5956);
+ addExpectedElement(5957);
+ addExpectedElement(5958);
+ addExpectedElement(5959);
+ addExpectedElement(5960);
+ addExpectedElement(5961);
+ addExpectedElement(5962);
+ addExpectedElement(5963);
+ addExpectedElement(5964);
+ addExpectedElement(5965);
+ addExpectedElement(5966);
+ addExpectedElement(5967);
+ addExpectedElement(5968);
+ addExpectedElement(5969);
+ addExpectedElement(5970);
+ addExpectedElement(5971);
+ addExpectedElement(5972);
+ addExpectedElement(5973);
+ addExpectedElement(5974);
+ addExpectedElement(5975);
+ addExpectedElement(5976);
+ addExpectedElement(5977);
+ addExpectedElement(5978);
+ addExpectedElement(5979);
+ addExpectedElement(5980);
+ addExpectedElement(5981);
+ addExpectedElement(5982);
+ addExpectedElement(5983);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 36, parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_arrays_ArrayInstantiationBySize"
+ // Java.g:14602:1: parse_org_emftext_language_java_arrays_ArrayInstantiationBySize returns [org.emftext.language.java.arrays.ArrayInstantiationBySize element = null] : a0= 'new' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2= '[' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a4= ']' ) )+ ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a6= '.' (a7_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.arrays.ArrayInstantiationBySize parse_org_emftext_language_java_arrays_ArrayInstantiationBySize() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInstantiationBySize element = null;
+
+ int parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a4=null;
+ Token a6=null;
+ org.emftext.language.java.types.TypeReference a1_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a3_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a5_0 =null;
+
+ org.emftext.language.java.references.Reference a7_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return element; }
+
+ // Java.g:14605:2: (a0= 'new' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2= '[' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a4= ']' ) )+ ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a6= '.' (a7_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:14606:2: a0= 'new' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2= '[' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a4= ']' ) )+ ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a6= '.' (a7_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ a0=(Token)match(input,84,FOLLOW_84_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12307); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5984);
+ addExpectedElement(5985);
+ addExpectedElement(5986);
+ addExpectedElement(5987);
+ addExpectedElement(5988);
+ addExpectedElement(5989);
+ addExpectedElement(5990);
+ addExpectedElement(5991);
+ addExpectedElement(5992);
+ addExpectedElement(5993);
+ addExpectedElement(5994);
+ }
+
+ // Java.g:14630:2: (a1_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:14631:3: a1_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12325);
+ a1_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5995);
+ }
+
+ // Java.g:14656:2: ( (a2= '[' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a4= ']' ) )+
+ int cnt141=0;
+ loop141:
+ do {
+ int alt141=2;
+ int LA141_0 = input.LA(1);
+
+ if ( (LA141_0==49) ) {
+ int LA141_1 = input.LA(2);
+
+ if ( ((LA141_1 >= BOOLEAN_LITERAL && LA141_1 <= IDENTIFIER)||(LA141_1 >= OCTAL_INTEGER_LITERAL && LA141_1 <= OCTAL_LONG_LITERAL)||LA141_1==STRING_LITERAL||LA141_1==21||LA141_1==26||(LA141_1 >= 30 && LA141_1 <= 31)||(LA141_1 >= 34 && LA141_1 <= 35)||LA141_1==43||LA141_1==48||LA141_1==58||LA141_1==60||(LA141_1 >= 63 && LA141_1 <= 64)||LA141_1==68||LA141_1==74||LA141_1==80||LA141_1==82||(LA141_1 >= 84 && LA141_1 <= 85)||LA141_1==91||LA141_1==94||LA141_1==97||LA141_1==102||LA141_1==105||LA141_1==110) ) {
+ alt141=1;
+ }
+
+
+ }
+
+
+ switch (alt141) {
+ case 1 :
+ // Java.g:14657:3: (a2= '[' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a4= ']' )
+ {
+ // Java.g:14657:3: (a2= '[' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a4= ']' )
+ // Java.g:14658:4: a2= '[' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a4= ']'
+ {
+ a2=(Token)match(input,49,FOLLOW_49_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12352); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(5996);
+ addExpectedElement(5997);
+ addExpectedElement(5998);
+ addExpectedElement(5999);
+ addExpectedElement(6000);
+ addExpectedElement(6001);
+ addExpectedElement(6002);
+ addExpectedElement(6003);
+ addExpectedElement(6004);
+ addExpectedElement(6005);
+ addExpectedElement(6006);
+ addExpectedElement(6007);
+ addExpectedElement(6008);
+ addExpectedElement(6009);
+ addExpectedElement(6010);
+ addExpectedElement(6011);
+ addExpectedElement(6012);
+ addExpectedElement(6013);
+ addExpectedElement(6014);
+ addExpectedElement(6015);
+ addExpectedElement(6016);
+ addExpectedElement(6017);
+ addExpectedElement(6018);
+ addExpectedElement(6019);
+ addExpectedElement(6020);
+ addExpectedElement(6021);
+ addExpectedElement(6022);
+ addExpectedElement(6023);
+ addExpectedElement(6024);
+ addExpectedElement(6025);
+ addExpectedElement(6026);
+ addExpectedElement(6027);
+ addExpectedElement(6028);
+ addExpectedElement(6029);
+ addExpectedElement(6030);
+ addExpectedElement(6031);
+ addExpectedElement(6032);
+ addExpectedElement(6033);
+ addExpectedElement(6034);
+ addExpectedElement(6035);
+ addExpectedElement(6036);
+ addExpectedElement(6037);
+ addExpectedElement(6038);
+ }
+
+ // Java.g:14714:4: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:14715:5: a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12378);
+ a3_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__SIZES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_2_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6039);
+ }
+
+ a4=(Token)match(input,53,FOLLOW_53_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12406); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_2_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6040);
+ addExpectedElement(6041);
+ addExpectedElement(6042);
+ addExpectedElement(6043);
+ addExpectedElement(6044);
+ addExpectedElement(6045);
+ addExpectedElement(6046);
+ addExpectedElement(6047);
+ addExpectedElement(6048);
+ addExpectedElement(6049);
+ addExpectedElement(6050);
+ addExpectedElement(6051);
+ addExpectedElement(6052);
+ addExpectedElement(6053);
+ addExpectedElement(6054);
+ addExpectedElement(6055);
+ addExpectedElement(6056);
+ addExpectedElement(6057);
+ addExpectedElement(6058);
+ addExpectedElement(6059);
+ addExpectedElement(6060);
+ addExpectedElement(6061);
+ addExpectedElement(6062);
+ addExpectedElement(6063);
+ addExpectedElement(6064);
+ addExpectedElement(6065);
+ addExpectedElement(6066);
+ addExpectedElement(6067);
+ addExpectedElement(6068);
+ addExpectedElement(6069);
+ addExpectedElement(6070);
+ addExpectedElement(6071);
+ addExpectedElement(6072);
+ addExpectedElement(6073);
+ addExpectedElement(6074);
+ addExpectedElement(6075);
+ addExpectedElement(6076);
+ addExpectedElement(6077);
+ addExpectedElement(6078);
+ addExpectedElement(6079);
+ addExpectedElement(6080);
+ addExpectedElement(6081);
+ addExpectedElement(6082);
+ addExpectedElement(6083);
+ addExpectedElement(6084);
+ addExpectedElement(6085);
+ addExpectedElement(6086);
+ addExpectedElement(6087);
+ addExpectedElement(6088);
+ addExpectedElement(6089);
+ addExpectedElement(6090);
+ addExpectedElement(6091);
+ addExpectedElement(6092);
+ addExpectedElement(6093);
+ addExpectedElement(6094);
+ addExpectedElement(6095);
+ addExpectedElement(6096);
+ addExpectedElement(6097);
+ addExpectedElement(6098);
+ addExpectedElement(6099);
+ addExpectedElement(6100);
+ addExpectedElement(6101);
+ addExpectedElement(6102);
+ addExpectedElement(6103);
+ addExpectedElement(6104);
+ addExpectedElement(6105);
+ addExpectedElement(6106);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ if ( cnt141 >= 1 ) break loop141;
+ if (state.backtracking>0) {state.failed=true; return element;}
+ EarlyExitException eee =
+ new EarlyExitException(141, input);
+ throw eee;
+ }
+ cnt141++;
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6107);
+ addExpectedElement(6108);
+ addExpectedElement(6109);
+ addExpectedElement(6110);
+ addExpectedElement(6111);
+ addExpectedElement(6112);
+ addExpectedElement(6113);
+ addExpectedElement(6114);
+ addExpectedElement(6115);
+ addExpectedElement(6116);
+ addExpectedElement(6117);
+ addExpectedElement(6118);
+ addExpectedElement(6119);
+ addExpectedElement(6120);
+ addExpectedElement(6121);
+ addExpectedElement(6122);
+ addExpectedElement(6123);
+ addExpectedElement(6124);
+ addExpectedElement(6125);
+ addExpectedElement(6126);
+ addExpectedElement(6127);
+ addExpectedElement(6128);
+ addExpectedElement(6129);
+ addExpectedElement(6130);
+ addExpectedElement(6131);
+ addExpectedElement(6132);
+ addExpectedElement(6133);
+ addExpectedElement(6134);
+ addExpectedElement(6135);
+ addExpectedElement(6136);
+ addExpectedElement(6137);
+ addExpectedElement(6138);
+ addExpectedElement(6139);
+ addExpectedElement(6140);
+ addExpectedElement(6141);
+ addExpectedElement(6142);
+ addExpectedElement(6143);
+ addExpectedElement(6144);
+ addExpectedElement(6145);
+ addExpectedElement(6146);
+ addExpectedElement(6147);
+ addExpectedElement(6148);
+ addExpectedElement(6149);
+ addExpectedElement(6150);
+ addExpectedElement(6151);
+ addExpectedElement(6152);
+ addExpectedElement(6153);
+ addExpectedElement(6154);
+ addExpectedElement(6155);
+ addExpectedElement(6156);
+ addExpectedElement(6157);
+ addExpectedElement(6158);
+ addExpectedElement(6159);
+ addExpectedElement(6160);
+ addExpectedElement(6161);
+ addExpectedElement(6162);
+ addExpectedElement(6163);
+ addExpectedElement(6164);
+ addExpectedElement(6165);
+ addExpectedElement(6166);
+ addExpectedElement(6167);
+ addExpectedElement(6168);
+ addExpectedElement(6169);
+ addExpectedElement(6170);
+ addExpectedElement(6171);
+ addExpectedElement(6172);
+ addExpectedElement(6173);
+ }
+
+ // Java.g:14893:2: ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop142:
+ do {
+ int alt142=2;
+ int LA142_0 = input.LA(1);
+
+ if ( (LA142_0==49) ) {
+ alt142=1;
+ }
+
+
+ switch (alt142) {
+ case 1 :
+ // Java.g:14894:3: (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:14894:3: (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:14895:4: a5_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12448);
+ a5_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_3, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop142;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6174);
+ addExpectedElement(6175);
+ addExpectedElement(6176);
+ addExpectedElement(6177);
+ addExpectedElement(6178);
+ addExpectedElement(6179);
+ addExpectedElement(6180);
+ addExpectedElement(6181);
+ addExpectedElement(6182);
+ addExpectedElement(6183);
+ addExpectedElement(6184);
+ addExpectedElement(6185);
+ addExpectedElement(6186);
+ addExpectedElement(6187);
+ addExpectedElement(6188);
+ addExpectedElement(6189);
+ addExpectedElement(6190);
+ addExpectedElement(6191);
+ addExpectedElement(6192);
+ addExpectedElement(6193);
+ addExpectedElement(6194);
+ addExpectedElement(6195);
+ addExpectedElement(6196);
+ addExpectedElement(6197);
+ addExpectedElement(6198);
+ addExpectedElement(6199);
+ addExpectedElement(6200);
+ addExpectedElement(6201);
+ addExpectedElement(6202);
+ addExpectedElement(6203);
+ addExpectedElement(6204);
+ addExpectedElement(6205);
+ addExpectedElement(6206);
+ addExpectedElement(6207);
+ addExpectedElement(6208);
+ addExpectedElement(6209);
+ addExpectedElement(6210);
+ addExpectedElement(6211);
+ addExpectedElement(6212);
+ addExpectedElement(6213);
+ addExpectedElement(6214);
+ addExpectedElement(6215);
+ addExpectedElement(6216);
+ addExpectedElement(6217);
+ addExpectedElement(6218);
+ addExpectedElement(6219);
+ addExpectedElement(6220);
+ addExpectedElement(6221);
+ addExpectedElement(6222);
+ addExpectedElement(6223);
+ addExpectedElement(6224);
+ addExpectedElement(6225);
+ addExpectedElement(6226);
+ addExpectedElement(6227);
+ addExpectedElement(6228);
+ addExpectedElement(6229);
+ addExpectedElement(6230);
+ addExpectedElement(6231);
+ addExpectedElement(6232);
+ addExpectedElement(6233);
+ addExpectedElement(6234);
+ addExpectedElement(6235);
+ addExpectedElement(6236);
+ addExpectedElement(6237);
+ addExpectedElement(6238);
+ addExpectedElement(6239);
+ }
+
+ // Java.g:14986:2: ( (a6= '.' (a7_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt143=2;
+ int LA143_0 = input.LA(1);
+
+ if ( (LA143_0==37) ) {
+ alt143=1;
+ }
+ switch (alt143) {
+ case 1 :
+ // Java.g:14987:3: (a6= '.' (a7_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:14987:3: (a6= '.' (a7_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:14988:4: a6= '.' (a7_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a6=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12483); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_4_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6240);
+ addExpectedElement(6241);
+ addExpectedElement(6242);
+ addExpectedElement(6243);
+ addExpectedElement(6244);
+ addExpectedElement(6245);
+ addExpectedElement(6246);
+ addExpectedElement(6247);
+ addExpectedElement(6248);
+ addExpectedElement(6249);
+ addExpectedElement(6250);
+ addExpectedElement(6251);
+ addExpectedElement(6252);
+ addExpectedElement(6253);
+ addExpectedElement(6254);
+ addExpectedElement(6255);
+ addExpectedElement(6256);
+ addExpectedElement(6257);
+ addExpectedElement(6258);
+ addExpectedElement(6259);
+ addExpectedElement(6260);
+ addExpectedElement(6261);
+ addExpectedElement(6262);
+ }
+
+ // Java.g:15024:4: (a7_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:15025:5: a7_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12509);
+ a7_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInstantiationBySize();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_INSTANTIATION_BY_SIZE__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_35_0_0_4_0_0_1, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6263);
+ addExpectedElement(6264);
+ addExpectedElement(6265);
+ addExpectedElement(6266);
+ addExpectedElement(6267);
+ addExpectedElement(6268);
+ addExpectedElement(6269);
+ addExpectedElement(6270);
+ addExpectedElement(6271);
+ addExpectedElement(6272);
+ addExpectedElement(6273);
+ addExpectedElement(6274);
+ addExpectedElement(6275);
+ addExpectedElement(6276);
+ addExpectedElement(6277);
+ addExpectedElement(6278);
+ addExpectedElement(6279);
+ addExpectedElement(6280);
+ addExpectedElement(6281);
+ addExpectedElement(6282);
+ addExpectedElement(6283);
+ addExpectedElement(6284);
+ addExpectedElement(6285);
+ addExpectedElement(6286);
+ addExpectedElement(6287);
+ addExpectedElement(6288);
+ addExpectedElement(6289);
+ addExpectedElement(6290);
+ addExpectedElement(6291);
+ addExpectedElement(6292);
+ addExpectedElement(6293);
+ addExpectedElement(6294);
+ addExpectedElement(6295);
+ addExpectedElement(6296);
+ addExpectedElement(6297);
+ addExpectedElement(6298);
+ addExpectedElement(6299);
+ addExpectedElement(6300);
+ addExpectedElement(6301);
+ addExpectedElement(6302);
+ addExpectedElement(6303);
+ addExpectedElement(6304);
+ addExpectedElement(6305);
+ addExpectedElement(6306);
+ addExpectedElement(6307);
+ addExpectedElement(6308);
+ addExpectedElement(6309);
+ addExpectedElement(6310);
+ addExpectedElement(6311);
+ addExpectedElement(6312);
+ addExpectedElement(6313);
+ addExpectedElement(6314);
+ addExpectedElement(6315);
+ addExpectedElement(6316);
+ addExpectedElement(6317);
+ addExpectedElement(6318);
+ addExpectedElement(6319);
+ addExpectedElement(6320);
+ addExpectedElement(6321);
+ addExpectedElement(6322);
+ addExpectedElement(6323);
+ addExpectedElement(6324);
+ addExpectedElement(6325);
+ addExpectedElement(6326);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6327);
+ addExpectedElement(6328);
+ addExpectedElement(6329);
+ addExpectedElement(6330);
+ addExpectedElement(6331);
+ addExpectedElement(6332);
+ addExpectedElement(6333);
+ addExpectedElement(6334);
+ addExpectedElement(6335);
+ addExpectedElement(6336);
+ addExpectedElement(6337);
+ addExpectedElement(6338);
+ addExpectedElement(6339);
+ addExpectedElement(6340);
+ addExpectedElement(6341);
+ addExpectedElement(6342);
+ addExpectedElement(6343);
+ addExpectedElement(6344);
+ addExpectedElement(6345);
+ addExpectedElement(6346);
+ addExpectedElement(6347);
+ addExpectedElement(6348);
+ addExpectedElement(6349);
+ addExpectedElement(6350);
+ addExpectedElement(6351);
+ addExpectedElement(6352);
+ addExpectedElement(6353);
+ addExpectedElement(6354);
+ addExpectedElement(6355);
+ addExpectedElement(6356);
+ addExpectedElement(6357);
+ addExpectedElement(6358);
+ addExpectedElement(6359);
+ addExpectedElement(6360);
+ addExpectedElement(6361);
+ addExpectedElement(6362);
+ addExpectedElement(6363);
+ addExpectedElement(6364);
+ addExpectedElement(6365);
+ addExpectedElement(6366);
+ addExpectedElement(6367);
+ addExpectedElement(6368);
+ addExpectedElement(6369);
+ addExpectedElement(6370);
+ addExpectedElement(6371);
+ addExpectedElement(6372);
+ addExpectedElement(6373);
+ addExpectedElement(6374);
+ addExpectedElement(6375);
+ addExpectedElement(6376);
+ addExpectedElement(6377);
+ addExpectedElement(6378);
+ addExpectedElement(6379);
+ addExpectedElement(6380);
+ addExpectedElement(6381);
+ addExpectedElement(6382);
+ addExpectedElement(6383);
+ addExpectedElement(6384);
+ addExpectedElement(6385);
+ addExpectedElement(6386);
+ addExpectedElement(6387);
+ addExpectedElement(6388);
+ addExpectedElement(6389);
+ addExpectedElement(6390);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 37, parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_arrays_ArrayInstantiationBySize"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_arrays_ArrayInitializer"
+ // Java.g:15185:1: parse_org_emftext_language_java_arrays_ArrayInitializer returns [org.emftext.language.java.arrays.ArrayInitializer element = null] : a0= '{' ( ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )* ) )? ( (a4= ',' ) )? a5= '}' ;
+ public final org.emftext.language.java.arrays.ArrayInitializer parse_org_emftext_language_java_arrays_ArrayInitializer() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInitializer element = null;
+
+ int parse_org_emftext_language_java_arrays_ArrayInitializer_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a4=null;
+ Token a5=null;
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+ org.emftext.language.java.arrays.ArrayInitializer a1_1 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a3_0 =null;
+
+ org.emftext.language.java.arrays.ArrayInitializer a3_1 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return element; }
+
+ // Java.g:15188:2: (a0= '{' ( ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )* ) )? ( (a4= ',' ) )? a5= '}' )
+ // Java.g:15189:2: a0= '{' ( ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )* ) )? ( (a4= ',' ) )? a5= '}'
+ {
+ a0=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_arrays_ArrayInitializer12565); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6391);
+ addExpectedElement(6392);
+ addExpectedElement(6393);
+ addExpectedElement(6394);
+ addExpectedElement(6395);
+ addExpectedElement(6396);
+ addExpectedElement(6397);
+ addExpectedElement(6398);
+ addExpectedElement(6399);
+ addExpectedElement(6400);
+ addExpectedElement(6401);
+ addExpectedElement(6402);
+ addExpectedElement(6403);
+ addExpectedElement(6404);
+ addExpectedElement(6405);
+ addExpectedElement(6406);
+ addExpectedElement(6407);
+ addExpectedElement(6408);
+ addExpectedElement(6409);
+ addExpectedElement(6410);
+ addExpectedElement(6411);
+ addExpectedElement(6412);
+ addExpectedElement(6413);
+ addExpectedElement(6414);
+ addExpectedElement(6415);
+ addExpectedElement(6416);
+ addExpectedElement(6417);
+ addExpectedElement(6418);
+ addExpectedElement(6419);
+ addExpectedElement(6420);
+ addExpectedElement(6421);
+ addExpectedElement(6422);
+ addExpectedElement(6423);
+ addExpectedElement(6424);
+ addExpectedElement(6425);
+ addExpectedElement(6426);
+ addExpectedElement(6427);
+ addExpectedElement(6428);
+ addExpectedElement(6429);
+ addExpectedElement(6430);
+ addExpectedElement(6431);
+ addExpectedElement(6432);
+ addExpectedElement(6433);
+ addExpectedElement(6434);
+ addExpectedElement(6435);
+ }
+
+ // Java.g:15247:2: ( ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )* ) )?
+ int alt147=2;
+ int LA147_0 = input.LA(1);
+
+ if ( ((LA147_0 >= BOOLEAN_LITERAL && LA147_0 <= IDENTIFIER)||(LA147_0 >= OCTAL_INTEGER_LITERAL && LA147_0 <= OCTAL_LONG_LITERAL)||LA147_0==STRING_LITERAL||LA147_0==21||LA147_0==26||(LA147_0 >= 30 && LA147_0 <= 31)||(LA147_0 >= 34 && LA147_0 <= 35)||LA147_0==43||LA147_0==48||LA147_0==58||LA147_0==60||(LA147_0 >= 63 && LA147_0 <= 64)||LA147_0==68||LA147_0==74||LA147_0==80||LA147_0==82||(LA147_0 >= 84 && LA147_0 <= 85)||LA147_0==91||LA147_0==94||LA147_0==97||LA147_0==102||LA147_0==105||LA147_0==110) ) {
+ alt147=1;
+ }
+ switch (alt147) {
+ case 1 :
+ // Java.g:15248:3: ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )* )
+ {
+ // Java.g:15248:3: ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )* )
+ // Java.g:15249:4: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )*
+ {
+ // Java.g:15249:4: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer )
+ int alt144=2;
+ int LA144_0 = input.LA(1);
+
+ if ( ((LA144_0 >= BOOLEAN_LITERAL && LA144_0 <= IDENTIFIER)||(LA144_0 >= OCTAL_INTEGER_LITERAL && LA144_0 <= OCTAL_LONG_LITERAL)||LA144_0==STRING_LITERAL||LA144_0==21||LA144_0==26||(LA144_0 >= 30 && LA144_0 <= 31)||(LA144_0 >= 34 && LA144_0 <= 35)||LA144_0==43||LA144_0==48||LA144_0==58||LA144_0==60||(LA144_0 >= 63 && LA144_0 <= 64)||LA144_0==68||LA144_0==74||LA144_0==80||LA144_0==82||(LA144_0 >= 84 && LA144_0 <= 85)||LA144_0==91||LA144_0==94||LA144_0==97||LA144_0==102||LA144_0==110) ) {
+ alt144=1;
+ }
+ else if ( (LA144_0==105) ) {
+ int LA144_10 = input.LA(2);
+
+ if ( (synpred145_Java()) ) {
+ alt144=1;
+ }
+ else if ( (true) ) {
+ alt144=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 144, 10, input);
+
+ throw nvae;
+
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 144, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt144) {
+ case 1 :
+ // Java.g:15250:5: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArrayInitializer12594);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INITIALIZER__INITIAL_VALUES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_2_0_0_0, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:15269:10: a1_1= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInitializer12614);
+ a1_1=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ if (a1_1 != null) {
+ if (a1_1 != null) {
+ Object value = a1_1;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INITIALIZER__INITIAL_VALUES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_2_0_0_0, a1_1, true);
+ copyLocalizationInfos(a1_1, element);
+ }
+ }
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6436);
+ addExpectedElement(6437);
+ addExpectedElement(6438);
+ }
+
+ // Java.g:15296:4: ( (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) ) )*
+ loop146:
+ do {
+ int alt146=2;
+ int LA146_0 = input.LA(1);
+
+ if ( (LA146_0==33) ) {
+ int LA146_1 = input.LA(2);
+
+ if ( ((LA146_1 >= BOOLEAN_LITERAL && LA146_1 <= IDENTIFIER)||(LA146_1 >= OCTAL_INTEGER_LITERAL && LA146_1 <= OCTAL_LONG_LITERAL)||LA146_1==STRING_LITERAL||LA146_1==21||LA146_1==26||(LA146_1 >= 30 && LA146_1 <= 31)||(LA146_1 >= 34 && LA146_1 <= 35)||LA146_1==43||LA146_1==48||LA146_1==58||LA146_1==60||(LA146_1 >= 63 && LA146_1 <= 64)||LA146_1==68||LA146_1==74||LA146_1==80||LA146_1==82||(LA146_1 >= 84 && LA146_1 <= 85)||LA146_1==91||LA146_1==94||LA146_1==97||LA146_1==102||LA146_1==105||LA146_1==110) ) {
+ alt146=1;
+ }
+
+
+ }
+
+
+ switch (alt146) {
+ case 1 :
+ // Java.g:15297:5: (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) )
+ {
+ // Java.g:15297:5: (a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer ) )
+ // Java.g:15298:6: a2= ',' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer )
+ {
+ a2=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_arrays_ArrayInitializer12655); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_2_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6439);
+ addExpectedElement(6440);
+ addExpectedElement(6441);
+ addExpectedElement(6442);
+ addExpectedElement(6443);
+ addExpectedElement(6444);
+ addExpectedElement(6445);
+ addExpectedElement(6446);
+ addExpectedElement(6447);
+ addExpectedElement(6448);
+ addExpectedElement(6449);
+ addExpectedElement(6450);
+ addExpectedElement(6451);
+ addExpectedElement(6452);
+ addExpectedElement(6453);
+ addExpectedElement(6454);
+ addExpectedElement(6455);
+ addExpectedElement(6456);
+ addExpectedElement(6457);
+ addExpectedElement(6458);
+ addExpectedElement(6459);
+ addExpectedElement(6460);
+ addExpectedElement(6461);
+ addExpectedElement(6462);
+ addExpectedElement(6463);
+ addExpectedElement(6464);
+ addExpectedElement(6465);
+ addExpectedElement(6466);
+ addExpectedElement(6467);
+ addExpectedElement(6468);
+ addExpectedElement(6469);
+ addExpectedElement(6470);
+ addExpectedElement(6471);
+ addExpectedElement(6472);
+ addExpectedElement(6473);
+ addExpectedElement(6474);
+ addExpectedElement(6475);
+ addExpectedElement(6476);
+ addExpectedElement(6477);
+ addExpectedElement(6478);
+ addExpectedElement(6479);
+ addExpectedElement(6480);
+ addExpectedElement(6481);
+ }
+
+ // Java.g:15354:6: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression |a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer )
+ int alt145=2;
+ int LA145_0 = input.LA(1);
+
+ if ( ((LA145_0 >= BOOLEAN_LITERAL && LA145_0 <= IDENTIFIER)||(LA145_0 >= OCTAL_INTEGER_LITERAL && LA145_0 <= OCTAL_LONG_LITERAL)||LA145_0==STRING_LITERAL||LA145_0==21||LA145_0==26||(LA145_0 >= 30 && LA145_0 <= 31)||(LA145_0 >= 34 && LA145_0 <= 35)||LA145_0==43||LA145_0==48||LA145_0==58||LA145_0==60||(LA145_0 >= 63 && LA145_0 <= 64)||LA145_0==68||LA145_0==74||LA145_0==80||LA145_0==82||(LA145_0 >= 84 && LA145_0 <= 85)||LA145_0==91||LA145_0==94||LA145_0==97||LA145_0==102||LA145_0==110) ) {
+ alt145=1;
+ }
+ else if ( (LA145_0==105) ) {
+ int LA145_10 = input.LA(2);
+
+ if ( (synpred146_Java()) ) {
+ alt145=1;
+ }
+ else if ( (true) ) {
+ alt145=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 145, 10, input);
+
+ throw nvae;
+
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 145, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt145) {
+ case 1 :
+ // Java.g:15355:7: a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArrayInitializer12689);
+ a3_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INITIALIZER__INITIAL_VALUES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_2_0_0_1_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:15374:14: a3_1= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInitializer12715);
+ a3_1=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ if (a3_1 != null) {
+ if (a3_1 != null) {
+ Object value = a3_1;
+ addObjectToList(element, org.emftext.language.java.arrays.ArraysPackage.ARRAY_INITIALIZER__INITIAL_VALUES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_2_0_0_1_0_0_1, a3_1, true);
+ copyLocalizationInfos(a3_1, element);
+ }
+ }
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6482);
+ addExpectedElement(6483);
+ addExpectedElement(6484);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop146;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6485);
+ addExpectedElement(6486);
+ addExpectedElement(6487);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6488);
+ addExpectedElement(6489);
+ }
+
+ // Java.g:15418:2: ( (a4= ',' ) )?
+ int alt148=2;
+ int LA148_0 = input.LA(1);
+
+ if ( (LA148_0==33) ) {
+ alt148=1;
+ }
+ switch (alt148) {
+ case 1 :
+ // Java.g:15419:3: (a4= ',' )
+ {
+ // Java.g:15419:3: (a4= ',' )
+ // Java.g:15420:4: a4= ','
+ {
+ a4=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_arrays_ArrayInitializer12798); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6490);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6491);
+ }
+
+ a5=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_arrays_ArrayInitializer12831); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayInitializer();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_36_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6492);
+ addExpectedElement(6493);
+ addExpectedElement(6494);
+ addExpectedElement(6495);
+ addExpectedElement(6496);
+ addExpectedElement(6497);
+ addExpectedElement(6498);
+ addExpectedElement(6499);
+ addExpectedElement(6500);
+ addExpectedElement(6501);
+ addExpectedElement(6502);
+ addExpectedElement(6503);
+ addExpectedElement(6504);
+ addExpectedElement(6505);
+ addExpectedElement(6506);
+ addExpectedElement(6507);
+ addExpectedElement(6508);
+ addExpectedElement(6509);
+ addExpectedElement(6510);
+ addExpectedElement(6511);
+ addExpectedElement(6512);
+ addExpectedElement(6513);
+ addExpectedElement(6514);
+ addExpectedElement(6515);
+ addExpectedElement(6516);
+ addExpectedElement(6517);
+ addExpectedElement(6518);
+ addExpectedElement(6519);
+ addExpectedElement(6520);
+ addExpectedElement(6521);
+ addExpectedElement(6522);
+ addExpectedElement(6523);
+ addExpectedElement(6524);
+ addExpectedElement(6525);
+ addExpectedElement(6526);
+ addExpectedElement(6527);
+ addExpectedElement(6528);
+ addExpectedElement(6529);
+ addExpectedElement(6530);
+ addExpectedElement(6531);
+ addExpectedElement(6532);
+ addExpectedElement(6533);
+ addExpectedElement(6534);
+ addExpectedElement(6535);
+ addExpectedElement(6536);
+ addExpectedElement(6537);
+ addExpectedElement(6538);
+ addExpectedElement(6539);
+ addExpectedElement(6540);
+ addExpectedElement(6541);
+ addExpectedElement(6542);
+ addExpectedElement(6543);
+ addExpectedElement(6544);
+ addExpectedElement(6545);
+ addExpectedElement(6546);
+ addExpectedElement(6547);
+ addExpectedElement(6548);
+ addExpectedElement(6549);
+ addExpectedElement(6550);
+ addExpectedElement(6551);
+ addExpectedElement(6552);
+ addExpectedElement(6553);
+ addExpectedElement(6554);
+ addExpectedElement(6555);
+ addExpectedElement(6556);
+ addExpectedElement(6557);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 38, parse_org_emftext_language_java_arrays_ArrayInitializer_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_arrays_ArrayInitializer"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_arrays_ArraySelector"
+ // Java.g:15522:1: parse_org_emftext_language_java_arrays_ArraySelector returns [org.emftext.language.java.arrays.ArraySelector element = null] : a0= '[' ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a2= ']' ;
+ public final org.emftext.language.java.arrays.ArraySelector parse_org_emftext_language_java_arrays_ArraySelector() throws RecognitionException {
+ org.emftext.language.java.arrays.ArraySelector element = null;
+
+ int parse_org_emftext_language_java_arrays_ArraySelector_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return element; }
+
+ // Java.g:15525:2: (a0= '[' ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a2= ']' )
+ // Java.g:15526:2: a0= '[' ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a2= ']'
+ {
+ a0=(Token)match(input,49,FOLLOW_49_in_parse_org_emftext_language_java_arrays_ArraySelector12860); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArraySelector();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_37_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6558);
+ addExpectedElement(6559);
+ addExpectedElement(6560);
+ addExpectedElement(6561);
+ addExpectedElement(6562);
+ addExpectedElement(6563);
+ addExpectedElement(6564);
+ addExpectedElement(6565);
+ addExpectedElement(6566);
+ addExpectedElement(6567);
+ addExpectedElement(6568);
+ addExpectedElement(6569);
+ addExpectedElement(6570);
+ addExpectedElement(6571);
+ addExpectedElement(6572);
+ addExpectedElement(6573);
+ addExpectedElement(6574);
+ addExpectedElement(6575);
+ addExpectedElement(6576);
+ addExpectedElement(6577);
+ addExpectedElement(6578);
+ addExpectedElement(6579);
+ addExpectedElement(6580);
+ addExpectedElement(6581);
+ addExpectedElement(6582);
+ addExpectedElement(6583);
+ addExpectedElement(6584);
+ addExpectedElement(6585);
+ addExpectedElement(6586);
+ addExpectedElement(6587);
+ addExpectedElement(6588);
+ addExpectedElement(6589);
+ addExpectedElement(6590);
+ addExpectedElement(6591);
+ addExpectedElement(6592);
+ addExpectedElement(6593);
+ addExpectedElement(6594);
+ addExpectedElement(6595);
+ addExpectedElement(6596);
+ addExpectedElement(6597);
+ addExpectedElement(6598);
+ addExpectedElement(6599);
+ addExpectedElement(6600);
+ addExpectedElement(6601);
+ }
+
+ // Java.g:15583:2: ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )?
+ int alt149=2;
+ int LA149_0 = input.LA(1);
+
+ if ( ((LA149_0 >= BOOLEAN_LITERAL && LA149_0 <= IDENTIFIER)||(LA149_0 >= OCTAL_INTEGER_LITERAL && LA149_0 <= OCTAL_LONG_LITERAL)||LA149_0==STRING_LITERAL||LA149_0==21||LA149_0==26||(LA149_0 >= 30 && LA149_0 <= 31)||(LA149_0 >= 34 && LA149_0 <= 35)||LA149_0==43||LA149_0==48||LA149_0==58||LA149_0==60||(LA149_0 >= 63 && LA149_0 <= 64)||LA149_0==68||LA149_0==74||LA149_0==80||LA149_0==82||(LA149_0 >= 84 && LA149_0 <= 85)||LA149_0==91||LA149_0==94||LA149_0==97||LA149_0==102||LA149_0==105||LA149_0==110) ) {
+ alt149=1;
+ }
+ switch (alt149) {
+ case 1 :
+ // Java.g:15584:3: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ // Java.g:15584:3: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:15585:4: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArraySelector12883);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArraySelector();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.arrays.ArraysPackage.ARRAY_SELECTOR__POSITION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_37_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6602);
+ }
+
+ a2=(Token)match(input,53,FOLLOW_53_in_parse_org_emftext_language_java_arrays_ArraySelector12909); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArraySelector();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_37_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6603);
+ addExpectedElement(6604);
+ addExpectedElement(6605);
+ addExpectedElement(6606);
+ addExpectedElement(6607);
+ addExpectedElement(6608);
+ addExpectedElement(6609);
+ addExpectedElement(6610);
+ addExpectedElement(6611);
+ addExpectedElement(6612);
+ addExpectedElement(6613);
+ addExpectedElement(6614);
+ addExpectedElement(6615);
+ addExpectedElement(6616);
+ addExpectedElement(6617);
+ addExpectedElement(6618);
+ addExpectedElement(6619);
+ addExpectedElement(6620);
+ addExpectedElement(6621);
+ addExpectedElement(6622);
+ addExpectedElement(6623);
+ addExpectedElement(6624);
+ addExpectedElement(6625);
+ addExpectedElement(6626);
+ addExpectedElement(6627);
+ addExpectedElement(6628);
+ addExpectedElement(6629);
+ addExpectedElement(6630);
+ addExpectedElement(6631);
+ addExpectedElement(6632);
+ addExpectedElement(6633);
+ addExpectedElement(6634);
+ addExpectedElement(6635);
+ addExpectedElement(6636);
+ addExpectedElement(6637);
+ addExpectedElement(6638);
+ addExpectedElement(6639);
+ addExpectedElement(6640);
+ addExpectedElement(6641);
+ addExpectedElement(6642);
+ addExpectedElement(6643);
+ addExpectedElement(6644);
+ addExpectedElement(6645);
+ addExpectedElement(6646);
+ addExpectedElement(6647);
+ addExpectedElement(6648);
+ addExpectedElement(6649);
+ addExpectedElement(6650);
+ addExpectedElement(6651);
+ addExpectedElement(6652);
+ addExpectedElement(6653);
+ addExpectedElement(6654);
+ addExpectedElement(6655);
+ addExpectedElement(6656);
+ addExpectedElement(6657);
+ addExpectedElement(6658);
+ addExpectedElement(6659);
+ addExpectedElement(6660);
+ addExpectedElement(6661);
+ addExpectedElement(6662);
+ addExpectedElement(6663);
+ addExpectedElement(6664);
+ addExpectedElement(6665);
+ addExpectedElement(6666);
+ addExpectedElement(6667);
+ addExpectedElement(6668);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 39, parse_org_emftext_language_java_arrays_ArraySelector_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_arrays_ArraySelector"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_NamespaceClassifierReference"
+ // Java.g:15692:1: parse_org_emftext_language_java_types_NamespaceClassifierReference returns [org.emftext.language.java.types.NamespaceClassifierReference element = null] : ( ( (a0= IDENTIFIER ) a1= '.' ) )* ( ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' ) )* (a4_0= parse_org_emftext_language_java_types_ClassifierReference ) ;
+ public final org.emftext.language.java.types.NamespaceClassifierReference parse_org_emftext_language_java_types_NamespaceClassifierReference() throws RecognitionException {
+ org.emftext.language.java.types.NamespaceClassifierReference element = null;
+
+ int parse_org_emftext_language_java_types_NamespaceClassifierReference_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ org.emftext.language.java.types.ClassifierReference a2_0 =null;
+
+ org.emftext.language.java.types.ClassifierReference a4_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return element; }
+
+ // Java.g:15695:2: ( ( ( (a0= IDENTIFIER ) a1= '.' ) )* ( ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' ) )* (a4_0= parse_org_emftext_language_java_types_ClassifierReference ) )
+ // Java.g:15696:2: ( ( (a0= IDENTIFIER ) a1= '.' ) )* ( ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' ) )* (a4_0= parse_org_emftext_language_java_types_ClassifierReference )
+ {
+ // Java.g:15696:2: ( ( (a0= IDENTIFIER ) a1= '.' ) )*
+ loop150:
+ do {
+ int alt150=2;
+ int LA150_0 = input.LA(1);
+
+ if ( (LA150_0==IDENTIFIER) ) {
+ int LA150_1 = input.LA(2);
+
+ if ( (LA150_1==37) ) {
+ int LA150_3 = input.LA(3);
+
+ if ( (synpred151_Java()) ) {
+ alt150=1;
+ }
+
+
+ }
+
+
+ }
+
+
+ switch (alt150) {
+ case 1 :
+ // Java.g:15697:3: ( (a0= IDENTIFIER ) a1= '.' )
+ {
+ // Java.g:15697:3: ( (a0= IDENTIFIER ) a1= '.' )
+ // Java.g:15698:4: (a0= IDENTIFIER ) a1= '.'
+ {
+ // Java.g:15698:4: (a0= IDENTIFIER )
+ // Java.g:15699:5: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_types_NamespaceClassifierReference12953); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createNamespaceClassifierReference();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.NAMESPACE_CLASSIFIER_REFERENCE__NAMESPACES), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ addObjectToList(element, org.emftext.language.java.types.TypesPackage.NAMESPACE_CLASSIFIER_REFERENCE__NAMESPACES, value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_38_0_0_0_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6669);
+ }
+
+ a1=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_types_NamespaceClassifierReference12986); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createNamespaceClassifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_38_0_0_0_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6670);
+ addExpectedElement(6671);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop150;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6672);
+ addExpectedElement(6673);
+ }
+
+ // Java.g:15757:2: ( ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' ) )*
+ loop151:
+ do {
+ int alt151=2;
+ int LA151_0 = input.LA(1);
+
+ if ( (LA151_0==IDENTIFIER) ) {
+ int LA151_1 = input.LA(2);
+
+ if ( (synpred152_Java()) ) {
+ alt151=1;
+ }
+
+
+ }
+
+
+ switch (alt151) {
+ case 1 :
+ // Java.g:15758:3: ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' )
+ {
+ // Java.g:15758:3: ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' )
+ // Java.g:15759:4: (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.'
+ {
+ // Java.g:15759:4: (a2_0= parse_org_emftext_language_java_types_ClassifierReference )
+ // Java.g:15760:5: a2_0= parse_org_emftext_language_java_types_ClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_parse_org_emftext_language_java_types_NamespaceClassifierReference13034);
+ a2_0=parse_org_emftext_language_java_types_ClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createNamespaceClassifierReference();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.types.TypesPackage.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_38_0_0_1_0_0_0, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6674);
+ }
+
+ a3=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_types_NamespaceClassifierReference13062); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createNamespaceClassifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_38_0_0_1_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6675);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop151;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6676);
+ }
+
+ // Java.g:15806:2: (a4_0= parse_org_emftext_language_java_types_ClassifierReference )
+ // Java.g:15807:3: a4_0= parse_org_emftext_language_java_types_ClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_parse_org_emftext_language_java_types_NamespaceClassifierReference13099);
+ a4_0=parse_org_emftext_language_java_types_ClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createNamespaceClassifierReference();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.types.TypesPackage.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_38_0_0_2, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6677);
+ addExpectedElement(6678);
+ addExpectedElement(6679);
+ addExpectedElement(6680);
+ addExpectedElement(6681);
+ addExpectedElement(6682);
+ addExpectedElement(6683);
+ addExpectedElement(6684);
+ addExpectedElement(6685);
+ addExpectedElement(6686);
+ addExpectedElement(6687);
+ addExpectedElement(6688);
+ addExpectedElement(6689);
+ addExpectedElement(6690);
+ addExpectedElement(6691);
+ addExpectedElement(6692);
+ addExpectedElement(6693);
+ addExpectedElement(6694);
+ addExpectedElement(6695);
+ addExpectedElement(6696);
+ addExpectedElement(6697);
+ addExpectedElement(6698);
+ addExpectedElement(6699);
+ addExpectedElement(6700);
+ addExpectedElement(6701);
+ addExpectedElement(6702);
+ addExpectedElement(6703);
+ addExpectedElement(6704);
+ addExpectedElement(6705);
+ addExpectedElement(6706);
+ addExpectedElement(6707);
+ addExpectedElement(6708);
+ addExpectedElement(6709);
+ addExpectedElement(6710);
+ addExpectedElement(6711);
+ addExpectedElement(6712);
+ addExpectedElement(6713);
+ addExpectedElement(6714);
+ addExpectedElement(6715);
+ addExpectedElement(6716);
+ addExpectedElement(6717);
+ addExpectedElement(6718);
+ addExpectedElement(6719);
+ addExpectedElement(6720);
+ addExpectedElement(6721);
+ addExpectedElement(6722);
+ addExpectedElement(6723);
+ addExpectedElement(6724);
+ addExpectedElement(6725);
+ addExpectedElement(6726);
+ addExpectedElement(6727);
+ addExpectedElement(6728);
+ addExpectedElement(6729);
+ addExpectedElement(6730);
+ addExpectedElement(6731);
+ addExpectedElement(6732);
+ addExpectedElement(6733);
+ addExpectedElement(6734);
+ addExpectedElement(6735);
+ addExpectedElement(6736);
+ addExpectedElement(6737);
+ addExpectedElement(6738);
+ addExpectedElement(6739);
+ addExpectedElement(6740);
+ addExpectedElement(6741);
+ addExpectedElement(6742);
+ addExpectedElement(6743);
+ addExpectedElement(6744);
+ addExpectedElement(6745);
+ addExpectedElement(6746);
+ addExpectedElement(6747);
+ addExpectedElement(6748);
+ addExpectedElement(6749);
+ addExpectedElement(6750);
+ addExpectedElement(6751);
+ addExpectedElement(6752);
+ addExpectedElement(6753);
+ addExpectedElement(6754);
+ addExpectedElement(6755);
+ addExpectedElement(6756);
+ addExpectedElement(6757);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 40, parse_org_emftext_language_java_types_NamespaceClassifierReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_NamespaceClassifierReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_ClassifierReference"
+ // Java.g:15914:1: parse_org_emftext_language_java_types_ClassifierReference returns [org.emftext.language.java.types.ClassifierReference element = null] : (a0= IDENTIFIER ) ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? ;
+ private JavaContextDependentURIFragmentFactory classifierReferenceURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getClassifierReferenceTargetReferenceResolver());
+ public final org.emftext.language.java.types.ClassifierReference parse_org_emftext_language_java_types_ClassifierReference() throws RecognitionException {
+ org.emftext.language.java.types.ClassifierReference element = null;
+
+ int parse_org_emftext_language_java_types_ClassifierReference_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ org.emftext.language.java.generics.TypeArgument a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return element; }
+
+ // Java.g:15917:2: ( (a0= IDENTIFIER ) ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? )
+ // Java.g:15918:2: (a0= IDENTIFIER ) ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )?
+ {
+ // Java.g:15918:2: (a0= IDENTIFIER )
+ // Java.g:15919:3: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_types_ClassifierReference13136); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createClassifierReference();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TARGET), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.classifiers.Classifier proxy = org.emftext.language.java.classifiers.ClassifiersFactory.eINSTANCE.createClass();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(classifierReferenceURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TARGET), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TARGET), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_39_0_0_0, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6758);
+ addExpectedElement(6759);
+ addExpectedElement(6760);
+ addExpectedElement(6761);
+ addExpectedElement(6762);
+ addExpectedElement(6763);
+ addExpectedElement(6764);
+ addExpectedElement(6765);
+ addExpectedElement(6766);
+ addExpectedElement(6767);
+ addExpectedElement(6768);
+ addExpectedElement(6769);
+ addExpectedElement(6770);
+ addExpectedElement(6771);
+ addExpectedElement(6772);
+ addExpectedElement(6773);
+ addExpectedElement(6774);
+ addExpectedElement(6775);
+ addExpectedElement(6776);
+ addExpectedElement(6777);
+ addExpectedElement(6778);
+ addExpectedElement(6779);
+ addExpectedElement(6780);
+ addExpectedElement(6781);
+ addExpectedElement(6782);
+ addExpectedElement(6783);
+ addExpectedElement(6784);
+ addExpectedElement(6785);
+ addExpectedElement(6786);
+ addExpectedElement(6787);
+ addExpectedElement(6788);
+ addExpectedElement(6789);
+ addExpectedElement(6790);
+ addExpectedElement(6791);
+ addExpectedElement(6792);
+ addExpectedElement(6793);
+ addExpectedElement(6794);
+ addExpectedElement(6795);
+ addExpectedElement(6796);
+ addExpectedElement(6797);
+ addExpectedElement(6798);
+ addExpectedElement(6799);
+ addExpectedElement(6800);
+ addExpectedElement(6801);
+ addExpectedElement(6802);
+ addExpectedElement(6803);
+ addExpectedElement(6804);
+ addExpectedElement(6805);
+ addExpectedElement(6806);
+ addExpectedElement(6807);
+ addExpectedElement(6808);
+ addExpectedElement(6809);
+ addExpectedElement(6810);
+ addExpectedElement(6811);
+ addExpectedElement(6812);
+ addExpectedElement(6813);
+ addExpectedElement(6814);
+ addExpectedElement(6815);
+ addExpectedElement(6816);
+ addExpectedElement(6817);
+ addExpectedElement(6818);
+ addExpectedElement(6819);
+ addExpectedElement(6820);
+ addExpectedElement(6821);
+ addExpectedElement(6822);
+ addExpectedElement(6823);
+ addExpectedElement(6824);
+ addExpectedElement(6825);
+ addExpectedElement(6826);
+ addExpectedElement(6827);
+ addExpectedElement(6828);
+ addExpectedElement(6829);
+ addExpectedElement(6830);
+ addExpectedElement(6831);
+ addExpectedElement(6832);
+ addExpectedElement(6833);
+ addExpectedElement(6834);
+ addExpectedElement(6835);
+ addExpectedElement(6836);
+ addExpectedElement(6837);
+ addExpectedElement(6838);
+ addExpectedElement(6839);
+ addExpectedElement(6840);
+ }
+
+ // Java.g:16040:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )?
+ int alt153=2;
+ int LA153_0 = input.LA(1);
+
+ if ( (LA153_0==43) ) {
+ int LA153_1 = input.LA(2);
+
+ if ( (synpred154_Java()) ) {
+ alt153=1;
+ }
+ }
+ switch (alt153) {
+ case 1 :
+ // Java.g:16041:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ {
+ // Java.g:16041:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ // Java.g:16042:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_types_ClassifierReference13166); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createClassifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_39_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6841);
+ addExpectedElement(6842);
+ addExpectedElement(6843);
+ addExpectedElement(6844);
+ addExpectedElement(6845);
+ addExpectedElement(6846);
+ addExpectedElement(6847);
+ addExpectedElement(6848);
+ addExpectedElement(6849);
+ addExpectedElement(6850);
+ addExpectedElement(6851);
+ addExpectedElement(6852);
+ addExpectedElement(6853);
+ addExpectedElement(6854);
+ }
+
+ // Java.g:16069:4: (a2_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16070:5: a2_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_types_ClassifierReference13192);
+ a2_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createClassifierReference();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_39_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6855);
+ addExpectedElement(6856);
+ }
+
+ // Java.g:16096:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop152:
+ do {
+ int alt152=2;
+ int LA152_0 = input.LA(1);
+
+ if ( (LA152_0==33) ) {
+ alt152=1;
+ }
+
+
+ switch (alt152) {
+ case 1 :
+ // Java.g:16097:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:16097:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:16098:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_types_ClassifierReference13233); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createClassifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_39_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6857);
+ addExpectedElement(6858);
+ addExpectedElement(6859);
+ addExpectedElement(6860);
+ addExpectedElement(6861);
+ addExpectedElement(6862);
+ addExpectedElement(6863);
+ addExpectedElement(6864);
+ addExpectedElement(6865);
+ addExpectedElement(6866);
+ addExpectedElement(6867);
+ addExpectedElement(6868);
+ addExpectedElement(6869);
+ addExpectedElement(6870);
+ }
+
+ // Java.g:16125:6: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16126:7: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_types_ClassifierReference13267);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createClassifierReference();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.types.TypesPackage.CLASSIFIER_REFERENCE__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_39_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6871);
+ addExpectedElement(6872);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop152;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6873);
+ addExpectedElement(6874);
+ }
+
+ a5=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_types_ClassifierReference13328); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createClassifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_39_0_0_1_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6875);
+ addExpectedElement(6876);
+ addExpectedElement(6877);
+ addExpectedElement(6878);
+ addExpectedElement(6879);
+ addExpectedElement(6880);
+ addExpectedElement(6881);
+ addExpectedElement(6882);
+ addExpectedElement(6883);
+ addExpectedElement(6884);
+ addExpectedElement(6885);
+ addExpectedElement(6886);
+ addExpectedElement(6887);
+ addExpectedElement(6888);
+ addExpectedElement(6889);
+ addExpectedElement(6890);
+ addExpectedElement(6891);
+ addExpectedElement(6892);
+ addExpectedElement(6893);
+ addExpectedElement(6894);
+ addExpectedElement(6895);
+ addExpectedElement(6896);
+ addExpectedElement(6897);
+ addExpectedElement(6898);
+ addExpectedElement(6899);
+ addExpectedElement(6900);
+ addExpectedElement(6901);
+ addExpectedElement(6902);
+ addExpectedElement(6903);
+ addExpectedElement(6904);
+ addExpectedElement(6905);
+ addExpectedElement(6906);
+ addExpectedElement(6907);
+ addExpectedElement(6908);
+ addExpectedElement(6909);
+ addExpectedElement(6910);
+ addExpectedElement(6911);
+ addExpectedElement(6912);
+ addExpectedElement(6913);
+ addExpectedElement(6914);
+ addExpectedElement(6915);
+ addExpectedElement(6916);
+ addExpectedElement(6917);
+ addExpectedElement(6918);
+ addExpectedElement(6919);
+ addExpectedElement(6920);
+ addExpectedElement(6921);
+ addExpectedElement(6922);
+ addExpectedElement(6923);
+ addExpectedElement(6924);
+ addExpectedElement(6925);
+ addExpectedElement(6926);
+ addExpectedElement(6927);
+ addExpectedElement(6928);
+ addExpectedElement(6929);
+ addExpectedElement(6930);
+ addExpectedElement(6931);
+ addExpectedElement(6932);
+ addExpectedElement(6933);
+ addExpectedElement(6934);
+ addExpectedElement(6935);
+ addExpectedElement(6936);
+ addExpectedElement(6937);
+ addExpectedElement(6938);
+ addExpectedElement(6939);
+ addExpectedElement(6940);
+ addExpectedElement(6941);
+ addExpectedElement(6942);
+ addExpectedElement(6943);
+ addExpectedElement(6944);
+ addExpectedElement(6945);
+ addExpectedElement(6946);
+ addExpectedElement(6947);
+ addExpectedElement(6948);
+ addExpectedElement(6949);
+ addExpectedElement(6950);
+ addExpectedElement(6951);
+ addExpectedElement(6952);
+ addExpectedElement(6953);
+ addExpectedElement(6954);
+ addExpectedElement(6955);
+ addExpectedElement(6956);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(6957);
+ addExpectedElement(6958);
+ addExpectedElement(6959);
+ addExpectedElement(6960);
+ addExpectedElement(6961);
+ addExpectedElement(6962);
+ addExpectedElement(6963);
+ addExpectedElement(6964);
+ addExpectedElement(6965);
+ addExpectedElement(6966);
+ addExpectedElement(6967);
+ addExpectedElement(6968);
+ addExpectedElement(6969);
+ addExpectedElement(6970);
+ addExpectedElement(6971);
+ addExpectedElement(6972);
+ addExpectedElement(6973);
+ addExpectedElement(6974);
+ addExpectedElement(6975);
+ addExpectedElement(6976);
+ addExpectedElement(6977);
+ addExpectedElement(6978);
+ addExpectedElement(6979);
+ addExpectedElement(6980);
+ addExpectedElement(6981);
+ addExpectedElement(6982);
+ addExpectedElement(6983);
+ addExpectedElement(6984);
+ addExpectedElement(6985);
+ addExpectedElement(6986);
+ addExpectedElement(6987);
+ addExpectedElement(6988);
+ addExpectedElement(6989);
+ addExpectedElement(6990);
+ addExpectedElement(6991);
+ addExpectedElement(6992);
+ addExpectedElement(6993);
+ addExpectedElement(6994);
+ addExpectedElement(6995);
+ addExpectedElement(6996);
+ addExpectedElement(6997);
+ addExpectedElement(6998);
+ addExpectedElement(6999);
+ addExpectedElement(7000);
+ addExpectedElement(7001);
+ addExpectedElement(7002);
+ addExpectedElement(7003);
+ addExpectedElement(7004);
+ addExpectedElement(7005);
+ addExpectedElement(7006);
+ addExpectedElement(7007);
+ addExpectedElement(7008);
+ addExpectedElement(7009);
+ addExpectedElement(7010);
+ addExpectedElement(7011);
+ addExpectedElement(7012);
+ addExpectedElement(7013);
+ addExpectedElement(7014);
+ addExpectedElement(7015);
+ addExpectedElement(7016);
+ addExpectedElement(7017);
+ addExpectedElement(7018);
+ addExpectedElement(7019);
+ addExpectedElement(7020);
+ addExpectedElement(7021);
+ addExpectedElement(7022);
+ addExpectedElement(7023);
+ addExpectedElement(7024);
+ addExpectedElement(7025);
+ addExpectedElement(7026);
+ addExpectedElement(7027);
+ addExpectedElement(7028);
+ addExpectedElement(7029);
+ addExpectedElement(7030);
+ addExpectedElement(7031);
+ addExpectedElement(7032);
+ addExpectedElement(7033);
+ addExpectedElement(7034);
+ addExpectedElement(7035);
+ addExpectedElement(7036);
+ addExpectedElement(7037);
+ addExpectedElement(7038);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 41, parse_org_emftext_language_java_types_ClassifierReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_ClassifierReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_references_MethodCall"
+ // Java.g:16345:1: parse_org_emftext_language_java_references_MethodCall returns [org.emftext.language.java.references.MethodCall element = null] : ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )? (a5= IDENTIFIER ) ( (a6= '<' (a7_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a10= '>' ) )? a11= '(' ( ( (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a15= ')' ( (a16_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a17= '.' (a18_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ private JavaContextDependentURIFragmentFactory methodCallURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getElementReferenceTargetReferenceResolver());
+ public final org.emftext.language.java.references.MethodCall parse_org_emftext_language_java_references_MethodCall() throws RecognitionException {
+ org.emftext.language.java.references.MethodCall element = null;
+
+ int parse_org_emftext_language_java_references_MethodCall_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a4=null;
+ Token a5=null;
+ Token a6=null;
+ Token a8=null;
+ Token a10=null;
+ Token a11=null;
+ Token a13=null;
+ Token a15=null;
+ Token a17=null;
+ org.emftext.language.java.generics.TypeArgument a1_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a3_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a7_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a9_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a12_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a14_0 =null;
+
+ org.emftext.language.java.arrays.ArraySelector a16_0 =null;
+
+ org.emftext.language.java.references.Reference a18_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return element; }
+
+ // Java.g:16348:2: ( ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )? (a5= IDENTIFIER ) ( (a6= '<' (a7_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a10= '>' ) )? a11= '(' ( ( (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a15= ')' ( (a16_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a17= '.' (a18_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:16349:2: ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )? (a5= IDENTIFIER ) ( (a6= '<' (a7_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a10= '>' ) )? a11= '(' ( ( (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a15= ')' ( (a16_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a17= '.' (a18_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ // Java.g:16349:2: ( (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' ) )?
+ int alt155=2;
+ int LA155_0 = input.LA(1);
+
+ if ( (LA155_0==43) ) {
+ alt155=1;
+ }
+ switch (alt155) {
+ case 1 :
+ // Java.g:16350:3: (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' )
+ {
+ // Java.g:16350:3: (a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>' )
+ // Java.g:16351:4: a0= '<' (a1_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a4= '>'
+ {
+ a0=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_references_MethodCall13385); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_0_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7039);
+ addExpectedElement(7040);
+ addExpectedElement(7041);
+ addExpectedElement(7042);
+ addExpectedElement(7043);
+ addExpectedElement(7044);
+ addExpectedElement(7045);
+ addExpectedElement(7046);
+ addExpectedElement(7047);
+ addExpectedElement(7048);
+ addExpectedElement(7049);
+ addExpectedElement(7050);
+ addExpectedElement(7051);
+ addExpectedElement(7052);
+ }
+
+ // Java.g:16378:4: (a1_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16379:5: a1_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13411);
+ a1_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__CALL_TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_0_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7053);
+ addExpectedElement(7054);
+ }
+
+ // Java.g:16405:4: ( (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop154:
+ do {
+ int alt154=2;
+ int LA154_0 = input.LA(1);
+
+ if ( (LA154_0==33) ) {
+ alt154=1;
+ }
+
+
+ switch (alt154) {
+ case 1 :
+ // Java.g:16406:5: (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:16406:5: (a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:16407:6: a2= ',' (a3_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a2=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_references_MethodCall13452); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_0_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7055);
+ addExpectedElement(7056);
+ addExpectedElement(7057);
+ addExpectedElement(7058);
+ addExpectedElement(7059);
+ addExpectedElement(7060);
+ addExpectedElement(7061);
+ addExpectedElement(7062);
+ addExpectedElement(7063);
+ addExpectedElement(7064);
+ addExpectedElement(7065);
+ addExpectedElement(7066);
+ addExpectedElement(7067);
+ addExpectedElement(7068);
+ }
+
+ // Java.g:16434:6: (a3_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16435:7: a3_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13486);
+ a3_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__CALL_TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_0_0_0_2_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7069);
+ addExpectedElement(7070);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop154;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7071);
+ addExpectedElement(7072);
+ }
+
+ a4=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_references_MethodCall13547); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_0_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7073);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7074);
+ }
+
+ // Java.g:16490:2: (a5= IDENTIFIER )
+ // Java.g:16491:3: a5= IDENTIFIER
+ {
+ a5=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_references_MethodCall13584); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a5 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a5.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TARGET), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a5).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a5).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a5).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a5).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.references.ReferenceableElement proxy = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(methodCallURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TARGET), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TARGET), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_1, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a5, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a5, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7075);
+ addExpectedElement(7076);
+ }
+
+ // Java.g:16531:2: ( (a6= '<' (a7_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a10= '>' ) )?
+ int alt157=2;
+ int LA157_0 = input.LA(1);
+
+ if ( (LA157_0==43) ) {
+ alt157=1;
+ }
+ switch (alt157) {
+ case 1 :
+ // Java.g:16532:3: (a6= '<' (a7_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a10= '>' )
+ {
+ // Java.g:16532:3: (a6= '<' (a7_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a10= '>' )
+ // Java.g:16533:4: a6= '<' (a7_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a10= '>'
+ {
+ a6=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_references_MethodCall13614); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7077);
+ addExpectedElement(7078);
+ addExpectedElement(7079);
+ addExpectedElement(7080);
+ addExpectedElement(7081);
+ addExpectedElement(7082);
+ addExpectedElement(7083);
+ addExpectedElement(7084);
+ addExpectedElement(7085);
+ addExpectedElement(7086);
+ addExpectedElement(7087);
+ addExpectedElement(7088);
+ addExpectedElement(7089);
+ addExpectedElement(7090);
+ }
+
+ // Java.g:16560:4: (a7_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16561:5: a7_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13640);
+ a7_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a7_0 != null) {
+ if (a7_0 != null) {
+ Object value = a7_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_2_0_0_1, a7_0, true);
+ copyLocalizationInfos(a7_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7091);
+ addExpectedElement(7092);
+ }
+
+ // Java.g:16587:4: ( (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop156:
+ do {
+ int alt156=2;
+ int LA156_0 = input.LA(1);
+
+ if ( (LA156_0==33) ) {
+ alt156=1;
+ }
+
+
+ switch (alt156) {
+ case 1 :
+ // Java.g:16588:5: (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:16588:5: (a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:16589:6: a8= ',' (a9_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a8=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_references_MethodCall13681); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_2_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a8, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7093);
+ addExpectedElement(7094);
+ addExpectedElement(7095);
+ addExpectedElement(7096);
+ addExpectedElement(7097);
+ addExpectedElement(7098);
+ addExpectedElement(7099);
+ addExpectedElement(7100);
+ addExpectedElement(7101);
+ addExpectedElement(7102);
+ addExpectedElement(7103);
+ addExpectedElement(7104);
+ addExpectedElement(7105);
+ addExpectedElement(7106);
+ }
+
+ // Java.g:16616:6: (a9_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16617:7: a9_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13715);
+ a9_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a9_0 != null) {
+ if (a9_0 != null) {
+ Object value = a9_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_2_0_0_2_0_0_1, a9_0, true);
+ copyLocalizationInfos(a9_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7107);
+ addExpectedElement(7108);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop156;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7109);
+ addExpectedElement(7110);
+ }
+
+ a10=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_references_MethodCall13776); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_2_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a10, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7111);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7112);
+ }
+
+ a11=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_references_MethodCall13809); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a11, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7113);
+ addExpectedElement(7114);
+ addExpectedElement(7115);
+ addExpectedElement(7116);
+ addExpectedElement(7117);
+ addExpectedElement(7118);
+ addExpectedElement(7119);
+ addExpectedElement(7120);
+ addExpectedElement(7121);
+ addExpectedElement(7122);
+ addExpectedElement(7123);
+ addExpectedElement(7124);
+ addExpectedElement(7125);
+ addExpectedElement(7126);
+ addExpectedElement(7127);
+ addExpectedElement(7128);
+ addExpectedElement(7129);
+ addExpectedElement(7130);
+ addExpectedElement(7131);
+ addExpectedElement(7132);
+ addExpectedElement(7133);
+ addExpectedElement(7134);
+ addExpectedElement(7135);
+ addExpectedElement(7136);
+ addExpectedElement(7137);
+ addExpectedElement(7138);
+ addExpectedElement(7139);
+ addExpectedElement(7140);
+ addExpectedElement(7141);
+ addExpectedElement(7142);
+ addExpectedElement(7143);
+ addExpectedElement(7144);
+ addExpectedElement(7145);
+ addExpectedElement(7146);
+ addExpectedElement(7147);
+ addExpectedElement(7148);
+ addExpectedElement(7149);
+ addExpectedElement(7150);
+ addExpectedElement(7151);
+ addExpectedElement(7152);
+ addExpectedElement(7153);
+ addExpectedElement(7154);
+ addExpectedElement(7155);
+ addExpectedElement(7156);
+ }
+
+ // Java.g:16729:2: ( ( (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )?
+ int alt159=2;
+ int LA159_0 = input.LA(1);
+
+ if ( ((LA159_0 >= BOOLEAN_LITERAL && LA159_0 <= IDENTIFIER)||(LA159_0 >= OCTAL_INTEGER_LITERAL && LA159_0 <= OCTAL_LONG_LITERAL)||LA159_0==STRING_LITERAL||LA159_0==21||LA159_0==26||(LA159_0 >= 30 && LA159_0 <= 31)||(LA159_0 >= 34 && LA159_0 <= 35)||LA159_0==43||LA159_0==48||LA159_0==58||LA159_0==60||(LA159_0 >= 63 && LA159_0 <= 64)||LA159_0==68||LA159_0==74||LA159_0==80||LA159_0==82||(LA159_0 >= 84 && LA159_0 <= 85)||LA159_0==91||LA159_0==94||LA159_0==97||LA159_0==102||LA159_0==105||LA159_0==110) ) {
+ alt159=1;
+ }
+ switch (alt159) {
+ case 1 :
+ // Java.g:16730:3: ( (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ {
+ // Java.g:16730:3: ( (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ // Java.g:16731:4: (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ {
+ // Java.g:16731:4: (a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:16732:5: a12_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_references_MethodCall13838);
+ a12_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a12_0 != null) {
+ if (a12_0 != null) {
+ Object value = a12_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_4_0_0_0, a12_0, true);
+ copyLocalizationInfos(a12_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7157);
+ addExpectedElement(7158);
+ }
+
+ // Java.g:16758:4: ( (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ loop158:
+ do {
+ int alt158=2;
+ int LA158_0 = input.LA(1);
+
+ if ( (LA158_0==33) ) {
+ alt158=1;
+ }
+
+
+ switch (alt158) {
+ case 1 :
+ // Java.g:16759:5: (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:16759:5: (a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:16760:6: a13= ',' (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a13=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_references_MethodCall13879); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_4_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a13, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7159);
+ addExpectedElement(7160);
+ addExpectedElement(7161);
+ addExpectedElement(7162);
+ addExpectedElement(7163);
+ addExpectedElement(7164);
+ addExpectedElement(7165);
+ addExpectedElement(7166);
+ addExpectedElement(7167);
+ addExpectedElement(7168);
+ addExpectedElement(7169);
+ addExpectedElement(7170);
+ addExpectedElement(7171);
+ addExpectedElement(7172);
+ addExpectedElement(7173);
+ addExpectedElement(7174);
+ addExpectedElement(7175);
+ addExpectedElement(7176);
+ addExpectedElement(7177);
+ addExpectedElement(7178);
+ addExpectedElement(7179);
+ addExpectedElement(7180);
+ addExpectedElement(7181);
+ addExpectedElement(7182);
+ addExpectedElement(7183);
+ addExpectedElement(7184);
+ addExpectedElement(7185);
+ addExpectedElement(7186);
+ addExpectedElement(7187);
+ addExpectedElement(7188);
+ addExpectedElement(7189);
+ addExpectedElement(7190);
+ addExpectedElement(7191);
+ addExpectedElement(7192);
+ addExpectedElement(7193);
+ addExpectedElement(7194);
+ addExpectedElement(7195);
+ addExpectedElement(7196);
+ addExpectedElement(7197);
+ addExpectedElement(7198);
+ addExpectedElement(7199);
+ addExpectedElement(7200);
+ addExpectedElement(7201);
+ }
+
+ // Java.g:16816:6: (a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:16817:7: a14_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_references_MethodCall13913);
+ a14_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a14_0 != null) {
+ if (a14_0 != null) {
+ Object value = a14_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_4_0_0_1_0_0_1, a14_0, true);
+ copyLocalizationInfos(a14_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7202);
+ addExpectedElement(7203);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop158;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7204);
+ addExpectedElement(7205);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7206);
+ }
+
+ a15=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_references_MethodCall13987); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_5, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a15, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7207);
+ addExpectedElement(7208);
+ addExpectedElement(7209);
+ addExpectedElement(7210);
+ addExpectedElement(7211);
+ addExpectedElement(7212);
+ addExpectedElement(7213);
+ addExpectedElement(7214);
+ addExpectedElement(7215);
+ addExpectedElement(7216);
+ addExpectedElement(7217);
+ addExpectedElement(7218);
+ addExpectedElement(7219);
+ addExpectedElement(7220);
+ addExpectedElement(7221);
+ addExpectedElement(7222);
+ addExpectedElement(7223);
+ addExpectedElement(7224);
+ addExpectedElement(7225);
+ addExpectedElement(7226);
+ addExpectedElement(7227);
+ addExpectedElement(7228);
+ addExpectedElement(7229);
+ addExpectedElement(7230);
+ addExpectedElement(7231);
+ addExpectedElement(7232);
+ addExpectedElement(7233);
+ addExpectedElement(7234);
+ addExpectedElement(7235);
+ addExpectedElement(7236);
+ addExpectedElement(7237);
+ addExpectedElement(7238);
+ addExpectedElement(7239);
+ addExpectedElement(7240);
+ addExpectedElement(7241);
+ addExpectedElement(7242);
+ addExpectedElement(7243);
+ addExpectedElement(7244);
+ addExpectedElement(7245);
+ addExpectedElement(7246);
+ addExpectedElement(7247);
+ addExpectedElement(7248);
+ addExpectedElement(7249);
+ addExpectedElement(7250);
+ addExpectedElement(7251);
+ addExpectedElement(7252);
+ addExpectedElement(7253);
+ addExpectedElement(7254);
+ addExpectedElement(7255);
+ addExpectedElement(7256);
+ addExpectedElement(7257);
+ addExpectedElement(7258);
+ addExpectedElement(7259);
+ addExpectedElement(7260);
+ addExpectedElement(7261);
+ addExpectedElement(7262);
+ addExpectedElement(7263);
+ addExpectedElement(7264);
+ addExpectedElement(7265);
+ addExpectedElement(7266);
+ addExpectedElement(7267);
+ addExpectedElement(7268);
+ addExpectedElement(7269);
+ addExpectedElement(7270);
+ addExpectedElement(7271);
+ addExpectedElement(7272);
+ }
+
+ // Java.g:16937:2: ( (a16_0= parse_org_emftext_language_java_arrays_ArraySelector ) )*
+ loop160:
+ do {
+ int alt160=2;
+ int LA160_0 = input.LA(1);
+
+ if ( (LA160_0==49) ) {
+ alt160=1;
+ }
+
+
+ switch (alt160) {
+ case 1 :
+ // Java.g:16938:3: (a16_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ {
+ // Java.g:16938:3: (a16_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ // Java.g:16939:4: a16_0= parse_org_emftext_language_java_arrays_ArraySelector
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_references_MethodCall14010);
+ a16_0=parse_org_emftext_language_java_arrays_ArraySelector();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a16_0 != null) {
+ if (a16_0 != null) {
+ Object value = a16_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__ARRAY_SELECTORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_6, a16_0, true);
+ copyLocalizationInfos(a16_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop160;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7273);
+ addExpectedElement(7274);
+ addExpectedElement(7275);
+ addExpectedElement(7276);
+ addExpectedElement(7277);
+ addExpectedElement(7278);
+ addExpectedElement(7279);
+ addExpectedElement(7280);
+ addExpectedElement(7281);
+ addExpectedElement(7282);
+ addExpectedElement(7283);
+ addExpectedElement(7284);
+ addExpectedElement(7285);
+ addExpectedElement(7286);
+ addExpectedElement(7287);
+ addExpectedElement(7288);
+ addExpectedElement(7289);
+ addExpectedElement(7290);
+ addExpectedElement(7291);
+ addExpectedElement(7292);
+ addExpectedElement(7293);
+ addExpectedElement(7294);
+ addExpectedElement(7295);
+ addExpectedElement(7296);
+ addExpectedElement(7297);
+ addExpectedElement(7298);
+ addExpectedElement(7299);
+ addExpectedElement(7300);
+ addExpectedElement(7301);
+ addExpectedElement(7302);
+ addExpectedElement(7303);
+ addExpectedElement(7304);
+ addExpectedElement(7305);
+ addExpectedElement(7306);
+ addExpectedElement(7307);
+ addExpectedElement(7308);
+ addExpectedElement(7309);
+ addExpectedElement(7310);
+ addExpectedElement(7311);
+ addExpectedElement(7312);
+ addExpectedElement(7313);
+ addExpectedElement(7314);
+ addExpectedElement(7315);
+ addExpectedElement(7316);
+ addExpectedElement(7317);
+ addExpectedElement(7318);
+ addExpectedElement(7319);
+ addExpectedElement(7320);
+ addExpectedElement(7321);
+ addExpectedElement(7322);
+ addExpectedElement(7323);
+ addExpectedElement(7324);
+ addExpectedElement(7325);
+ addExpectedElement(7326);
+ addExpectedElement(7327);
+ addExpectedElement(7328);
+ addExpectedElement(7329);
+ addExpectedElement(7330);
+ addExpectedElement(7331);
+ addExpectedElement(7332);
+ addExpectedElement(7333);
+ addExpectedElement(7334);
+ addExpectedElement(7335);
+ addExpectedElement(7336);
+ addExpectedElement(7337);
+ addExpectedElement(7338);
+ }
+
+ // Java.g:17030:2: ( (a17= '.' (a18_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt161=2;
+ int LA161_0 = input.LA(1);
+
+ if ( (LA161_0==37) ) {
+ alt161=1;
+ }
+ switch (alt161) {
+ case 1 :
+ // Java.g:17031:3: (a17= '.' (a18_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:17031:3: (a17= '.' (a18_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:17032:4: a17= '.' (a18_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a17=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_references_MethodCall14045); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_7_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a17, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7339);
+ addExpectedElement(7340);
+ addExpectedElement(7341);
+ addExpectedElement(7342);
+ addExpectedElement(7343);
+ addExpectedElement(7344);
+ addExpectedElement(7345);
+ addExpectedElement(7346);
+ addExpectedElement(7347);
+ addExpectedElement(7348);
+ addExpectedElement(7349);
+ addExpectedElement(7350);
+ addExpectedElement(7351);
+ addExpectedElement(7352);
+ addExpectedElement(7353);
+ addExpectedElement(7354);
+ addExpectedElement(7355);
+ addExpectedElement(7356);
+ addExpectedElement(7357);
+ addExpectedElement(7358);
+ addExpectedElement(7359);
+ addExpectedElement(7360);
+ addExpectedElement(7361);
+ }
+
+ // Java.g:17068:4: (a18_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:17069:5: a18_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_MethodCall14071);
+ a18_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createMethodCall();
+ startIncompleteElement(element);
+ }
+ if (a18_0 != null) {
+ if (a18_0 != null) {
+ Object value = a18_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.METHOD_CALL__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_40_0_0_7_0_0_1, a18_0, true);
+ copyLocalizationInfos(a18_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7362);
+ addExpectedElement(7363);
+ addExpectedElement(7364);
+ addExpectedElement(7365);
+ addExpectedElement(7366);
+ addExpectedElement(7367);
+ addExpectedElement(7368);
+ addExpectedElement(7369);
+ addExpectedElement(7370);
+ addExpectedElement(7371);
+ addExpectedElement(7372);
+ addExpectedElement(7373);
+ addExpectedElement(7374);
+ addExpectedElement(7375);
+ addExpectedElement(7376);
+ addExpectedElement(7377);
+ addExpectedElement(7378);
+ addExpectedElement(7379);
+ addExpectedElement(7380);
+ addExpectedElement(7381);
+ addExpectedElement(7382);
+ addExpectedElement(7383);
+ addExpectedElement(7384);
+ addExpectedElement(7385);
+ addExpectedElement(7386);
+ addExpectedElement(7387);
+ addExpectedElement(7388);
+ addExpectedElement(7389);
+ addExpectedElement(7390);
+ addExpectedElement(7391);
+ addExpectedElement(7392);
+ addExpectedElement(7393);
+ addExpectedElement(7394);
+ addExpectedElement(7395);
+ addExpectedElement(7396);
+ addExpectedElement(7397);
+ addExpectedElement(7398);
+ addExpectedElement(7399);
+ addExpectedElement(7400);
+ addExpectedElement(7401);
+ addExpectedElement(7402);
+ addExpectedElement(7403);
+ addExpectedElement(7404);
+ addExpectedElement(7405);
+ addExpectedElement(7406);
+ addExpectedElement(7407);
+ addExpectedElement(7408);
+ addExpectedElement(7409);
+ addExpectedElement(7410);
+ addExpectedElement(7411);
+ addExpectedElement(7412);
+ addExpectedElement(7413);
+ addExpectedElement(7414);
+ addExpectedElement(7415);
+ addExpectedElement(7416);
+ addExpectedElement(7417);
+ addExpectedElement(7418);
+ addExpectedElement(7419);
+ addExpectedElement(7420);
+ addExpectedElement(7421);
+ addExpectedElement(7422);
+ addExpectedElement(7423);
+ addExpectedElement(7424);
+ addExpectedElement(7425);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7426);
+ addExpectedElement(7427);
+ addExpectedElement(7428);
+ addExpectedElement(7429);
+ addExpectedElement(7430);
+ addExpectedElement(7431);
+ addExpectedElement(7432);
+ addExpectedElement(7433);
+ addExpectedElement(7434);
+ addExpectedElement(7435);
+ addExpectedElement(7436);
+ addExpectedElement(7437);
+ addExpectedElement(7438);
+ addExpectedElement(7439);
+ addExpectedElement(7440);
+ addExpectedElement(7441);
+ addExpectedElement(7442);
+ addExpectedElement(7443);
+ addExpectedElement(7444);
+ addExpectedElement(7445);
+ addExpectedElement(7446);
+ addExpectedElement(7447);
+ addExpectedElement(7448);
+ addExpectedElement(7449);
+ addExpectedElement(7450);
+ addExpectedElement(7451);
+ addExpectedElement(7452);
+ addExpectedElement(7453);
+ addExpectedElement(7454);
+ addExpectedElement(7455);
+ addExpectedElement(7456);
+ addExpectedElement(7457);
+ addExpectedElement(7458);
+ addExpectedElement(7459);
+ addExpectedElement(7460);
+ addExpectedElement(7461);
+ addExpectedElement(7462);
+ addExpectedElement(7463);
+ addExpectedElement(7464);
+ addExpectedElement(7465);
+ addExpectedElement(7466);
+ addExpectedElement(7467);
+ addExpectedElement(7468);
+ addExpectedElement(7469);
+ addExpectedElement(7470);
+ addExpectedElement(7471);
+ addExpectedElement(7472);
+ addExpectedElement(7473);
+ addExpectedElement(7474);
+ addExpectedElement(7475);
+ addExpectedElement(7476);
+ addExpectedElement(7477);
+ addExpectedElement(7478);
+ addExpectedElement(7479);
+ addExpectedElement(7480);
+ addExpectedElement(7481);
+ addExpectedElement(7482);
+ addExpectedElement(7483);
+ addExpectedElement(7484);
+ addExpectedElement(7485);
+ addExpectedElement(7486);
+ addExpectedElement(7487);
+ addExpectedElement(7488);
+ addExpectedElement(7489);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 42, parse_org_emftext_language_java_references_MethodCall_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_references_MethodCall"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_references_IdentifierReference"
+ // Java.g:17229:1: parse_org_emftext_language_java_references_IdentifierReference returns [org.emftext.language.java.references.IdentifierReference element = null] : (a0= IDENTIFIER ) ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a7= '.' (a8_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ private JavaContextDependentURIFragmentFactory identifierReferenceURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getElementReferenceTargetReferenceResolver());
+ public final org.emftext.language.java.references.IdentifierReference parse_org_emftext_language_java_references_IdentifierReference() throws RecognitionException {
+ org.emftext.language.java.references.IdentifierReference element = null;
+
+ int parse_org_emftext_language_java_references_IdentifierReference_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ org.emftext.language.java.generics.TypeArgument a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+ org.emftext.language.java.arrays.ArraySelector a6_0 =null;
+
+ org.emftext.language.java.references.Reference a8_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return element; }
+
+ // Java.g:17232:2: ( (a0= IDENTIFIER ) ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a7= '.' (a8_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:17233:2: (a0= IDENTIFIER ) ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a7= '.' (a8_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ // Java.g:17233:2: (a0= IDENTIFIER )
+ // Java.g:17234:3: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_references_IdentifierReference14131); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TARGET), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.references.ReferenceableElement proxy = org.emftext.language.java.annotations.AnnotationsFactory.eINSTANCE.createAnnotationAttribute();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(identifierReferenceURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TARGET), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TARGET), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_0, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7490);
+ addExpectedElement(7491);
+ addExpectedElement(7492);
+ addExpectedElement(7493);
+ addExpectedElement(7494);
+ addExpectedElement(7495);
+ addExpectedElement(7496);
+ addExpectedElement(7497);
+ addExpectedElement(7498);
+ addExpectedElement(7499);
+ addExpectedElement(7500);
+ addExpectedElement(7501);
+ addExpectedElement(7502);
+ addExpectedElement(7503);
+ addExpectedElement(7504);
+ addExpectedElement(7505);
+ addExpectedElement(7506);
+ addExpectedElement(7507);
+ addExpectedElement(7508);
+ addExpectedElement(7509);
+ addExpectedElement(7510);
+ addExpectedElement(7511);
+ addExpectedElement(7512);
+ addExpectedElement(7513);
+ addExpectedElement(7514);
+ addExpectedElement(7515);
+ addExpectedElement(7516);
+ addExpectedElement(7517);
+ addExpectedElement(7518);
+ addExpectedElement(7519);
+ addExpectedElement(7520);
+ addExpectedElement(7521);
+ addExpectedElement(7522);
+ addExpectedElement(7523);
+ addExpectedElement(7524);
+ addExpectedElement(7525);
+ addExpectedElement(7526);
+ addExpectedElement(7527);
+ addExpectedElement(7528);
+ addExpectedElement(7529);
+ addExpectedElement(7530);
+ addExpectedElement(7531);
+ addExpectedElement(7532);
+ addExpectedElement(7533);
+ addExpectedElement(7534);
+ addExpectedElement(7535);
+ addExpectedElement(7536);
+ addExpectedElement(7537);
+ addExpectedElement(7538);
+ addExpectedElement(7539);
+ addExpectedElement(7540);
+ addExpectedElement(7541);
+ addExpectedElement(7542);
+ addExpectedElement(7543);
+ addExpectedElement(7544);
+ addExpectedElement(7545);
+ addExpectedElement(7546);
+ addExpectedElement(7547);
+ addExpectedElement(7548);
+ addExpectedElement(7549);
+ addExpectedElement(7550);
+ addExpectedElement(7551);
+ addExpectedElement(7552);
+ addExpectedElement(7553);
+ addExpectedElement(7554);
+ addExpectedElement(7555);
+ addExpectedElement(7556);
+ }
+
+ // Java.g:17339:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )?
+ int alt163=2;
+ int LA163_0 = input.LA(1);
+
+ if ( (LA163_0==43) ) {
+ int LA163_1 = input.LA(2);
+
+ if ( (synpred164_Java()) ) {
+ alt163=1;
+ }
+ }
+ switch (alt163) {
+ case 1 :
+ // Java.g:17340:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ {
+ // Java.g:17340:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ // Java.g:17341:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_references_IdentifierReference14161); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7557);
+ addExpectedElement(7558);
+ addExpectedElement(7559);
+ addExpectedElement(7560);
+ addExpectedElement(7561);
+ addExpectedElement(7562);
+ addExpectedElement(7563);
+ addExpectedElement(7564);
+ addExpectedElement(7565);
+ addExpectedElement(7566);
+ addExpectedElement(7567);
+ addExpectedElement(7568);
+ addExpectedElement(7569);
+ addExpectedElement(7570);
+ }
+
+ // Java.g:17368:4: (a2_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:17369:5: a2_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_IdentifierReference14187);
+ a2_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7571);
+ addExpectedElement(7572);
+ }
+
+ // Java.g:17395:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop162:
+ do {
+ int alt162=2;
+ int LA162_0 = input.LA(1);
+
+ if ( (LA162_0==33) ) {
+ alt162=1;
+ }
+
+
+ switch (alt162) {
+ case 1 :
+ // Java.g:17396:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:17396:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:17397:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_references_IdentifierReference14228); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_1_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7573);
+ addExpectedElement(7574);
+ addExpectedElement(7575);
+ addExpectedElement(7576);
+ addExpectedElement(7577);
+ addExpectedElement(7578);
+ addExpectedElement(7579);
+ addExpectedElement(7580);
+ addExpectedElement(7581);
+ addExpectedElement(7582);
+ addExpectedElement(7583);
+ addExpectedElement(7584);
+ addExpectedElement(7585);
+ addExpectedElement(7586);
+ }
+
+ // Java.g:17424:6: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:17425:7: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_IdentifierReference14262);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__TYPE_ARGUMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_1_0_0_2_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7587);
+ addExpectedElement(7588);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop162;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7589);
+ addExpectedElement(7590);
+ }
+
+ a5=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_references_IdentifierReference14323); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_1_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7591);
+ addExpectedElement(7592);
+ addExpectedElement(7593);
+ addExpectedElement(7594);
+ addExpectedElement(7595);
+ addExpectedElement(7596);
+ addExpectedElement(7597);
+ addExpectedElement(7598);
+ addExpectedElement(7599);
+ addExpectedElement(7600);
+ addExpectedElement(7601);
+ addExpectedElement(7602);
+ addExpectedElement(7603);
+ addExpectedElement(7604);
+ addExpectedElement(7605);
+ addExpectedElement(7606);
+ addExpectedElement(7607);
+ addExpectedElement(7608);
+ addExpectedElement(7609);
+ addExpectedElement(7610);
+ addExpectedElement(7611);
+ addExpectedElement(7612);
+ addExpectedElement(7613);
+ addExpectedElement(7614);
+ addExpectedElement(7615);
+ addExpectedElement(7616);
+ addExpectedElement(7617);
+ addExpectedElement(7618);
+ addExpectedElement(7619);
+ addExpectedElement(7620);
+ addExpectedElement(7621);
+ addExpectedElement(7622);
+ addExpectedElement(7623);
+ addExpectedElement(7624);
+ addExpectedElement(7625);
+ addExpectedElement(7626);
+ addExpectedElement(7627);
+ addExpectedElement(7628);
+ addExpectedElement(7629);
+ addExpectedElement(7630);
+ addExpectedElement(7631);
+ addExpectedElement(7632);
+ addExpectedElement(7633);
+ addExpectedElement(7634);
+ addExpectedElement(7635);
+ addExpectedElement(7636);
+ addExpectedElement(7637);
+ addExpectedElement(7638);
+ addExpectedElement(7639);
+ addExpectedElement(7640);
+ addExpectedElement(7641);
+ addExpectedElement(7642);
+ addExpectedElement(7643);
+ addExpectedElement(7644);
+ addExpectedElement(7645);
+ addExpectedElement(7646);
+ addExpectedElement(7647);
+ addExpectedElement(7648);
+ addExpectedElement(7649);
+ addExpectedElement(7650);
+ addExpectedElement(7651);
+ addExpectedElement(7652);
+ addExpectedElement(7653);
+ addExpectedElement(7654);
+ addExpectedElement(7655);
+ addExpectedElement(7656);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7657);
+ addExpectedElement(7658);
+ addExpectedElement(7659);
+ addExpectedElement(7660);
+ addExpectedElement(7661);
+ addExpectedElement(7662);
+ addExpectedElement(7663);
+ addExpectedElement(7664);
+ addExpectedElement(7665);
+ addExpectedElement(7666);
+ addExpectedElement(7667);
+ addExpectedElement(7668);
+ addExpectedElement(7669);
+ addExpectedElement(7670);
+ addExpectedElement(7671);
+ addExpectedElement(7672);
+ addExpectedElement(7673);
+ addExpectedElement(7674);
+ addExpectedElement(7675);
+ addExpectedElement(7676);
+ addExpectedElement(7677);
+ addExpectedElement(7678);
+ addExpectedElement(7679);
+ addExpectedElement(7680);
+ addExpectedElement(7681);
+ addExpectedElement(7682);
+ addExpectedElement(7683);
+ addExpectedElement(7684);
+ addExpectedElement(7685);
+ addExpectedElement(7686);
+ addExpectedElement(7687);
+ addExpectedElement(7688);
+ addExpectedElement(7689);
+ addExpectedElement(7690);
+ addExpectedElement(7691);
+ addExpectedElement(7692);
+ addExpectedElement(7693);
+ addExpectedElement(7694);
+ addExpectedElement(7695);
+ addExpectedElement(7696);
+ addExpectedElement(7697);
+ addExpectedElement(7698);
+ addExpectedElement(7699);
+ addExpectedElement(7700);
+ addExpectedElement(7701);
+ addExpectedElement(7702);
+ addExpectedElement(7703);
+ addExpectedElement(7704);
+ addExpectedElement(7705);
+ addExpectedElement(7706);
+ addExpectedElement(7707);
+ addExpectedElement(7708);
+ addExpectedElement(7709);
+ addExpectedElement(7710);
+ addExpectedElement(7711);
+ addExpectedElement(7712);
+ addExpectedElement(7713);
+ addExpectedElement(7714);
+ addExpectedElement(7715);
+ addExpectedElement(7716);
+ addExpectedElement(7717);
+ addExpectedElement(7718);
+ addExpectedElement(7719);
+ addExpectedElement(7720);
+ addExpectedElement(7721);
+ addExpectedElement(7722);
+ }
+
+ // Java.g:17610:2: ( (a6_0= parse_org_emftext_language_java_arrays_ArraySelector ) )*
+ loop164:
+ do {
+ int alt164=2;
+ int LA164_0 = input.LA(1);
+
+ if ( (LA164_0==49) ) {
+ alt164=1;
+ }
+
+
+ switch (alt164) {
+ case 1 :
+ // Java.g:17611:3: (a6_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ {
+ // Java.g:17611:3: (a6_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ // Java.g:17612:4: a6_0= parse_org_emftext_language_java_arrays_ArraySelector
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_references_IdentifierReference14365);
+ a6_0=parse_org_emftext_language_java_arrays_ArraySelector();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__ARRAY_SELECTORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_2, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop164;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7723);
+ addExpectedElement(7724);
+ addExpectedElement(7725);
+ addExpectedElement(7726);
+ addExpectedElement(7727);
+ addExpectedElement(7728);
+ addExpectedElement(7729);
+ addExpectedElement(7730);
+ addExpectedElement(7731);
+ addExpectedElement(7732);
+ addExpectedElement(7733);
+ addExpectedElement(7734);
+ addExpectedElement(7735);
+ addExpectedElement(7736);
+ addExpectedElement(7737);
+ addExpectedElement(7738);
+ addExpectedElement(7739);
+ addExpectedElement(7740);
+ addExpectedElement(7741);
+ addExpectedElement(7742);
+ addExpectedElement(7743);
+ addExpectedElement(7744);
+ addExpectedElement(7745);
+ addExpectedElement(7746);
+ addExpectedElement(7747);
+ addExpectedElement(7748);
+ addExpectedElement(7749);
+ addExpectedElement(7750);
+ addExpectedElement(7751);
+ addExpectedElement(7752);
+ addExpectedElement(7753);
+ addExpectedElement(7754);
+ addExpectedElement(7755);
+ addExpectedElement(7756);
+ addExpectedElement(7757);
+ addExpectedElement(7758);
+ addExpectedElement(7759);
+ addExpectedElement(7760);
+ addExpectedElement(7761);
+ addExpectedElement(7762);
+ addExpectedElement(7763);
+ addExpectedElement(7764);
+ addExpectedElement(7765);
+ addExpectedElement(7766);
+ addExpectedElement(7767);
+ addExpectedElement(7768);
+ addExpectedElement(7769);
+ addExpectedElement(7770);
+ addExpectedElement(7771);
+ addExpectedElement(7772);
+ addExpectedElement(7773);
+ addExpectedElement(7774);
+ addExpectedElement(7775);
+ addExpectedElement(7776);
+ addExpectedElement(7777);
+ addExpectedElement(7778);
+ addExpectedElement(7779);
+ addExpectedElement(7780);
+ addExpectedElement(7781);
+ addExpectedElement(7782);
+ addExpectedElement(7783);
+ addExpectedElement(7784);
+ addExpectedElement(7785);
+ addExpectedElement(7786);
+ addExpectedElement(7787);
+ addExpectedElement(7788);
+ }
+
+ // Java.g:17703:2: ( (a7= '.' (a8_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt165=2;
+ int LA165_0 = input.LA(1);
+
+ if ( (LA165_0==37) ) {
+ alt165=1;
+ }
+ switch (alt165) {
+ case 1 :
+ // Java.g:17704:3: (a7= '.' (a8_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:17704:3: (a7= '.' (a8_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:17705:4: a7= '.' (a8_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a7=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_references_IdentifierReference14400); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7789);
+ addExpectedElement(7790);
+ addExpectedElement(7791);
+ addExpectedElement(7792);
+ addExpectedElement(7793);
+ addExpectedElement(7794);
+ addExpectedElement(7795);
+ addExpectedElement(7796);
+ addExpectedElement(7797);
+ addExpectedElement(7798);
+ addExpectedElement(7799);
+ addExpectedElement(7800);
+ addExpectedElement(7801);
+ addExpectedElement(7802);
+ addExpectedElement(7803);
+ addExpectedElement(7804);
+ addExpectedElement(7805);
+ addExpectedElement(7806);
+ addExpectedElement(7807);
+ addExpectedElement(7808);
+ addExpectedElement(7809);
+ addExpectedElement(7810);
+ addExpectedElement(7811);
+ }
+
+ // Java.g:17741:4: (a8_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:17742:5: a8_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_IdentifierReference14426);
+ a8_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createIdentifierReference();
+ startIncompleteElement(element);
+ }
+ if (a8_0 != null) {
+ if (a8_0 != null) {
+ Object value = a8_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.IDENTIFIER_REFERENCE__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_41_0_0_3_0_0_1, a8_0, true);
+ copyLocalizationInfos(a8_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7812);
+ addExpectedElement(7813);
+ addExpectedElement(7814);
+ addExpectedElement(7815);
+ addExpectedElement(7816);
+ addExpectedElement(7817);
+ addExpectedElement(7818);
+ addExpectedElement(7819);
+ addExpectedElement(7820);
+ addExpectedElement(7821);
+ addExpectedElement(7822);
+ addExpectedElement(7823);
+ addExpectedElement(7824);
+ addExpectedElement(7825);
+ addExpectedElement(7826);
+ addExpectedElement(7827);
+ addExpectedElement(7828);
+ addExpectedElement(7829);
+ addExpectedElement(7830);
+ addExpectedElement(7831);
+ addExpectedElement(7832);
+ addExpectedElement(7833);
+ addExpectedElement(7834);
+ addExpectedElement(7835);
+ addExpectedElement(7836);
+ addExpectedElement(7837);
+ addExpectedElement(7838);
+ addExpectedElement(7839);
+ addExpectedElement(7840);
+ addExpectedElement(7841);
+ addExpectedElement(7842);
+ addExpectedElement(7843);
+ addExpectedElement(7844);
+ addExpectedElement(7845);
+ addExpectedElement(7846);
+ addExpectedElement(7847);
+ addExpectedElement(7848);
+ addExpectedElement(7849);
+ addExpectedElement(7850);
+ addExpectedElement(7851);
+ addExpectedElement(7852);
+ addExpectedElement(7853);
+ addExpectedElement(7854);
+ addExpectedElement(7855);
+ addExpectedElement(7856);
+ addExpectedElement(7857);
+ addExpectedElement(7858);
+ addExpectedElement(7859);
+ addExpectedElement(7860);
+ addExpectedElement(7861);
+ addExpectedElement(7862);
+ addExpectedElement(7863);
+ addExpectedElement(7864);
+ addExpectedElement(7865);
+ addExpectedElement(7866);
+ addExpectedElement(7867);
+ addExpectedElement(7868);
+ addExpectedElement(7869);
+ addExpectedElement(7870);
+ addExpectedElement(7871);
+ addExpectedElement(7872);
+ addExpectedElement(7873);
+ addExpectedElement(7874);
+ addExpectedElement(7875);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7876);
+ addExpectedElement(7877);
+ addExpectedElement(7878);
+ addExpectedElement(7879);
+ addExpectedElement(7880);
+ addExpectedElement(7881);
+ addExpectedElement(7882);
+ addExpectedElement(7883);
+ addExpectedElement(7884);
+ addExpectedElement(7885);
+ addExpectedElement(7886);
+ addExpectedElement(7887);
+ addExpectedElement(7888);
+ addExpectedElement(7889);
+ addExpectedElement(7890);
+ addExpectedElement(7891);
+ addExpectedElement(7892);
+ addExpectedElement(7893);
+ addExpectedElement(7894);
+ addExpectedElement(7895);
+ addExpectedElement(7896);
+ addExpectedElement(7897);
+ addExpectedElement(7898);
+ addExpectedElement(7899);
+ addExpectedElement(7900);
+ addExpectedElement(7901);
+ addExpectedElement(7902);
+ addExpectedElement(7903);
+ addExpectedElement(7904);
+ addExpectedElement(7905);
+ addExpectedElement(7906);
+ addExpectedElement(7907);
+ addExpectedElement(7908);
+ addExpectedElement(7909);
+ addExpectedElement(7910);
+ addExpectedElement(7911);
+ addExpectedElement(7912);
+ addExpectedElement(7913);
+ addExpectedElement(7914);
+ addExpectedElement(7915);
+ addExpectedElement(7916);
+ addExpectedElement(7917);
+ addExpectedElement(7918);
+ addExpectedElement(7919);
+ addExpectedElement(7920);
+ addExpectedElement(7921);
+ addExpectedElement(7922);
+ addExpectedElement(7923);
+ addExpectedElement(7924);
+ addExpectedElement(7925);
+ addExpectedElement(7926);
+ addExpectedElement(7927);
+ addExpectedElement(7928);
+ addExpectedElement(7929);
+ addExpectedElement(7930);
+ addExpectedElement(7931);
+ addExpectedElement(7932);
+ addExpectedElement(7933);
+ addExpectedElement(7934);
+ addExpectedElement(7935);
+ addExpectedElement(7936);
+ addExpectedElement(7937);
+ addExpectedElement(7938);
+ addExpectedElement(7939);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 43, parse_org_emftext_language_java_references_IdentifierReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_references_IdentifierReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_references_ReflectiveClassReference"
+ // Java.g:17902:1: parse_org_emftext_language_java_references_ReflectiveClassReference returns [org.emftext.language.java.references.ReflectiveClassReference element = null] : a0= 'class' ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.references.ReflectiveClassReference parse_org_emftext_language_java_references_ReflectiveClassReference() throws RecognitionException {
+ org.emftext.language.java.references.ReflectiveClassReference element = null;
+
+ int parse_org_emftext_language_java_references_ReflectiveClassReference_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ org.emftext.language.java.references.Reference a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return element; }
+
+ // Java.g:17905:2: (a0= 'class' ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:17906:2: a0= 'class' ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ a0=(Token)match(input,64,FOLLOW_64_in_parse_org_emftext_language_java_references_ReflectiveClassReference14482); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createReflectiveClassReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_42_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(7940);
+ addExpectedElement(7941);
+ addExpectedElement(7942);
+ addExpectedElement(7943);
+ addExpectedElement(7944);
+ addExpectedElement(7945);
+ addExpectedElement(7946);
+ addExpectedElement(7947);
+ addExpectedElement(7948);
+ addExpectedElement(7949);
+ addExpectedElement(7950);
+ addExpectedElement(7951);
+ addExpectedElement(7952);
+ addExpectedElement(7953);
+ addExpectedElement(7954);
+ addExpectedElement(7955);
+ addExpectedElement(7956);
+ addExpectedElement(7957);
+ addExpectedElement(7958);
+ addExpectedElement(7959);
+ addExpectedElement(7960);
+ addExpectedElement(7961);
+ addExpectedElement(7962);
+ addExpectedElement(7963);
+ addExpectedElement(7964);
+ addExpectedElement(7965);
+ addExpectedElement(7966);
+ addExpectedElement(7967);
+ addExpectedElement(7968);
+ addExpectedElement(7969);
+ addExpectedElement(7970);
+ addExpectedElement(7971);
+ addExpectedElement(7972);
+ addExpectedElement(7973);
+ addExpectedElement(7974);
+ addExpectedElement(7975);
+ addExpectedElement(7976);
+ addExpectedElement(7977);
+ addExpectedElement(7978);
+ addExpectedElement(7979);
+ addExpectedElement(7980);
+ addExpectedElement(7981);
+ addExpectedElement(7982);
+ addExpectedElement(7983);
+ addExpectedElement(7984);
+ addExpectedElement(7985);
+ addExpectedElement(7986);
+ addExpectedElement(7987);
+ addExpectedElement(7988);
+ addExpectedElement(7989);
+ addExpectedElement(7990);
+ addExpectedElement(7991);
+ addExpectedElement(7992);
+ addExpectedElement(7993);
+ addExpectedElement(7994);
+ addExpectedElement(7995);
+ addExpectedElement(7996);
+ addExpectedElement(7997);
+ addExpectedElement(7998);
+ addExpectedElement(7999);
+ addExpectedElement(8000);
+ addExpectedElement(8001);
+ addExpectedElement(8002);
+ addExpectedElement(8003);
+ addExpectedElement(8004);
+ }
+
+ // Java.g:17984:2: ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt166=2;
+ int LA166_0 = input.LA(1);
+
+ if ( (LA166_0==37) ) {
+ alt166=1;
+ }
+ switch (alt166) {
+ case 1 :
+ // Java.g:17985:3: (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:17985:3: (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:17986:4: a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a1=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_references_ReflectiveClassReference14505); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createReflectiveClassReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_42_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8005);
+ addExpectedElement(8006);
+ addExpectedElement(8007);
+ addExpectedElement(8008);
+ addExpectedElement(8009);
+ addExpectedElement(8010);
+ addExpectedElement(8011);
+ addExpectedElement(8012);
+ addExpectedElement(8013);
+ addExpectedElement(8014);
+ addExpectedElement(8015);
+ addExpectedElement(8016);
+ addExpectedElement(8017);
+ addExpectedElement(8018);
+ addExpectedElement(8019);
+ addExpectedElement(8020);
+ addExpectedElement(8021);
+ addExpectedElement(8022);
+ addExpectedElement(8023);
+ addExpectedElement(8024);
+ addExpectedElement(8025);
+ addExpectedElement(8026);
+ addExpectedElement(8027);
+ }
+
+ // Java.g:18022:4: (a2_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:18023:5: a2_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_ReflectiveClassReference14531);
+ a2_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createReflectiveClassReference();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.REFLECTIVE_CLASS_REFERENCE__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_42_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8028);
+ addExpectedElement(8029);
+ addExpectedElement(8030);
+ addExpectedElement(8031);
+ addExpectedElement(8032);
+ addExpectedElement(8033);
+ addExpectedElement(8034);
+ addExpectedElement(8035);
+ addExpectedElement(8036);
+ addExpectedElement(8037);
+ addExpectedElement(8038);
+ addExpectedElement(8039);
+ addExpectedElement(8040);
+ addExpectedElement(8041);
+ addExpectedElement(8042);
+ addExpectedElement(8043);
+ addExpectedElement(8044);
+ addExpectedElement(8045);
+ addExpectedElement(8046);
+ addExpectedElement(8047);
+ addExpectedElement(8048);
+ addExpectedElement(8049);
+ addExpectedElement(8050);
+ addExpectedElement(8051);
+ addExpectedElement(8052);
+ addExpectedElement(8053);
+ addExpectedElement(8054);
+ addExpectedElement(8055);
+ addExpectedElement(8056);
+ addExpectedElement(8057);
+ addExpectedElement(8058);
+ addExpectedElement(8059);
+ addExpectedElement(8060);
+ addExpectedElement(8061);
+ addExpectedElement(8062);
+ addExpectedElement(8063);
+ addExpectedElement(8064);
+ addExpectedElement(8065);
+ addExpectedElement(8066);
+ addExpectedElement(8067);
+ addExpectedElement(8068);
+ addExpectedElement(8069);
+ addExpectedElement(8070);
+ addExpectedElement(8071);
+ addExpectedElement(8072);
+ addExpectedElement(8073);
+ addExpectedElement(8074);
+ addExpectedElement(8075);
+ addExpectedElement(8076);
+ addExpectedElement(8077);
+ addExpectedElement(8078);
+ addExpectedElement(8079);
+ addExpectedElement(8080);
+ addExpectedElement(8081);
+ addExpectedElement(8082);
+ addExpectedElement(8083);
+ addExpectedElement(8084);
+ addExpectedElement(8085);
+ addExpectedElement(8086);
+ addExpectedElement(8087);
+ addExpectedElement(8088);
+ addExpectedElement(8089);
+ addExpectedElement(8090);
+ addExpectedElement(8091);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8092);
+ addExpectedElement(8093);
+ addExpectedElement(8094);
+ addExpectedElement(8095);
+ addExpectedElement(8096);
+ addExpectedElement(8097);
+ addExpectedElement(8098);
+ addExpectedElement(8099);
+ addExpectedElement(8100);
+ addExpectedElement(8101);
+ addExpectedElement(8102);
+ addExpectedElement(8103);
+ addExpectedElement(8104);
+ addExpectedElement(8105);
+ addExpectedElement(8106);
+ addExpectedElement(8107);
+ addExpectedElement(8108);
+ addExpectedElement(8109);
+ addExpectedElement(8110);
+ addExpectedElement(8111);
+ addExpectedElement(8112);
+ addExpectedElement(8113);
+ addExpectedElement(8114);
+ addExpectedElement(8115);
+ addExpectedElement(8116);
+ addExpectedElement(8117);
+ addExpectedElement(8118);
+ addExpectedElement(8119);
+ addExpectedElement(8120);
+ addExpectedElement(8121);
+ addExpectedElement(8122);
+ addExpectedElement(8123);
+ addExpectedElement(8124);
+ addExpectedElement(8125);
+ addExpectedElement(8126);
+ addExpectedElement(8127);
+ addExpectedElement(8128);
+ addExpectedElement(8129);
+ addExpectedElement(8130);
+ addExpectedElement(8131);
+ addExpectedElement(8132);
+ addExpectedElement(8133);
+ addExpectedElement(8134);
+ addExpectedElement(8135);
+ addExpectedElement(8136);
+ addExpectedElement(8137);
+ addExpectedElement(8138);
+ addExpectedElement(8139);
+ addExpectedElement(8140);
+ addExpectedElement(8141);
+ addExpectedElement(8142);
+ addExpectedElement(8143);
+ addExpectedElement(8144);
+ addExpectedElement(8145);
+ addExpectedElement(8146);
+ addExpectedElement(8147);
+ addExpectedElement(8148);
+ addExpectedElement(8149);
+ addExpectedElement(8150);
+ addExpectedElement(8151);
+ addExpectedElement(8152);
+ addExpectedElement(8153);
+ addExpectedElement(8154);
+ addExpectedElement(8155);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 44, parse_org_emftext_language_java_references_ReflectiveClassReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_references_ReflectiveClassReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_references_SelfReference"
+ // Java.g:18183:1: parse_org_emftext_language_java_references_SelfReference returns [org.emftext.language.java.references.SelfReference element = null] : (a0_0= parse_org_emftext_language_java_literals_Self ) ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.references.SelfReference parse_org_emftext_language_java_references_SelfReference() throws RecognitionException {
+ org.emftext.language.java.references.SelfReference element = null;
+
+ int parse_org_emftext_language_java_references_SelfReference_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.literals.Self a0_0 =null;
+
+ org.emftext.language.java.references.Reference a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return element; }
+
+ // Java.g:18186:2: ( (a0_0= parse_org_emftext_language_java_literals_Self ) ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:18187:2: (a0_0= parse_org_emftext_language_java_literals_Self ) ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ // Java.g:18187:2: (a0_0= parse_org_emftext_language_java_literals_Self )
+ // Java.g:18188:3: a0_0= parse_org_emftext_language_java_literals_Self
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_Self_in_parse_org_emftext_language_java_references_SelfReference14591);
+ a0_0=parse_org_emftext_language_java_literals_Self();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createSelfReference();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.SELF_REFERENCE__SELF), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_43_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8156);
+ addExpectedElement(8157);
+ addExpectedElement(8158);
+ addExpectedElement(8159);
+ addExpectedElement(8160);
+ addExpectedElement(8161);
+ addExpectedElement(8162);
+ addExpectedElement(8163);
+ addExpectedElement(8164);
+ addExpectedElement(8165);
+ addExpectedElement(8166);
+ addExpectedElement(8167);
+ addExpectedElement(8168);
+ addExpectedElement(8169);
+ addExpectedElement(8170);
+ addExpectedElement(8171);
+ addExpectedElement(8172);
+ addExpectedElement(8173);
+ addExpectedElement(8174);
+ addExpectedElement(8175);
+ addExpectedElement(8176);
+ addExpectedElement(8177);
+ addExpectedElement(8178);
+ addExpectedElement(8179);
+ addExpectedElement(8180);
+ addExpectedElement(8181);
+ addExpectedElement(8182);
+ addExpectedElement(8183);
+ addExpectedElement(8184);
+ addExpectedElement(8185);
+ addExpectedElement(8186);
+ addExpectedElement(8187);
+ addExpectedElement(8188);
+ addExpectedElement(8189);
+ addExpectedElement(8190);
+ addExpectedElement(8191);
+ addExpectedElement(8192);
+ addExpectedElement(8193);
+ addExpectedElement(8194);
+ addExpectedElement(8195);
+ addExpectedElement(8196);
+ addExpectedElement(8197);
+ addExpectedElement(8198);
+ addExpectedElement(8199);
+ addExpectedElement(8200);
+ addExpectedElement(8201);
+ addExpectedElement(8202);
+ addExpectedElement(8203);
+ addExpectedElement(8204);
+ addExpectedElement(8205);
+ addExpectedElement(8206);
+ addExpectedElement(8207);
+ addExpectedElement(8208);
+ addExpectedElement(8209);
+ addExpectedElement(8210);
+ addExpectedElement(8211);
+ addExpectedElement(8212);
+ addExpectedElement(8213);
+ addExpectedElement(8214);
+ addExpectedElement(8215);
+ addExpectedElement(8216);
+ addExpectedElement(8217);
+ addExpectedElement(8218);
+ addExpectedElement(8219);
+ addExpectedElement(8220);
+ }
+
+ // Java.g:18277:2: ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt167=2;
+ int LA167_0 = input.LA(1);
+
+ if ( (LA167_0==37) ) {
+ alt167=1;
+ }
+ switch (alt167) {
+ case 1 :
+ // Java.g:18278:3: (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:18278:3: (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:18279:4: a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a1=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_references_SelfReference14618); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createSelfReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_43_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8221);
+ addExpectedElement(8222);
+ addExpectedElement(8223);
+ addExpectedElement(8224);
+ addExpectedElement(8225);
+ addExpectedElement(8226);
+ addExpectedElement(8227);
+ addExpectedElement(8228);
+ addExpectedElement(8229);
+ addExpectedElement(8230);
+ addExpectedElement(8231);
+ addExpectedElement(8232);
+ addExpectedElement(8233);
+ addExpectedElement(8234);
+ addExpectedElement(8235);
+ addExpectedElement(8236);
+ addExpectedElement(8237);
+ addExpectedElement(8238);
+ addExpectedElement(8239);
+ addExpectedElement(8240);
+ addExpectedElement(8241);
+ addExpectedElement(8242);
+ addExpectedElement(8243);
+ }
+
+ // Java.g:18315:4: (a2_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:18316:5: a2_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_SelfReference14644);
+ a2_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createSelfReference();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.SELF_REFERENCE__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_43_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8244);
+ addExpectedElement(8245);
+ addExpectedElement(8246);
+ addExpectedElement(8247);
+ addExpectedElement(8248);
+ addExpectedElement(8249);
+ addExpectedElement(8250);
+ addExpectedElement(8251);
+ addExpectedElement(8252);
+ addExpectedElement(8253);
+ addExpectedElement(8254);
+ addExpectedElement(8255);
+ addExpectedElement(8256);
+ addExpectedElement(8257);
+ addExpectedElement(8258);
+ addExpectedElement(8259);
+ addExpectedElement(8260);
+ addExpectedElement(8261);
+ addExpectedElement(8262);
+ addExpectedElement(8263);
+ addExpectedElement(8264);
+ addExpectedElement(8265);
+ addExpectedElement(8266);
+ addExpectedElement(8267);
+ addExpectedElement(8268);
+ addExpectedElement(8269);
+ addExpectedElement(8270);
+ addExpectedElement(8271);
+ addExpectedElement(8272);
+ addExpectedElement(8273);
+ addExpectedElement(8274);
+ addExpectedElement(8275);
+ addExpectedElement(8276);
+ addExpectedElement(8277);
+ addExpectedElement(8278);
+ addExpectedElement(8279);
+ addExpectedElement(8280);
+ addExpectedElement(8281);
+ addExpectedElement(8282);
+ addExpectedElement(8283);
+ addExpectedElement(8284);
+ addExpectedElement(8285);
+ addExpectedElement(8286);
+ addExpectedElement(8287);
+ addExpectedElement(8288);
+ addExpectedElement(8289);
+ addExpectedElement(8290);
+ addExpectedElement(8291);
+ addExpectedElement(8292);
+ addExpectedElement(8293);
+ addExpectedElement(8294);
+ addExpectedElement(8295);
+ addExpectedElement(8296);
+ addExpectedElement(8297);
+ addExpectedElement(8298);
+ addExpectedElement(8299);
+ addExpectedElement(8300);
+ addExpectedElement(8301);
+ addExpectedElement(8302);
+ addExpectedElement(8303);
+ addExpectedElement(8304);
+ addExpectedElement(8305);
+ addExpectedElement(8306);
+ addExpectedElement(8307);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8308);
+ addExpectedElement(8309);
+ addExpectedElement(8310);
+ addExpectedElement(8311);
+ addExpectedElement(8312);
+ addExpectedElement(8313);
+ addExpectedElement(8314);
+ addExpectedElement(8315);
+ addExpectedElement(8316);
+ addExpectedElement(8317);
+ addExpectedElement(8318);
+ addExpectedElement(8319);
+ addExpectedElement(8320);
+ addExpectedElement(8321);
+ addExpectedElement(8322);
+ addExpectedElement(8323);
+ addExpectedElement(8324);
+ addExpectedElement(8325);
+ addExpectedElement(8326);
+ addExpectedElement(8327);
+ addExpectedElement(8328);
+ addExpectedElement(8329);
+ addExpectedElement(8330);
+ addExpectedElement(8331);
+ addExpectedElement(8332);
+ addExpectedElement(8333);
+ addExpectedElement(8334);
+ addExpectedElement(8335);
+ addExpectedElement(8336);
+ addExpectedElement(8337);
+ addExpectedElement(8338);
+ addExpectedElement(8339);
+ addExpectedElement(8340);
+ addExpectedElement(8341);
+ addExpectedElement(8342);
+ addExpectedElement(8343);
+ addExpectedElement(8344);
+ addExpectedElement(8345);
+ addExpectedElement(8346);
+ addExpectedElement(8347);
+ addExpectedElement(8348);
+ addExpectedElement(8349);
+ addExpectedElement(8350);
+ addExpectedElement(8351);
+ addExpectedElement(8352);
+ addExpectedElement(8353);
+ addExpectedElement(8354);
+ addExpectedElement(8355);
+ addExpectedElement(8356);
+ addExpectedElement(8357);
+ addExpectedElement(8358);
+ addExpectedElement(8359);
+ addExpectedElement(8360);
+ addExpectedElement(8361);
+ addExpectedElement(8362);
+ addExpectedElement(8363);
+ addExpectedElement(8364);
+ addExpectedElement(8365);
+ addExpectedElement(8366);
+ addExpectedElement(8367);
+ addExpectedElement(8368);
+ addExpectedElement(8369);
+ addExpectedElement(8370);
+ addExpectedElement(8371);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 45, parse_org_emftext_language_java_references_SelfReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_references_SelfReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_references_PrimitiveTypeReference"
+ // Java.g:18476:1: parse_org_emftext_language_java_references_PrimitiveTypeReference returns [org.emftext.language.java.references.PrimitiveTypeReference element = null] : (a0_0= parse_org_emftext_language_java_types_PrimitiveType ) ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.references.PrimitiveTypeReference parse_org_emftext_language_java_references_PrimitiveTypeReference() throws RecognitionException {
+ org.emftext.language.java.references.PrimitiveTypeReference element = null;
+
+ int parse_org_emftext_language_java_references_PrimitiveTypeReference_StartIndex = input.index();
+
+ Token a2=null;
+ org.emftext.language.java.types.PrimitiveType a0_0 =null;
+
+ org.emftext.language.java.arrays.ArraySelector a1_0 =null;
+
+ org.emftext.language.java.references.Reference a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return element; }
+
+ // Java.g:18479:2: ( (a0_0= parse_org_emftext_language_java_types_PrimitiveType ) ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:18480:2: (a0_0= parse_org_emftext_language_java_types_PrimitiveType ) ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ // Java.g:18480:2: (a0_0= parse_org_emftext_language_java_types_PrimitiveType )
+ // Java.g:18481:3: a0_0= parse_org_emftext_language_java_types_PrimitiveType
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_PrimitiveType_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14704);
+ a0_0=parse_org_emftext_language_java_types_PrimitiveType();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createPrimitiveTypeReference();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_44_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8372);
+ addExpectedElement(8373);
+ addExpectedElement(8374);
+ addExpectedElement(8375);
+ addExpectedElement(8376);
+ addExpectedElement(8377);
+ addExpectedElement(8378);
+ addExpectedElement(8379);
+ addExpectedElement(8380);
+ addExpectedElement(8381);
+ addExpectedElement(8382);
+ addExpectedElement(8383);
+ addExpectedElement(8384);
+ addExpectedElement(8385);
+ addExpectedElement(8386);
+ addExpectedElement(8387);
+ addExpectedElement(8388);
+ addExpectedElement(8389);
+ addExpectedElement(8390);
+ addExpectedElement(8391);
+ addExpectedElement(8392);
+ addExpectedElement(8393);
+ addExpectedElement(8394);
+ addExpectedElement(8395);
+ addExpectedElement(8396);
+ addExpectedElement(8397);
+ addExpectedElement(8398);
+ addExpectedElement(8399);
+ addExpectedElement(8400);
+ addExpectedElement(8401);
+ addExpectedElement(8402);
+ addExpectedElement(8403);
+ addExpectedElement(8404);
+ addExpectedElement(8405);
+ addExpectedElement(8406);
+ addExpectedElement(8407);
+ addExpectedElement(8408);
+ addExpectedElement(8409);
+ addExpectedElement(8410);
+ addExpectedElement(8411);
+ addExpectedElement(8412);
+ addExpectedElement(8413);
+ addExpectedElement(8414);
+ addExpectedElement(8415);
+ addExpectedElement(8416);
+ addExpectedElement(8417);
+ addExpectedElement(8418);
+ addExpectedElement(8419);
+ addExpectedElement(8420);
+ addExpectedElement(8421);
+ addExpectedElement(8422);
+ addExpectedElement(8423);
+ addExpectedElement(8424);
+ addExpectedElement(8425);
+ addExpectedElement(8426);
+ addExpectedElement(8427);
+ addExpectedElement(8428);
+ addExpectedElement(8429);
+ addExpectedElement(8430);
+ addExpectedElement(8431);
+ addExpectedElement(8432);
+ addExpectedElement(8433);
+ addExpectedElement(8434);
+ addExpectedElement(8435);
+ addExpectedElement(8436);
+ addExpectedElement(8437);
+ }
+
+ // Java.g:18571:2: ( (a1_0= parse_org_emftext_language_java_arrays_ArraySelector ) )*
+ loop168:
+ do {
+ int alt168=2;
+ int LA168_0 = input.LA(1);
+
+ if ( (LA168_0==49) ) {
+ alt168=1;
+ }
+
+
+ switch (alt168) {
+ case 1 :
+ // Java.g:18572:3: (a1_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ {
+ // Java.g:18572:3: (a1_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ // Java.g:18573:4: a1_0= parse_org_emftext_language_java_arrays_ArraySelector
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14731);
+ a1_0=parse_org_emftext_language_java_arrays_ArraySelector();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createPrimitiveTypeReference();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.references.ReferencesPackage.PRIMITIVE_TYPE_REFERENCE__ARRAY_SELECTORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_44_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop168;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8438);
+ addExpectedElement(8439);
+ addExpectedElement(8440);
+ addExpectedElement(8441);
+ addExpectedElement(8442);
+ addExpectedElement(8443);
+ addExpectedElement(8444);
+ addExpectedElement(8445);
+ addExpectedElement(8446);
+ addExpectedElement(8447);
+ addExpectedElement(8448);
+ addExpectedElement(8449);
+ addExpectedElement(8450);
+ addExpectedElement(8451);
+ addExpectedElement(8452);
+ addExpectedElement(8453);
+ addExpectedElement(8454);
+ addExpectedElement(8455);
+ addExpectedElement(8456);
+ addExpectedElement(8457);
+ addExpectedElement(8458);
+ addExpectedElement(8459);
+ addExpectedElement(8460);
+ addExpectedElement(8461);
+ addExpectedElement(8462);
+ addExpectedElement(8463);
+ addExpectedElement(8464);
+ addExpectedElement(8465);
+ addExpectedElement(8466);
+ addExpectedElement(8467);
+ addExpectedElement(8468);
+ addExpectedElement(8469);
+ addExpectedElement(8470);
+ addExpectedElement(8471);
+ addExpectedElement(8472);
+ addExpectedElement(8473);
+ addExpectedElement(8474);
+ addExpectedElement(8475);
+ addExpectedElement(8476);
+ addExpectedElement(8477);
+ addExpectedElement(8478);
+ addExpectedElement(8479);
+ addExpectedElement(8480);
+ addExpectedElement(8481);
+ addExpectedElement(8482);
+ addExpectedElement(8483);
+ addExpectedElement(8484);
+ addExpectedElement(8485);
+ addExpectedElement(8486);
+ addExpectedElement(8487);
+ addExpectedElement(8488);
+ addExpectedElement(8489);
+ addExpectedElement(8490);
+ addExpectedElement(8491);
+ addExpectedElement(8492);
+ addExpectedElement(8493);
+ addExpectedElement(8494);
+ addExpectedElement(8495);
+ addExpectedElement(8496);
+ addExpectedElement(8497);
+ addExpectedElement(8498);
+ addExpectedElement(8499);
+ addExpectedElement(8500);
+ addExpectedElement(8501);
+ addExpectedElement(8502);
+ addExpectedElement(8503);
+ }
+
+ // Java.g:18664:2: ( (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt169=2;
+ int LA169_0 = input.LA(1);
+
+ if ( (LA169_0==37) ) {
+ alt169=1;
+ }
+ switch (alt169) {
+ case 1 :
+ // Java.g:18665:3: (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:18665:3: (a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:18666:4: a2= '.' (a3_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a2=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14766); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createPrimitiveTypeReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_44_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8504);
+ addExpectedElement(8505);
+ addExpectedElement(8506);
+ addExpectedElement(8507);
+ addExpectedElement(8508);
+ addExpectedElement(8509);
+ addExpectedElement(8510);
+ addExpectedElement(8511);
+ addExpectedElement(8512);
+ addExpectedElement(8513);
+ addExpectedElement(8514);
+ addExpectedElement(8515);
+ addExpectedElement(8516);
+ addExpectedElement(8517);
+ addExpectedElement(8518);
+ addExpectedElement(8519);
+ addExpectedElement(8520);
+ addExpectedElement(8521);
+ addExpectedElement(8522);
+ addExpectedElement(8523);
+ addExpectedElement(8524);
+ addExpectedElement(8525);
+ addExpectedElement(8526);
+ }
+
+ // Java.g:18702:4: (a3_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:18703:5: a3_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14792);
+ a3_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createPrimitiveTypeReference();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.PRIMITIVE_TYPE_REFERENCE__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_44_0_0_2_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8527);
+ addExpectedElement(8528);
+ addExpectedElement(8529);
+ addExpectedElement(8530);
+ addExpectedElement(8531);
+ addExpectedElement(8532);
+ addExpectedElement(8533);
+ addExpectedElement(8534);
+ addExpectedElement(8535);
+ addExpectedElement(8536);
+ addExpectedElement(8537);
+ addExpectedElement(8538);
+ addExpectedElement(8539);
+ addExpectedElement(8540);
+ addExpectedElement(8541);
+ addExpectedElement(8542);
+ addExpectedElement(8543);
+ addExpectedElement(8544);
+ addExpectedElement(8545);
+ addExpectedElement(8546);
+ addExpectedElement(8547);
+ addExpectedElement(8548);
+ addExpectedElement(8549);
+ addExpectedElement(8550);
+ addExpectedElement(8551);
+ addExpectedElement(8552);
+ addExpectedElement(8553);
+ addExpectedElement(8554);
+ addExpectedElement(8555);
+ addExpectedElement(8556);
+ addExpectedElement(8557);
+ addExpectedElement(8558);
+ addExpectedElement(8559);
+ addExpectedElement(8560);
+ addExpectedElement(8561);
+ addExpectedElement(8562);
+ addExpectedElement(8563);
+ addExpectedElement(8564);
+ addExpectedElement(8565);
+ addExpectedElement(8566);
+ addExpectedElement(8567);
+ addExpectedElement(8568);
+ addExpectedElement(8569);
+ addExpectedElement(8570);
+ addExpectedElement(8571);
+ addExpectedElement(8572);
+ addExpectedElement(8573);
+ addExpectedElement(8574);
+ addExpectedElement(8575);
+ addExpectedElement(8576);
+ addExpectedElement(8577);
+ addExpectedElement(8578);
+ addExpectedElement(8579);
+ addExpectedElement(8580);
+ addExpectedElement(8581);
+ addExpectedElement(8582);
+ addExpectedElement(8583);
+ addExpectedElement(8584);
+ addExpectedElement(8585);
+ addExpectedElement(8586);
+ addExpectedElement(8587);
+ addExpectedElement(8588);
+ addExpectedElement(8589);
+ addExpectedElement(8590);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8591);
+ addExpectedElement(8592);
+ addExpectedElement(8593);
+ addExpectedElement(8594);
+ addExpectedElement(8595);
+ addExpectedElement(8596);
+ addExpectedElement(8597);
+ addExpectedElement(8598);
+ addExpectedElement(8599);
+ addExpectedElement(8600);
+ addExpectedElement(8601);
+ addExpectedElement(8602);
+ addExpectedElement(8603);
+ addExpectedElement(8604);
+ addExpectedElement(8605);
+ addExpectedElement(8606);
+ addExpectedElement(8607);
+ addExpectedElement(8608);
+ addExpectedElement(8609);
+ addExpectedElement(8610);
+ addExpectedElement(8611);
+ addExpectedElement(8612);
+ addExpectedElement(8613);
+ addExpectedElement(8614);
+ addExpectedElement(8615);
+ addExpectedElement(8616);
+ addExpectedElement(8617);
+ addExpectedElement(8618);
+ addExpectedElement(8619);
+ addExpectedElement(8620);
+ addExpectedElement(8621);
+ addExpectedElement(8622);
+ addExpectedElement(8623);
+ addExpectedElement(8624);
+ addExpectedElement(8625);
+ addExpectedElement(8626);
+ addExpectedElement(8627);
+ addExpectedElement(8628);
+ addExpectedElement(8629);
+ addExpectedElement(8630);
+ addExpectedElement(8631);
+ addExpectedElement(8632);
+ addExpectedElement(8633);
+ addExpectedElement(8634);
+ addExpectedElement(8635);
+ addExpectedElement(8636);
+ addExpectedElement(8637);
+ addExpectedElement(8638);
+ addExpectedElement(8639);
+ addExpectedElement(8640);
+ addExpectedElement(8641);
+ addExpectedElement(8642);
+ addExpectedElement(8643);
+ addExpectedElement(8644);
+ addExpectedElement(8645);
+ addExpectedElement(8646);
+ addExpectedElement(8647);
+ addExpectedElement(8648);
+ addExpectedElement(8649);
+ addExpectedElement(8650);
+ addExpectedElement(8651);
+ addExpectedElement(8652);
+ addExpectedElement(8653);
+ addExpectedElement(8654);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 46, parse_org_emftext_language_java_references_PrimitiveTypeReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_references_PrimitiveTypeReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_This"
+ // Java.g:18863:1: parse_org_emftext_language_java_literals_This returns [org.emftext.language.java.literals.This element = null] : a0= 'this' ;
+ public final org.emftext.language.java.literals.This parse_org_emftext_language_java_literals_This() throws RecognitionException {
+ org.emftext.language.java.literals.This element = null;
+
+ int parse_org_emftext_language_java_literals_This_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 47) ) { return element; }
+
+ // Java.g:18866:2: (a0= 'this' )
+ // Java.g:18867:2: a0= 'this'
+ {
+ a0=(Token)match(input,97,FOLLOW_97_in_parse_org_emftext_language_java_literals_This14848); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createThis();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_45_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8655);
+ addExpectedElement(8656);
+ addExpectedElement(8657);
+ addExpectedElement(8658);
+ addExpectedElement(8659);
+ addExpectedElement(8660);
+ addExpectedElement(8661);
+ addExpectedElement(8662);
+ addExpectedElement(8663);
+ addExpectedElement(8664);
+ addExpectedElement(8665);
+ addExpectedElement(8666);
+ addExpectedElement(8667);
+ addExpectedElement(8668);
+ addExpectedElement(8669);
+ addExpectedElement(8670);
+ addExpectedElement(8671);
+ addExpectedElement(8672);
+ addExpectedElement(8673);
+ addExpectedElement(8674);
+ addExpectedElement(8675);
+ addExpectedElement(8676);
+ addExpectedElement(8677);
+ addExpectedElement(8678);
+ addExpectedElement(8679);
+ addExpectedElement(8680);
+ addExpectedElement(8681);
+ addExpectedElement(8682);
+ addExpectedElement(8683);
+ addExpectedElement(8684);
+ addExpectedElement(8685);
+ addExpectedElement(8686);
+ addExpectedElement(8687);
+ addExpectedElement(8688);
+ addExpectedElement(8689);
+ addExpectedElement(8690);
+ addExpectedElement(8691);
+ addExpectedElement(8692);
+ addExpectedElement(8693);
+ addExpectedElement(8694);
+ addExpectedElement(8695);
+ addExpectedElement(8696);
+ addExpectedElement(8697);
+ addExpectedElement(8698);
+ addExpectedElement(8699);
+ addExpectedElement(8700);
+ addExpectedElement(8701);
+ addExpectedElement(8702);
+ addExpectedElement(8703);
+ addExpectedElement(8704);
+ addExpectedElement(8705);
+ addExpectedElement(8706);
+ addExpectedElement(8707);
+ addExpectedElement(8708);
+ addExpectedElement(8709);
+ addExpectedElement(8710);
+ addExpectedElement(8711);
+ addExpectedElement(8712);
+ addExpectedElement(8713);
+ addExpectedElement(8714);
+ addExpectedElement(8715);
+ addExpectedElement(8716);
+ addExpectedElement(8717);
+ addExpectedElement(8718);
+ addExpectedElement(8719);
+ addExpectedElement(8720);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 47, parse_org_emftext_language_java_literals_This_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_This"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_Super"
+ // Java.g:18948:1: parse_org_emftext_language_java_literals_Super returns [org.emftext.language.java.literals.Super element = null] : a0= 'super' ;
+ public final org.emftext.language.java.literals.Super parse_org_emftext_language_java_literals_Super() throws RecognitionException {
+ org.emftext.language.java.literals.Super element = null;
+
+ int parse_org_emftext_language_java_literals_Super_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 48) ) { return element; }
+
+ // Java.g:18951:2: (a0= 'super' )
+ // Java.g:18952:2: a0= 'super'
+ {
+ a0=(Token)match(input,94,FOLLOW_94_in_parse_org_emftext_language_java_literals_Super14877); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createSuper();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_46_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8721);
+ addExpectedElement(8722);
+ addExpectedElement(8723);
+ addExpectedElement(8724);
+ addExpectedElement(8725);
+ addExpectedElement(8726);
+ addExpectedElement(8727);
+ addExpectedElement(8728);
+ addExpectedElement(8729);
+ addExpectedElement(8730);
+ addExpectedElement(8731);
+ addExpectedElement(8732);
+ addExpectedElement(8733);
+ addExpectedElement(8734);
+ addExpectedElement(8735);
+ addExpectedElement(8736);
+ addExpectedElement(8737);
+ addExpectedElement(8738);
+ addExpectedElement(8739);
+ addExpectedElement(8740);
+ addExpectedElement(8741);
+ addExpectedElement(8742);
+ addExpectedElement(8743);
+ addExpectedElement(8744);
+ addExpectedElement(8745);
+ addExpectedElement(8746);
+ addExpectedElement(8747);
+ addExpectedElement(8748);
+ addExpectedElement(8749);
+ addExpectedElement(8750);
+ addExpectedElement(8751);
+ addExpectedElement(8752);
+ addExpectedElement(8753);
+ addExpectedElement(8754);
+ addExpectedElement(8755);
+ addExpectedElement(8756);
+ addExpectedElement(8757);
+ addExpectedElement(8758);
+ addExpectedElement(8759);
+ addExpectedElement(8760);
+ addExpectedElement(8761);
+ addExpectedElement(8762);
+ addExpectedElement(8763);
+ addExpectedElement(8764);
+ addExpectedElement(8765);
+ addExpectedElement(8766);
+ addExpectedElement(8767);
+ addExpectedElement(8768);
+ addExpectedElement(8769);
+ addExpectedElement(8770);
+ addExpectedElement(8771);
+ addExpectedElement(8772);
+ addExpectedElement(8773);
+ addExpectedElement(8774);
+ addExpectedElement(8775);
+ addExpectedElement(8776);
+ addExpectedElement(8777);
+ addExpectedElement(8778);
+ addExpectedElement(8779);
+ addExpectedElement(8780);
+ addExpectedElement(8781);
+ addExpectedElement(8782);
+ addExpectedElement(8783);
+ addExpectedElement(8784);
+ addExpectedElement(8785);
+ addExpectedElement(8786);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 48, parse_org_emftext_language_java_literals_Super_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_Super"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_references_StringReference"
+ // Java.g:19033:1: parse_org_emftext_language_java_references_StringReference returns [org.emftext.language.java.references.StringReference element = null] : (a0= STRING_LITERAL ) ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.references.StringReference parse_org_emftext_language_java_references_StringReference() throws RecognitionException {
+ org.emftext.language.java.references.StringReference element = null;
+
+ int parse_org_emftext_language_java_references_StringReference_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ org.emftext.language.java.references.Reference a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 49) ) { return element; }
+
+ // Java.g:19036:2: ( (a0= STRING_LITERAL ) ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:19037:2: (a0= STRING_LITERAL ) ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ // Java.g:19037:2: (a0= STRING_LITERAL )
+ // Java.g:19038:3: a0= STRING_LITERAL
+ {
+ a0=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_parse_org_emftext_language_java_references_StringReference14910); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createStringReference();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("STRING_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.STRING_REFERENCE__VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.STRING_REFERENCE__VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_47_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8787);
+ addExpectedElement(8788);
+ addExpectedElement(8789);
+ addExpectedElement(8790);
+ addExpectedElement(8791);
+ addExpectedElement(8792);
+ addExpectedElement(8793);
+ addExpectedElement(8794);
+ addExpectedElement(8795);
+ addExpectedElement(8796);
+ addExpectedElement(8797);
+ addExpectedElement(8798);
+ addExpectedElement(8799);
+ addExpectedElement(8800);
+ addExpectedElement(8801);
+ addExpectedElement(8802);
+ addExpectedElement(8803);
+ addExpectedElement(8804);
+ addExpectedElement(8805);
+ addExpectedElement(8806);
+ addExpectedElement(8807);
+ addExpectedElement(8808);
+ addExpectedElement(8809);
+ addExpectedElement(8810);
+ addExpectedElement(8811);
+ addExpectedElement(8812);
+ addExpectedElement(8813);
+ addExpectedElement(8814);
+ addExpectedElement(8815);
+ addExpectedElement(8816);
+ addExpectedElement(8817);
+ addExpectedElement(8818);
+ addExpectedElement(8819);
+ addExpectedElement(8820);
+ addExpectedElement(8821);
+ addExpectedElement(8822);
+ addExpectedElement(8823);
+ addExpectedElement(8824);
+ addExpectedElement(8825);
+ addExpectedElement(8826);
+ addExpectedElement(8827);
+ addExpectedElement(8828);
+ addExpectedElement(8829);
+ addExpectedElement(8830);
+ addExpectedElement(8831);
+ addExpectedElement(8832);
+ addExpectedElement(8833);
+ addExpectedElement(8834);
+ addExpectedElement(8835);
+ addExpectedElement(8836);
+ addExpectedElement(8837);
+ addExpectedElement(8838);
+ addExpectedElement(8839);
+ addExpectedElement(8840);
+ addExpectedElement(8841);
+ addExpectedElement(8842);
+ addExpectedElement(8843);
+ addExpectedElement(8844);
+ addExpectedElement(8845);
+ addExpectedElement(8846);
+ addExpectedElement(8847);
+ addExpectedElement(8848);
+ addExpectedElement(8849);
+ addExpectedElement(8850);
+ addExpectedElement(8851);
+ }
+
+ // Java.g:19137:2: ( (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt170=2;
+ int LA170_0 = input.LA(1);
+
+ if ( (LA170_0==37) ) {
+ alt170=1;
+ }
+ switch (alt170) {
+ case 1 :
+ // Java.g:19138:3: (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:19138:3: (a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:19139:4: a1= '.' (a2_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a1=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_references_StringReference14940); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createStringReference();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_47_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8852);
+ addExpectedElement(8853);
+ addExpectedElement(8854);
+ addExpectedElement(8855);
+ addExpectedElement(8856);
+ addExpectedElement(8857);
+ addExpectedElement(8858);
+ addExpectedElement(8859);
+ addExpectedElement(8860);
+ addExpectedElement(8861);
+ addExpectedElement(8862);
+ addExpectedElement(8863);
+ addExpectedElement(8864);
+ addExpectedElement(8865);
+ addExpectedElement(8866);
+ addExpectedElement(8867);
+ addExpectedElement(8868);
+ addExpectedElement(8869);
+ addExpectedElement(8870);
+ addExpectedElement(8871);
+ addExpectedElement(8872);
+ addExpectedElement(8873);
+ addExpectedElement(8874);
+ }
+
+ // Java.g:19175:4: (a2_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:19176:5: a2_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_StringReference14966);
+ a2_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.references.ReferencesFactory.eINSTANCE.createStringReference();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.references.ReferencesPackage.STRING_REFERENCE__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_47_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8875);
+ addExpectedElement(8876);
+ addExpectedElement(8877);
+ addExpectedElement(8878);
+ addExpectedElement(8879);
+ addExpectedElement(8880);
+ addExpectedElement(8881);
+ addExpectedElement(8882);
+ addExpectedElement(8883);
+ addExpectedElement(8884);
+ addExpectedElement(8885);
+ addExpectedElement(8886);
+ addExpectedElement(8887);
+ addExpectedElement(8888);
+ addExpectedElement(8889);
+ addExpectedElement(8890);
+ addExpectedElement(8891);
+ addExpectedElement(8892);
+ addExpectedElement(8893);
+ addExpectedElement(8894);
+ addExpectedElement(8895);
+ addExpectedElement(8896);
+ addExpectedElement(8897);
+ addExpectedElement(8898);
+ addExpectedElement(8899);
+ addExpectedElement(8900);
+ addExpectedElement(8901);
+ addExpectedElement(8902);
+ addExpectedElement(8903);
+ addExpectedElement(8904);
+ addExpectedElement(8905);
+ addExpectedElement(8906);
+ addExpectedElement(8907);
+ addExpectedElement(8908);
+ addExpectedElement(8909);
+ addExpectedElement(8910);
+ addExpectedElement(8911);
+ addExpectedElement(8912);
+ addExpectedElement(8913);
+ addExpectedElement(8914);
+ addExpectedElement(8915);
+ addExpectedElement(8916);
+ addExpectedElement(8917);
+ addExpectedElement(8918);
+ addExpectedElement(8919);
+ addExpectedElement(8920);
+ addExpectedElement(8921);
+ addExpectedElement(8922);
+ addExpectedElement(8923);
+ addExpectedElement(8924);
+ addExpectedElement(8925);
+ addExpectedElement(8926);
+ addExpectedElement(8927);
+ addExpectedElement(8928);
+ addExpectedElement(8929);
+ addExpectedElement(8930);
+ addExpectedElement(8931);
+ addExpectedElement(8932);
+ addExpectedElement(8933);
+ addExpectedElement(8934);
+ addExpectedElement(8935);
+ addExpectedElement(8936);
+ addExpectedElement(8937);
+ addExpectedElement(8938);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(8939);
+ addExpectedElement(8940);
+ addExpectedElement(8941);
+ addExpectedElement(8942);
+ addExpectedElement(8943);
+ addExpectedElement(8944);
+ addExpectedElement(8945);
+ addExpectedElement(8946);
+ addExpectedElement(8947);
+ addExpectedElement(8948);
+ addExpectedElement(8949);
+ addExpectedElement(8950);
+ addExpectedElement(8951);
+ addExpectedElement(8952);
+ addExpectedElement(8953);
+ addExpectedElement(8954);
+ addExpectedElement(8955);
+ addExpectedElement(8956);
+ addExpectedElement(8957);
+ addExpectedElement(8958);
+ addExpectedElement(8959);
+ addExpectedElement(8960);
+ addExpectedElement(8961);
+ addExpectedElement(8962);
+ addExpectedElement(8963);
+ addExpectedElement(8964);
+ addExpectedElement(8965);
+ addExpectedElement(8966);
+ addExpectedElement(8967);
+ addExpectedElement(8968);
+ addExpectedElement(8969);
+ addExpectedElement(8970);
+ addExpectedElement(8971);
+ addExpectedElement(8972);
+ addExpectedElement(8973);
+ addExpectedElement(8974);
+ addExpectedElement(8975);
+ addExpectedElement(8976);
+ addExpectedElement(8977);
+ addExpectedElement(8978);
+ addExpectedElement(8979);
+ addExpectedElement(8980);
+ addExpectedElement(8981);
+ addExpectedElement(8982);
+ addExpectedElement(8983);
+ addExpectedElement(8984);
+ addExpectedElement(8985);
+ addExpectedElement(8986);
+ addExpectedElement(8987);
+ addExpectedElement(8988);
+ addExpectedElement(8989);
+ addExpectedElement(8990);
+ addExpectedElement(8991);
+ addExpectedElement(8992);
+ addExpectedElement(8993);
+ addExpectedElement(8994);
+ addExpectedElement(8995);
+ addExpectedElement(8996);
+ addExpectedElement(8997);
+ addExpectedElement(8998);
+ addExpectedElement(8999);
+ addExpectedElement(9000);
+ addExpectedElement(9001);
+ addExpectedElement(9002);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 49, parse_org_emftext_language_java_references_StringReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_references_StringReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_generics_QualifiedTypeArgument"
+ // Java.g:19336:1: parse_org_emftext_language_java_generics_QualifiedTypeArgument returns [org.emftext.language.java.generics.QualifiedTypeArgument element = null] : (a0_0= parse_org_emftext_language_java_types_TypeReference ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ;
+ public final org.emftext.language.java.generics.QualifiedTypeArgument parse_org_emftext_language_java_generics_QualifiedTypeArgument() throws RecognitionException {
+ org.emftext.language.java.generics.QualifiedTypeArgument element = null;
+
+ int parse_org_emftext_language_java_generics_QualifiedTypeArgument_StartIndex = input.index();
+
+ org.emftext.language.java.types.TypeReference a0_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 50) ) { return element; }
+
+ // Java.g:19339:2: ( (a0_0= parse_org_emftext_language_java_types_TypeReference ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:19340:2: (a0_0= parse_org_emftext_language_java_types_TypeReference ) ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ // Java.g:19340:2: (a0_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:19341:3: a0_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_QualifiedTypeArgument15026);
+ a0_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createQualifiedTypeArgument();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.QUALIFIED_TYPE_ARGUMENT__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_48_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9003);
+ addExpectedElement(9004);
+ addExpectedElement(9005);
+ addExpectedElement(9006);
+ addExpectedElement(9007);
+ addExpectedElement(9008);
+ addExpectedElement(9009);
+ addExpectedElement(9010);
+ addExpectedElement(9011);
+ addExpectedElement(9012);
+ addExpectedElement(9013);
+ addExpectedElement(9014);
+ addExpectedElement(9015);
+ addExpectedElement(9016);
+ addExpectedElement(9017);
+ addExpectedElement(9018);
+ addExpectedElement(9019);
+ addExpectedElement(9020);
+ addExpectedElement(9021);
+ }
+
+ // Java.g:19384:2: ( (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop171:
+ do {
+ int alt171=2;
+ int LA171_0 = input.LA(1);
+
+ if ( (LA171_0==49) ) {
+ alt171=1;
+ }
+
+
+ switch (alt171) {
+ case 1 :
+ // Java.g:19385:3: (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:19385:3: (a1_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:19386:4: a1_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_generics_QualifiedTypeArgument15053);
+ a1_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createQualifiedTypeArgument();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.generics.GenericsPackage.QUALIFIED_TYPE_ARGUMENT__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_48_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop171;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9022);
+ addExpectedElement(9023);
+ addExpectedElement(9024);
+ addExpectedElement(9025);
+ addExpectedElement(9026);
+ addExpectedElement(9027);
+ addExpectedElement(9028);
+ addExpectedElement(9029);
+ addExpectedElement(9030);
+ addExpectedElement(9031);
+ addExpectedElement(9032);
+ addExpectedElement(9033);
+ addExpectedElement(9034);
+ addExpectedElement(9035);
+ addExpectedElement(9036);
+ addExpectedElement(9037);
+ addExpectedElement(9038);
+ addExpectedElement(9039);
+ addExpectedElement(9040);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 50, parse_org_emftext_language_java_generics_QualifiedTypeArgument_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_generics_QualifiedTypeArgument"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_generics_UnknownTypeArgument"
+ // Java.g:19432:1: parse_org_emftext_language_java_generics_UnknownTypeArgument returns [org.emftext.language.java.generics.UnknownTypeArgument element = null] : a0= '?' ;
+ public final org.emftext.language.java.generics.UnknownTypeArgument parse_org_emftext_language_java_generics_UnknownTypeArgument() throws RecognitionException {
+ org.emftext.language.java.generics.UnknownTypeArgument element = null;
+
+ int parse_org_emftext_language_java_generics_UnknownTypeArgument_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 51) ) { return element; }
+
+ // Java.g:19435:2: (a0= '?' )
+ // Java.g:19436:2: a0= '?'
+ {
+ a0=(Token)match(input,47,FOLLOW_47_in_parse_org_emftext_language_java_generics_UnknownTypeArgument15094); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createUnknownTypeArgument();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_49_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9041);
+ addExpectedElement(9042);
+ addExpectedElement(9043);
+ addExpectedElement(9044);
+ addExpectedElement(9045);
+ addExpectedElement(9046);
+ addExpectedElement(9047);
+ addExpectedElement(9048);
+ addExpectedElement(9049);
+ addExpectedElement(9050);
+ addExpectedElement(9051);
+ addExpectedElement(9052);
+ addExpectedElement(9053);
+ addExpectedElement(9054);
+ addExpectedElement(9055);
+ addExpectedElement(9056);
+ addExpectedElement(9057);
+ addExpectedElement(9058);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 51, parse_org_emftext_language_java_generics_UnknownTypeArgument_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_generics_UnknownTypeArgument"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_generics_ExtendsTypeArgument"
+ // Java.g:19469:1: parse_org_emftext_language_java_generics_ExtendsTypeArgument returns [org.emftext.language.java.generics.ExtendsTypeArgument element = null] : a0= '?' a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ;
+ public final org.emftext.language.java.generics.ExtendsTypeArgument parse_org_emftext_language_java_generics_ExtendsTypeArgument() throws RecognitionException {
+ org.emftext.language.java.generics.ExtendsTypeArgument element = null;
+
+ int parse_org_emftext_language_java_generics_ExtendsTypeArgument_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ org.emftext.language.java.types.TypeReference a2_0 =null;
+
+ org.emftext.language.java.types.TypeReference a4_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a5_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 52) ) { return element; }
+
+ // Java.g:19472:2: (a0= '?' a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:19473:2: a0= '?' a1= 'extends' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )* ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ a0=(Token)match(input,47,FOLLOW_47_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15123); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createExtendsTypeArgument();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_50_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9059);
+ }
+
+ a1=(Token)match(input,71,FOLLOW_71_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15137); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createExtendsTypeArgument();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_50_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9060);
+ addExpectedElement(9061);
+ addExpectedElement(9062);
+ addExpectedElement(9063);
+ addExpectedElement(9064);
+ addExpectedElement(9065);
+ addExpectedElement(9066);
+ addExpectedElement(9067);
+ addExpectedElement(9068);
+ addExpectedElement(9069);
+ addExpectedElement(9070);
+ }
+
+ // Java.g:19511:2: (a2_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:19512:3: a2_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15155);
+ a2_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createExtendsTypeArgument();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.generics.GenericsPackage.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_50_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9071);
+ addExpectedElement(9072);
+ addExpectedElement(9073);
+ addExpectedElement(9074);
+ addExpectedElement(9075);
+ addExpectedElement(9076);
+ addExpectedElement(9077);
+ addExpectedElement(9078);
+ addExpectedElement(9079);
+ addExpectedElement(9080);
+ addExpectedElement(9081);
+ addExpectedElement(9082);
+ addExpectedElement(9083);
+ addExpectedElement(9084);
+ addExpectedElement(9085);
+ addExpectedElement(9086);
+ addExpectedElement(9087);
+ addExpectedElement(9088);
+ addExpectedElement(9089);
+ addExpectedElement(9090);
+ }
+
+ // Java.g:19556:2: ( (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) ) )*
+ loop172:
+ do {
+ int alt172=2;
+ int LA172_0 = input.LA(1);
+
+ if ( (LA172_0==24) ) {
+ alt172=1;
+ }
+
+
+ switch (alt172) {
+ case 1 :
+ // Java.g:19557:3: (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) )
+ {
+ // Java.g:19557:3: (a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference ) )
+ // Java.g:19558:4: a3= '&' (a4_0= parse_org_emftext_language_java_types_TypeReference )
+ {
+ a3=(Token)match(input,24,FOLLOW_24_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15182); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createExtendsTypeArgument();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_50_0_0_3_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9091);
+ addExpectedElement(9092);
+ addExpectedElement(9093);
+ addExpectedElement(9094);
+ addExpectedElement(9095);
+ addExpectedElement(9096);
+ addExpectedElement(9097);
+ addExpectedElement(9098);
+ addExpectedElement(9099);
+ addExpectedElement(9100);
+ addExpectedElement(9101);
+ }
+
+ // Java.g:19582:4: (a4_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:19583:5: a4_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15208);
+ a4_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createExtendsTypeArgument();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.generics.GenericsPackage.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_50_0_0_3_0_0_1, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9102);
+ addExpectedElement(9103);
+ addExpectedElement(9104);
+ addExpectedElement(9105);
+ addExpectedElement(9106);
+ addExpectedElement(9107);
+ addExpectedElement(9108);
+ addExpectedElement(9109);
+ addExpectedElement(9110);
+ addExpectedElement(9111);
+ addExpectedElement(9112);
+ addExpectedElement(9113);
+ addExpectedElement(9114);
+ addExpectedElement(9115);
+ addExpectedElement(9116);
+ addExpectedElement(9117);
+ addExpectedElement(9118);
+ addExpectedElement(9119);
+ addExpectedElement(9120);
+ addExpectedElement(9121);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop172;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9122);
+ addExpectedElement(9123);
+ addExpectedElement(9124);
+ addExpectedElement(9125);
+ addExpectedElement(9126);
+ addExpectedElement(9127);
+ addExpectedElement(9128);
+ addExpectedElement(9129);
+ addExpectedElement(9130);
+ addExpectedElement(9131);
+ addExpectedElement(9132);
+ addExpectedElement(9133);
+ addExpectedElement(9134);
+ addExpectedElement(9135);
+ addExpectedElement(9136);
+ addExpectedElement(9137);
+ addExpectedElement(9138);
+ addExpectedElement(9139);
+ addExpectedElement(9140);
+ addExpectedElement(9141);
+ }
+
+ // Java.g:19653:2: ( (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop173:
+ do {
+ int alt173=2;
+ int LA173_0 = input.LA(1);
+
+ if ( (LA173_0==49) ) {
+ alt173=1;
+ }
+
+
+ switch (alt173) {
+ case 1 :
+ // Java.g:19654:3: (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:19654:3: (a5_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:19655:4: a5_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15258);
+ a5_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createExtendsTypeArgument();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.generics.GenericsPackage.EXTENDS_TYPE_ARGUMENT__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_50_0_0_4, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop173;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9142);
+ addExpectedElement(9143);
+ addExpectedElement(9144);
+ addExpectedElement(9145);
+ addExpectedElement(9146);
+ addExpectedElement(9147);
+ addExpectedElement(9148);
+ addExpectedElement(9149);
+ addExpectedElement(9150);
+ addExpectedElement(9151);
+ addExpectedElement(9152);
+ addExpectedElement(9153);
+ addExpectedElement(9154);
+ addExpectedElement(9155);
+ addExpectedElement(9156);
+ addExpectedElement(9157);
+ addExpectedElement(9158);
+ addExpectedElement(9159);
+ addExpectedElement(9160);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 52, parse_org_emftext_language_java_generics_ExtendsTypeArgument_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_generics_ExtendsTypeArgument"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_generics_SuperTypeArgument"
+ // Java.g:19701:1: parse_org_emftext_language_java_generics_SuperTypeArgument returns [org.emftext.language.java.generics.SuperTypeArgument element = null] : a0= '?' a1= 'super' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ;
+ public final org.emftext.language.java.generics.SuperTypeArgument parse_org_emftext_language_java_generics_SuperTypeArgument() throws RecognitionException {
+ org.emftext.language.java.generics.SuperTypeArgument element = null;
+
+ int parse_org_emftext_language_java_generics_SuperTypeArgument_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ org.emftext.language.java.types.TypeReference a2_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 53) ) { return element; }
+
+ // Java.g:19704:2: (a0= '?' a1= 'super' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:19705:2: a0= '?' a1= 'super' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ a0=(Token)match(input,47,FOLLOW_47_in_parse_org_emftext_language_java_generics_SuperTypeArgument15299); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createSuperTypeArgument();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_51_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9161);
+ }
+
+ a1=(Token)match(input,94,FOLLOW_94_in_parse_org_emftext_language_java_generics_SuperTypeArgument15313); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createSuperTypeArgument();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_51_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9162);
+ addExpectedElement(9163);
+ addExpectedElement(9164);
+ addExpectedElement(9165);
+ addExpectedElement(9166);
+ addExpectedElement(9167);
+ addExpectedElement(9168);
+ addExpectedElement(9169);
+ addExpectedElement(9170);
+ addExpectedElement(9171);
+ addExpectedElement(9172);
+ }
+
+ // Java.g:19743:2: (a2_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:19744:3: a2_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_SuperTypeArgument15331);
+ a2_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createSuperTypeArgument();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.generics.GenericsPackage.SUPER_TYPE_ARGUMENT__SUPER_TYPE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_51_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9173);
+ addExpectedElement(9174);
+ addExpectedElement(9175);
+ addExpectedElement(9176);
+ addExpectedElement(9177);
+ addExpectedElement(9178);
+ addExpectedElement(9179);
+ addExpectedElement(9180);
+ addExpectedElement(9181);
+ addExpectedElement(9182);
+ addExpectedElement(9183);
+ addExpectedElement(9184);
+ addExpectedElement(9185);
+ addExpectedElement(9186);
+ addExpectedElement(9187);
+ addExpectedElement(9188);
+ addExpectedElement(9189);
+ addExpectedElement(9190);
+ addExpectedElement(9191);
+ }
+
+ // Java.g:19787:2: ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop174:
+ do {
+ int alt174=2;
+ int LA174_0 = input.LA(1);
+
+ if ( (LA174_0==49) ) {
+ alt174=1;
+ }
+
+
+ switch (alt174) {
+ case 1 :
+ // Java.g:19788:3: (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:19788:3: (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:19789:4: a3_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_generics_SuperTypeArgument15358);
+ a3_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.generics.GenericsFactory.eINSTANCE.createSuperTypeArgument();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.generics.GenericsPackage.SUPER_TYPE_ARGUMENT__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_51_0_0_3, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop174;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9192);
+ addExpectedElement(9193);
+ addExpectedElement(9194);
+ addExpectedElement(9195);
+ addExpectedElement(9196);
+ addExpectedElement(9197);
+ addExpectedElement(9198);
+ addExpectedElement(9199);
+ addExpectedElement(9200);
+ addExpectedElement(9201);
+ addExpectedElement(9202);
+ addExpectedElement(9203);
+ addExpectedElement(9204);
+ addExpectedElement(9205);
+ addExpectedElement(9206);
+ addExpectedElement(9207);
+ addExpectedElement(9208);
+ addExpectedElement(9209);
+ addExpectedElement(9210);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 53, parse_org_emftext_language_java_generics_SuperTypeArgument_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_generics_SuperTypeArgument"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Assert"
+ // Java.g:19835:1: parse_org_emftext_language_java_statements_Assert returns [org.emftext.language.java.statements.Assert element = null] : a0= 'assert' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a2= ':' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? a4= ';' ;
+ public final org.emftext.language.java.statements.Assert parse_org_emftext_language_java_statements_Assert() throws RecognitionException {
+ org.emftext.language.java.statements.Assert element = null;
+
+ int parse_org_emftext_language_java_statements_Assert_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a4=null;
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 54) ) { return element; }
+
+ // Java.g:19838:2: (a0= 'assert' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a2= ':' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? a4= ';' )
+ // Java.g:19839:2: a0= 'assert' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a2= ':' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? a4= ';'
+ {
+ a0=(Token)match(input,57,FOLLOW_57_in_parse_org_emftext_language_java_statements_Assert15399); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createAssert();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_52_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9211);
+ addExpectedElement(9212);
+ addExpectedElement(9213);
+ addExpectedElement(9214);
+ addExpectedElement(9215);
+ addExpectedElement(9216);
+ addExpectedElement(9217);
+ addExpectedElement(9218);
+ addExpectedElement(9219);
+ addExpectedElement(9220);
+ addExpectedElement(9221);
+ addExpectedElement(9222);
+ addExpectedElement(9223);
+ addExpectedElement(9224);
+ addExpectedElement(9225);
+ addExpectedElement(9226);
+ addExpectedElement(9227);
+ addExpectedElement(9228);
+ addExpectedElement(9229);
+ addExpectedElement(9230);
+ addExpectedElement(9231);
+ addExpectedElement(9232);
+ addExpectedElement(9233);
+ addExpectedElement(9234);
+ addExpectedElement(9235);
+ addExpectedElement(9236);
+ addExpectedElement(9237);
+ addExpectedElement(9238);
+ addExpectedElement(9239);
+ addExpectedElement(9240);
+ addExpectedElement(9241);
+ addExpectedElement(9242);
+ addExpectedElement(9243);
+ addExpectedElement(9244);
+ addExpectedElement(9245);
+ addExpectedElement(9246);
+ addExpectedElement(9247);
+ addExpectedElement(9248);
+ addExpectedElement(9249);
+ addExpectedElement(9250);
+ addExpectedElement(9251);
+ addExpectedElement(9252);
+ addExpectedElement(9253);
+ }
+
+ // Java.g:19895:2: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:19896:3: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Assert15417);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createAssert();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.ASSERT__CONDITION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_52_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9254);
+ addExpectedElement(9255);
+ }
+
+ // Java.g:19922:2: ( (a2= ':' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ int alt175=2;
+ int LA175_0 = input.LA(1);
+
+ if ( (LA175_0==41) ) {
+ alt175=1;
+ }
+ switch (alt175) {
+ case 1 :
+ // Java.g:19923:3: (a2= ':' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:19923:3: (a2= ':' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:19924:4: a2= ':' (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a2=(Token)match(input,41,FOLLOW_41_in_parse_org_emftext_language_java_statements_Assert15444); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createAssert();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_52_0_0_2_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9256);
+ addExpectedElement(9257);
+ addExpectedElement(9258);
+ addExpectedElement(9259);
+ addExpectedElement(9260);
+ addExpectedElement(9261);
+ addExpectedElement(9262);
+ addExpectedElement(9263);
+ addExpectedElement(9264);
+ addExpectedElement(9265);
+ addExpectedElement(9266);
+ addExpectedElement(9267);
+ addExpectedElement(9268);
+ addExpectedElement(9269);
+ addExpectedElement(9270);
+ addExpectedElement(9271);
+ addExpectedElement(9272);
+ addExpectedElement(9273);
+ addExpectedElement(9274);
+ addExpectedElement(9275);
+ addExpectedElement(9276);
+ addExpectedElement(9277);
+ addExpectedElement(9278);
+ addExpectedElement(9279);
+ addExpectedElement(9280);
+ addExpectedElement(9281);
+ addExpectedElement(9282);
+ addExpectedElement(9283);
+ addExpectedElement(9284);
+ addExpectedElement(9285);
+ addExpectedElement(9286);
+ addExpectedElement(9287);
+ addExpectedElement(9288);
+ addExpectedElement(9289);
+ addExpectedElement(9290);
+ addExpectedElement(9291);
+ addExpectedElement(9292);
+ addExpectedElement(9293);
+ addExpectedElement(9294);
+ addExpectedElement(9295);
+ addExpectedElement(9296);
+ addExpectedElement(9297);
+ addExpectedElement(9298);
+ }
+
+ // Java.g:19980:4: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:19981:5: a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Assert15470);
+ a3_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createAssert();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.ASSERT__ERROR_MESSAGE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_52_0_0_2_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9299);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9300);
+ }
+
+ a4=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_Assert15511); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createAssert();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_52_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9301);
+ addExpectedElement(9302);
+ addExpectedElement(9303);
+ addExpectedElement(9304);
+ addExpectedElement(9305);
+ addExpectedElement(9306);
+ addExpectedElement(9307);
+ addExpectedElement(9308);
+ addExpectedElement(9309);
+ addExpectedElement(9310);
+ addExpectedElement(9311);
+ addExpectedElement(9312);
+ addExpectedElement(9313);
+ addExpectedElement(9314);
+ addExpectedElement(9315);
+ addExpectedElement(9316);
+ addExpectedElement(9317);
+ addExpectedElement(9318);
+ addExpectedElement(9319);
+ addExpectedElement(9320);
+ addExpectedElement(9321);
+ addExpectedElement(9322);
+ addExpectedElement(9323);
+ addExpectedElement(9324);
+ addExpectedElement(9325);
+ addExpectedElement(9326);
+ addExpectedElement(9327);
+ addExpectedElement(9328);
+ addExpectedElement(9329);
+ addExpectedElement(9330);
+ addExpectedElement(9331);
+ addExpectedElement(9332);
+ addExpectedElement(9333);
+ addExpectedElement(9334);
+ addExpectedElement(9335);
+ addExpectedElement(9336);
+ addExpectedElement(9337);
+ addExpectedElement(9338);
+ addExpectedElement(9339);
+ addExpectedElement(9340);
+ addExpectedElement(9341);
+ addExpectedElement(9342);
+ addExpectedElement(9343);
+ addExpectedElement(9344);
+ addExpectedElement(9345);
+ addExpectedElement(9346);
+ addExpectedElement(9347);
+ addExpectedElement(9348);
+ addExpectedElement(9349);
+ addExpectedElement(9350);
+ addExpectedElement(9351);
+ addExpectedElement(9352);
+ addExpectedElement(9353);
+ addExpectedElement(9354);
+ addExpectedElement(9355);
+ addExpectedElement(9356);
+ addExpectedElement(9357);
+ addExpectedElement(9358);
+ addExpectedElement(9359);
+ addExpectedElement(9360);
+ addExpectedElement(9361);
+ addExpectedElement(9362);
+ addExpectedElement(9363);
+ addExpectedElement(9364);
+ addExpectedElement(9365);
+ addExpectedElement(9366);
+ addExpectedElement(9367);
+ addExpectedElement(9368);
+ addExpectedElement(9369);
+ addExpectedElement(9370);
+ addExpectedElement(9371);
+ addExpectedElement(9372);
+ addExpectedElement(9373);
+ addExpectedElement(9374);
+ addExpectedElement(9375);
+ addExpectedElement(9376);
+ addExpectedElement(9377);
+ addExpectedElement(9378);
+ addExpectedElement(9379);
+ addExpectedElement(9380);
+ addExpectedElement(9381);
+ addExpectedElement(9382);
+ addExpectedElement(9383);
+ addExpectedElement(9384);
+ addExpectedElement(9385);
+ addExpectedElement(9386);
+ addExpectedElement(9387);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 54, parse_org_emftext_language_java_statements_Assert_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Assert"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Condition"
+ // Java.g:20115:1: parse_org_emftext_language_java_statements_Condition returns [org.emftext.language.java.statements.Condition element = null] : a0= 'if' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' (a4_0= parse_org_emftext_language_java_statements_Statement ) ( (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) ) )? ;
+ public final org.emftext.language.java.statements.Condition parse_org_emftext_language_java_statements_Condition() throws RecognitionException {
+ org.emftext.language.java.statements.Condition element = null;
+
+ int parse_org_emftext_language_java_statements_Condition_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ org.emftext.language.java.expressions.AssignmentExpression a2_0 =null;
+
+ org.emftext.language.java.statements.Statement a4_0 =null;
+
+ org.emftext.language.java.statements.Statement a6_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 55) ) { return element; }
+
+ // Java.g:20118:2: (a0= 'if' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' (a4_0= parse_org_emftext_language_java_statements_Statement ) ( (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) ) )? )
+ // Java.g:20119:2: a0= 'if' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' (a4_0= parse_org_emftext_language_java_statements_Statement ) ( (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) ) )?
+ {
+ a0=(Token)match(input,76,FOLLOW_76_in_parse_org_emftext_language_java_statements_Condition15540); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCondition();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_53_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9388);
+ }
+
+ a1=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_Condition15554); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCondition();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_53_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9389);
+ addExpectedElement(9390);
+ addExpectedElement(9391);
+ addExpectedElement(9392);
+ addExpectedElement(9393);
+ addExpectedElement(9394);
+ addExpectedElement(9395);
+ addExpectedElement(9396);
+ addExpectedElement(9397);
+ addExpectedElement(9398);
+ addExpectedElement(9399);
+ addExpectedElement(9400);
+ addExpectedElement(9401);
+ addExpectedElement(9402);
+ addExpectedElement(9403);
+ addExpectedElement(9404);
+ addExpectedElement(9405);
+ addExpectedElement(9406);
+ addExpectedElement(9407);
+ addExpectedElement(9408);
+ addExpectedElement(9409);
+ addExpectedElement(9410);
+ addExpectedElement(9411);
+ addExpectedElement(9412);
+ addExpectedElement(9413);
+ addExpectedElement(9414);
+ addExpectedElement(9415);
+ addExpectedElement(9416);
+ addExpectedElement(9417);
+ addExpectedElement(9418);
+ addExpectedElement(9419);
+ addExpectedElement(9420);
+ addExpectedElement(9421);
+ addExpectedElement(9422);
+ addExpectedElement(9423);
+ addExpectedElement(9424);
+ addExpectedElement(9425);
+ addExpectedElement(9426);
+ addExpectedElement(9427);
+ addExpectedElement(9428);
+ addExpectedElement(9429);
+ addExpectedElement(9430);
+ addExpectedElement(9431);
+ }
+
+ // Java.g:20189:2: (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:20190:3: a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Condition15572);
+ a2_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCondition();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONDITION__CONDITION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_53_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9432);
+ }
+
+ a3=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_Condition15590); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCondition();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_53_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9433);
+ addExpectedElement(9434);
+ addExpectedElement(9435);
+ addExpectedElement(9436);
+ addExpectedElement(9437);
+ addExpectedElement(9438);
+ addExpectedElement(9439);
+ addExpectedElement(9440);
+ addExpectedElement(9441);
+ addExpectedElement(9442);
+ addExpectedElement(9443);
+ addExpectedElement(9444);
+ addExpectedElement(9445);
+ addExpectedElement(9446);
+ addExpectedElement(9447);
+ addExpectedElement(9448);
+ addExpectedElement(9449);
+ addExpectedElement(9450);
+ addExpectedElement(9451);
+ addExpectedElement(9452);
+ addExpectedElement(9453);
+ addExpectedElement(9454);
+ addExpectedElement(9455);
+ addExpectedElement(9456);
+ addExpectedElement(9457);
+ addExpectedElement(9458);
+ addExpectedElement(9459);
+ addExpectedElement(9460);
+ addExpectedElement(9461);
+ addExpectedElement(9462);
+ addExpectedElement(9463);
+ addExpectedElement(9464);
+ addExpectedElement(9465);
+ addExpectedElement(9466);
+ addExpectedElement(9467);
+ addExpectedElement(9468);
+ addExpectedElement(9469);
+ addExpectedElement(9470);
+ addExpectedElement(9471);
+ addExpectedElement(9472);
+ addExpectedElement(9473);
+ addExpectedElement(9474);
+ addExpectedElement(9475);
+ addExpectedElement(9476);
+ addExpectedElement(9477);
+ addExpectedElement(9478);
+ addExpectedElement(9479);
+ addExpectedElement(9480);
+ addExpectedElement(9481);
+ addExpectedElement(9482);
+ addExpectedElement(9483);
+ addExpectedElement(9484);
+ addExpectedElement(9485);
+ addExpectedElement(9486);
+ addExpectedElement(9487);
+ addExpectedElement(9488);
+ addExpectedElement(9489);
+ addExpectedElement(9490);
+ addExpectedElement(9491);
+ addExpectedElement(9492);
+ addExpectedElement(9493);
+ addExpectedElement(9494);
+ addExpectedElement(9495);
+ addExpectedElement(9496);
+ addExpectedElement(9497);
+ addExpectedElement(9498);
+ addExpectedElement(9499);
+ addExpectedElement(9500);
+ addExpectedElement(9501);
+ addExpectedElement(9502);
+ addExpectedElement(9503);
+ addExpectedElement(9504);
+ addExpectedElement(9505);
+ addExpectedElement(9506);
+ addExpectedElement(9507);
+ addExpectedElement(9508);
+ }
+
+ // Java.g:20304:2: (a4_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:20305:3: a4_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_Condition15608);
+ a4_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCondition();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONDITION__STATEMENT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_53_0_0_5, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9509);
+ addExpectedElement(9510);
+ addExpectedElement(9511);
+ addExpectedElement(9512);
+ addExpectedElement(9513);
+ addExpectedElement(9514);
+ addExpectedElement(9515);
+ addExpectedElement(9516);
+ addExpectedElement(9517);
+ addExpectedElement(9518);
+ addExpectedElement(9519);
+ addExpectedElement(9520);
+ addExpectedElement(9521);
+ addExpectedElement(9522);
+ addExpectedElement(9523);
+ addExpectedElement(9524);
+ addExpectedElement(9525);
+ addExpectedElement(9526);
+ addExpectedElement(9527);
+ addExpectedElement(9528);
+ addExpectedElement(9529);
+ addExpectedElement(9530);
+ addExpectedElement(9531);
+ addExpectedElement(9532);
+ addExpectedElement(9533);
+ addExpectedElement(9534);
+ addExpectedElement(9535);
+ addExpectedElement(9536);
+ addExpectedElement(9537);
+ addExpectedElement(9538);
+ addExpectedElement(9539);
+ addExpectedElement(9540);
+ addExpectedElement(9541);
+ addExpectedElement(9542);
+ addExpectedElement(9543);
+ addExpectedElement(9544);
+ addExpectedElement(9545);
+ addExpectedElement(9546);
+ addExpectedElement(9547);
+ addExpectedElement(9548);
+ addExpectedElement(9549);
+ addExpectedElement(9550);
+ addExpectedElement(9551);
+ addExpectedElement(9552);
+ addExpectedElement(9553);
+ addExpectedElement(9554);
+ addExpectedElement(9555);
+ addExpectedElement(9556);
+ addExpectedElement(9557);
+ addExpectedElement(9558);
+ addExpectedElement(9559);
+ addExpectedElement(9560);
+ addExpectedElement(9561);
+ addExpectedElement(9562);
+ addExpectedElement(9563);
+ addExpectedElement(9564);
+ addExpectedElement(9565);
+ addExpectedElement(9566);
+ addExpectedElement(9567);
+ addExpectedElement(9568);
+ addExpectedElement(9569);
+ addExpectedElement(9570);
+ addExpectedElement(9571);
+ addExpectedElement(9572);
+ addExpectedElement(9573);
+ addExpectedElement(9574);
+ addExpectedElement(9575);
+ addExpectedElement(9576);
+ addExpectedElement(9577);
+ addExpectedElement(9578);
+ addExpectedElement(9579);
+ addExpectedElement(9580);
+ addExpectedElement(9581);
+ addExpectedElement(9582);
+ addExpectedElement(9583);
+ addExpectedElement(9584);
+ addExpectedElement(9585);
+ addExpectedElement(9586);
+ addExpectedElement(9587);
+ addExpectedElement(9588);
+ addExpectedElement(9589);
+ addExpectedElement(9590);
+ addExpectedElement(9591);
+ addExpectedElement(9592);
+ addExpectedElement(9593);
+ addExpectedElement(9594);
+ addExpectedElement(9595);
+ }
+
+ // Java.g:20416:2: ( (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) ) )?
+ int alt176=2;
+ int LA176_0 = input.LA(1);
+
+ if ( (LA176_0==69) ) {
+ int LA176_1 = input.LA(2);
+
+ if ( (synpred177_Java()) ) {
+ alt176=1;
+ }
+ }
+ switch (alt176) {
+ case 1 :
+ // Java.g:20417:3: (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:20417:3: (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:20418:4: a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ a5=(Token)match(input,69,FOLLOW_69_in_parse_org_emftext_language_java_statements_Condition15635); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCondition();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_53_0_0_6_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9596);
+ addExpectedElement(9597);
+ addExpectedElement(9598);
+ addExpectedElement(9599);
+ addExpectedElement(9600);
+ addExpectedElement(9601);
+ addExpectedElement(9602);
+ addExpectedElement(9603);
+ addExpectedElement(9604);
+ addExpectedElement(9605);
+ addExpectedElement(9606);
+ addExpectedElement(9607);
+ addExpectedElement(9608);
+ addExpectedElement(9609);
+ addExpectedElement(9610);
+ addExpectedElement(9611);
+ addExpectedElement(9612);
+ addExpectedElement(9613);
+ addExpectedElement(9614);
+ addExpectedElement(9615);
+ addExpectedElement(9616);
+ addExpectedElement(9617);
+ addExpectedElement(9618);
+ addExpectedElement(9619);
+ addExpectedElement(9620);
+ addExpectedElement(9621);
+ addExpectedElement(9622);
+ addExpectedElement(9623);
+ addExpectedElement(9624);
+ addExpectedElement(9625);
+ addExpectedElement(9626);
+ addExpectedElement(9627);
+ addExpectedElement(9628);
+ addExpectedElement(9629);
+ addExpectedElement(9630);
+ addExpectedElement(9631);
+ addExpectedElement(9632);
+ addExpectedElement(9633);
+ addExpectedElement(9634);
+ addExpectedElement(9635);
+ addExpectedElement(9636);
+ addExpectedElement(9637);
+ addExpectedElement(9638);
+ addExpectedElement(9639);
+ addExpectedElement(9640);
+ addExpectedElement(9641);
+ addExpectedElement(9642);
+ addExpectedElement(9643);
+ addExpectedElement(9644);
+ addExpectedElement(9645);
+ addExpectedElement(9646);
+ addExpectedElement(9647);
+ addExpectedElement(9648);
+ addExpectedElement(9649);
+ addExpectedElement(9650);
+ addExpectedElement(9651);
+ addExpectedElement(9652);
+ addExpectedElement(9653);
+ addExpectedElement(9654);
+ addExpectedElement(9655);
+ addExpectedElement(9656);
+ addExpectedElement(9657);
+ addExpectedElement(9658);
+ addExpectedElement(9659);
+ addExpectedElement(9660);
+ addExpectedElement(9661);
+ addExpectedElement(9662);
+ addExpectedElement(9663);
+ addExpectedElement(9664);
+ addExpectedElement(9665);
+ addExpectedElement(9666);
+ addExpectedElement(9667);
+ addExpectedElement(9668);
+ addExpectedElement(9669);
+ addExpectedElement(9670);
+ addExpectedElement(9671);
+ }
+
+ // Java.g:20507:4: (a6_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:20508:5: a6_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_Condition15661);
+ a6_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCondition();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONDITION__ELSE_STATEMENT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_53_0_0_6_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9672);
+ addExpectedElement(9673);
+ addExpectedElement(9674);
+ addExpectedElement(9675);
+ addExpectedElement(9676);
+ addExpectedElement(9677);
+ addExpectedElement(9678);
+ addExpectedElement(9679);
+ addExpectedElement(9680);
+ addExpectedElement(9681);
+ addExpectedElement(9682);
+ addExpectedElement(9683);
+ addExpectedElement(9684);
+ addExpectedElement(9685);
+ addExpectedElement(9686);
+ addExpectedElement(9687);
+ addExpectedElement(9688);
+ addExpectedElement(9689);
+ addExpectedElement(9690);
+ addExpectedElement(9691);
+ addExpectedElement(9692);
+ addExpectedElement(9693);
+ addExpectedElement(9694);
+ addExpectedElement(9695);
+ addExpectedElement(9696);
+ addExpectedElement(9697);
+ addExpectedElement(9698);
+ addExpectedElement(9699);
+ addExpectedElement(9700);
+ addExpectedElement(9701);
+ addExpectedElement(9702);
+ addExpectedElement(9703);
+ addExpectedElement(9704);
+ addExpectedElement(9705);
+ addExpectedElement(9706);
+ addExpectedElement(9707);
+ addExpectedElement(9708);
+ addExpectedElement(9709);
+ addExpectedElement(9710);
+ addExpectedElement(9711);
+ addExpectedElement(9712);
+ addExpectedElement(9713);
+ addExpectedElement(9714);
+ addExpectedElement(9715);
+ addExpectedElement(9716);
+ addExpectedElement(9717);
+ addExpectedElement(9718);
+ addExpectedElement(9719);
+ addExpectedElement(9720);
+ addExpectedElement(9721);
+ addExpectedElement(9722);
+ addExpectedElement(9723);
+ addExpectedElement(9724);
+ addExpectedElement(9725);
+ addExpectedElement(9726);
+ addExpectedElement(9727);
+ addExpectedElement(9728);
+ addExpectedElement(9729);
+ addExpectedElement(9730);
+ addExpectedElement(9731);
+ addExpectedElement(9732);
+ addExpectedElement(9733);
+ addExpectedElement(9734);
+ addExpectedElement(9735);
+ addExpectedElement(9736);
+ addExpectedElement(9737);
+ addExpectedElement(9738);
+ addExpectedElement(9739);
+ addExpectedElement(9740);
+ addExpectedElement(9741);
+ addExpectedElement(9742);
+ addExpectedElement(9743);
+ addExpectedElement(9744);
+ addExpectedElement(9745);
+ addExpectedElement(9746);
+ addExpectedElement(9747);
+ addExpectedElement(9748);
+ addExpectedElement(9749);
+ addExpectedElement(9750);
+ addExpectedElement(9751);
+ addExpectedElement(9752);
+ addExpectedElement(9753);
+ addExpectedElement(9754);
+ addExpectedElement(9755);
+ addExpectedElement(9756);
+ addExpectedElement(9757);
+ addExpectedElement(9758);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9759);
+ addExpectedElement(9760);
+ addExpectedElement(9761);
+ addExpectedElement(9762);
+ addExpectedElement(9763);
+ addExpectedElement(9764);
+ addExpectedElement(9765);
+ addExpectedElement(9766);
+ addExpectedElement(9767);
+ addExpectedElement(9768);
+ addExpectedElement(9769);
+ addExpectedElement(9770);
+ addExpectedElement(9771);
+ addExpectedElement(9772);
+ addExpectedElement(9773);
+ addExpectedElement(9774);
+ addExpectedElement(9775);
+ addExpectedElement(9776);
+ addExpectedElement(9777);
+ addExpectedElement(9778);
+ addExpectedElement(9779);
+ addExpectedElement(9780);
+ addExpectedElement(9781);
+ addExpectedElement(9782);
+ addExpectedElement(9783);
+ addExpectedElement(9784);
+ addExpectedElement(9785);
+ addExpectedElement(9786);
+ addExpectedElement(9787);
+ addExpectedElement(9788);
+ addExpectedElement(9789);
+ addExpectedElement(9790);
+ addExpectedElement(9791);
+ addExpectedElement(9792);
+ addExpectedElement(9793);
+ addExpectedElement(9794);
+ addExpectedElement(9795);
+ addExpectedElement(9796);
+ addExpectedElement(9797);
+ addExpectedElement(9798);
+ addExpectedElement(9799);
+ addExpectedElement(9800);
+ addExpectedElement(9801);
+ addExpectedElement(9802);
+ addExpectedElement(9803);
+ addExpectedElement(9804);
+ addExpectedElement(9805);
+ addExpectedElement(9806);
+ addExpectedElement(9807);
+ addExpectedElement(9808);
+ addExpectedElement(9809);
+ addExpectedElement(9810);
+ addExpectedElement(9811);
+ addExpectedElement(9812);
+ addExpectedElement(9813);
+ addExpectedElement(9814);
+ addExpectedElement(9815);
+ addExpectedElement(9816);
+ addExpectedElement(9817);
+ addExpectedElement(9818);
+ addExpectedElement(9819);
+ addExpectedElement(9820);
+ addExpectedElement(9821);
+ addExpectedElement(9822);
+ addExpectedElement(9823);
+ addExpectedElement(9824);
+ addExpectedElement(9825);
+ addExpectedElement(9826);
+ addExpectedElement(9827);
+ addExpectedElement(9828);
+ addExpectedElement(9829);
+ addExpectedElement(9830);
+ addExpectedElement(9831);
+ addExpectedElement(9832);
+ addExpectedElement(9833);
+ addExpectedElement(9834);
+ addExpectedElement(9835);
+ addExpectedElement(9836);
+ addExpectedElement(9837);
+ addExpectedElement(9838);
+ addExpectedElement(9839);
+ addExpectedElement(9840);
+ addExpectedElement(9841);
+ addExpectedElement(9842);
+ addExpectedElement(9843);
+ addExpectedElement(9844);
+ addExpectedElement(9845);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 55, parse_org_emftext_language_java_statements_Condition_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Condition"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_ForLoop"
+ // Java.g:20714:1: parse_org_emftext_language_java_statements_ForLoop returns [org.emftext.language.java.statements.ForLoop element = null] : a0= 'for' a1= '(' ( (a2_0= parse_org_emftext_language_java_statements_ForLoopInitializer ) )? a3= ';' ( (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a5= ';' ( ( (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a9= ')' (a10_0= parse_org_emftext_language_java_statements_Statement ) ;
+ public final org.emftext.language.java.statements.ForLoop parse_org_emftext_language_java_statements_ForLoop() throws RecognitionException {
+ org.emftext.language.java.statements.ForLoop element = null;
+
+ int parse_org_emftext_language_java_statements_ForLoop_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a7=null;
+ Token a9=null;
+ org.emftext.language.java.statements.ForLoopInitializer a2_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a4_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a6_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a8_0 =null;
+
+ org.emftext.language.java.statements.Statement a10_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 56) ) { return element; }
+
+ // Java.g:20717:2: (a0= 'for' a1= '(' ( (a2_0= parse_org_emftext_language_java_statements_ForLoopInitializer ) )? a3= ';' ( (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a5= ';' ( ( (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a9= ')' (a10_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:20718:2: a0= 'for' a1= '(' ( (a2_0= parse_org_emftext_language_java_statements_ForLoopInitializer ) )? a3= ';' ( (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a5= ';' ( ( (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )? a9= ')' (a10_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ a0=(Token)match(input,75,FOLLOW_75_in_parse_org_emftext_language_java_statements_ForLoop15717); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9846);
+ }
+
+ a1=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_ForLoop15731); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9847);
+ addExpectedElement(9848);
+ addExpectedElement(9849);
+ addExpectedElement(9850);
+ addExpectedElement(9851);
+ addExpectedElement(9852);
+ addExpectedElement(9853);
+ addExpectedElement(9854);
+ addExpectedElement(9855);
+ addExpectedElement(9856);
+ addExpectedElement(9857);
+ addExpectedElement(9858);
+ addExpectedElement(9859);
+ addExpectedElement(9860);
+ addExpectedElement(9861);
+ addExpectedElement(9862);
+ addExpectedElement(9863);
+ addExpectedElement(9864);
+ addExpectedElement(9865);
+ addExpectedElement(9866);
+ addExpectedElement(9867);
+ addExpectedElement(9868);
+ addExpectedElement(9869);
+ addExpectedElement(9870);
+ addExpectedElement(9871);
+ addExpectedElement(9872);
+ addExpectedElement(9873);
+ addExpectedElement(9874);
+ addExpectedElement(9875);
+ addExpectedElement(9876);
+ addExpectedElement(9877);
+ addExpectedElement(9878);
+ addExpectedElement(9879);
+ addExpectedElement(9880);
+ addExpectedElement(9881);
+ addExpectedElement(9882);
+ addExpectedElement(9883);
+ addExpectedElement(9884);
+ addExpectedElement(9885);
+ addExpectedElement(9886);
+ addExpectedElement(9887);
+ addExpectedElement(9888);
+ addExpectedElement(9889);
+ addExpectedElement(9890);
+ addExpectedElement(9891);
+ addExpectedElement(9892);
+ addExpectedElement(9893);
+ addExpectedElement(9894);
+ addExpectedElement(9895);
+ addExpectedElement(9896);
+ addExpectedElement(9897);
+ addExpectedElement(9898);
+ addExpectedElement(9899);
+ addExpectedElement(9900);
+ addExpectedElement(9901);
+ addExpectedElement(9902);
+ addExpectedElement(9903);
+ }
+
+ // Java.g:20802:2: ( (a2_0= parse_org_emftext_language_java_statements_ForLoopInitializer ) )?
+ int alt177=2;
+ int LA177_0 = input.LA(1);
+
+ if ( ((LA177_0 >= BOOLEAN_LITERAL && LA177_0 <= IDENTIFIER)||(LA177_0 >= OCTAL_INTEGER_LITERAL && LA177_0 <= OCTAL_LONG_LITERAL)||LA177_0==STRING_LITERAL||LA177_0==21||LA177_0==26||(LA177_0 >= 30 && LA177_0 <= 31)||(LA177_0 >= 34 && LA177_0 <= 35)||LA177_0==43||LA177_0==48||LA177_0==56||LA177_0==58||LA177_0==60||(LA177_0 >= 63 && LA177_0 <= 64)||LA177_0==68||LA177_0==72||LA177_0==74||LA177_0==80||(LA177_0 >= 82 && LA177_0 <= 85)||(LA177_0 >= 87 && LA177_0 <= 89)||(LA177_0 >= 91 && LA177_0 <= 94)||(LA177_0 >= 96 && LA177_0 <= 97)||LA177_0==100||(LA177_0 >= 102 && LA177_0 <= 103)||LA177_0==105||LA177_0==110) ) {
+ alt177=1;
+ }
+ switch (alt177) {
+ case 1 :
+ // Java.g:20803:3: (a2_0= parse_org_emftext_language_java_statements_ForLoopInitializer )
+ {
+ // Java.g:20803:3: (a2_0= parse_org_emftext_language_java_statements_ForLoopInitializer )
+ // Java.g:20804:4: a2_0= parse_org_emftext_language_java_statements_ForLoopInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_ForLoopInitializer_in_parse_org_emftext_language_java_statements_ForLoop15754);
+ a2_0=parse_org_emftext_language_java_statements_ForLoopInitializer();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__INIT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9904);
+ }
+
+ a3=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_ForLoop15780); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9905);
+ addExpectedElement(9906);
+ addExpectedElement(9907);
+ addExpectedElement(9908);
+ addExpectedElement(9909);
+ addExpectedElement(9910);
+ addExpectedElement(9911);
+ addExpectedElement(9912);
+ addExpectedElement(9913);
+ addExpectedElement(9914);
+ addExpectedElement(9915);
+ addExpectedElement(9916);
+ addExpectedElement(9917);
+ addExpectedElement(9918);
+ addExpectedElement(9919);
+ addExpectedElement(9920);
+ addExpectedElement(9921);
+ addExpectedElement(9922);
+ addExpectedElement(9923);
+ addExpectedElement(9924);
+ addExpectedElement(9925);
+ addExpectedElement(9926);
+ addExpectedElement(9927);
+ addExpectedElement(9928);
+ addExpectedElement(9929);
+ addExpectedElement(9930);
+ addExpectedElement(9931);
+ addExpectedElement(9932);
+ addExpectedElement(9933);
+ addExpectedElement(9934);
+ addExpectedElement(9935);
+ addExpectedElement(9936);
+ addExpectedElement(9937);
+ addExpectedElement(9938);
+ addExpectedElement(9939);
+ addExpectedElement(9940);
+ addExpectedElement(9941);
+ addExpectedElement(9942);
+ addExpectedElement(9943);
+ addExpectedElement(9944);
+ addExpectedElement(9945);
+ addExpectedElement(9946);
+ addExpectedElement(9947);
+ addExpectedElement(9948);
+ }
+
+ // Java.g:20887:2: ( (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )?
+ int alt178=2;
+ int LA178_0 = input.LA(1);
+
+ if ( ((LA178_0 >= BOOLEAN_LITERAL && LA178_0 <= IDENTIFIER)||(LA178_0 >= OCTAL_INTEGER_LITERAL && LA178_0 <= OCTAL_LONG_LITERAL)||LA178_0==STRING_LITERAL||LA178_0==21||LA178_0==26||(LA178_0 >= 30 && LA178_0 <= 31)||(LA178_0 >= 34 && LA178_0 <= 35)||LA178_0==43||LA178_0==48||LA178_0==58||LA178_0==60||(LA178_0 >= 63 && LA178_0 <= 64)||LA178_0==68||LA178_0==74||LA178_0==80||LA178_0==82||(LA178_0 >= 84 && LA178_0 <= 85)||LA178_0==91||LA178_0==94||LA178_0==97||LA178_0==102||LA178_0==105||LA178_0==110) ) {
+ alt178=1;
+ }
+ switch (alt178) {
+ case 1 :
+ // Java.g:20888:3: (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ // Java.g:20888:3: (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:20889:4: a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForLoop15803);
+ a4_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__CONDITION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_5, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9949);
+ }
+
+ a5=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_ForLoop15829); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9950);
+ addExpectedElement(9951);
+ addExpectedElement(9952);
+ addExpectedElement(9953);
+ addExpectedElement(9954);
+ addExpectedElement(9955);
+ addExpectedElement(9956);
+ addExpectedElement(9957);
+ addExpectedElement(9958);
+ addExpectedElement(9959);
+ addExpectedElement(9960);
+ addExpectedElement(9961);
+ addExpectedElement(9962);
+ addExpectedElement(9963);
+ addExpectedElement(9964);
+ addExpectedElement(9965);
+ addExpectedElement(9966);
+ addExpectedElement(9967);
+ addExpectedElement(9968);
+ addExpectedElement(9969);
+ addExpectedElement(9970);
+ addExpectedElement(9971);
+ addExpectedElement(9972);
+ addExpectedElement(9973);
+ addExpectedElement(9974);
+ addExpectedElement(9975);
+ addExpectedElement(9976);
+ addExpectedElement(9977);
+ addExpectedElement(9978);
+ addExpectedElement(9979);
+ addExpectedElement(9980);
+ addExpectedElement(9981);
+ addExpectedElement(9982);
+ addExpectedElement(9983);
+ addExpectedElement(9984);
+ addExpectedElement(9985);
+ addExpectedElement(9986);
+ addExpectedElement(9987);
+ addExpectedElement(9988);
+ addExpectedElement(9989);
+ addExpectedElement(9990);
+ addExpectedElement(9991);
+ addExpectedElement(9992);
+ addExpectedElement(9993);
+ }
+
+ // Java.g:20972:2: ( ( (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ) )?
+ int alt180=2;
+ int LA180_0 = input.LA(1);
+
+ if ( ((LA180_0 >= BOOLEAN_LITERAL && LA180_0 <= IDENTIFIER)||(LA180_0 >= OCTAL_INTEGER_LITERAL && LA180_0 <= OCTAL_LONG_LITERAL)||LA180_0==STRING_LITERAL||LA180_0==21||LA180_0==26||(LA180_0 >= 30 && LA180_0 <= 31)||(LA180_0 >= 34 && LA180_0 <= 35)||LA180_0==43||LA180_0==48||LA180_0==58||LA180_0==60||(LA180_0 >= 63 && LA180_0 <= 64)||LA180_0==68||LA180_0==74||LA180_0==80||LA180_0==82||(LA180_0 >= 84 && LA180_0 <= 85)||LA180_0==91||LA180_0==94||LA180_0==97||LA180_0==102||LA180_0==105||LA180_0==110) ) {
+ alt180=1;
+ }
+ switch (alt180) {
+ case 1 :
+ // Java.g:20973:3: ( (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ {
+ // Java.g:20973:3: ( (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ // Java.g:20974:4: (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ {
+ // Java.g:20974:4: (a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:20975:5: a6_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForLoop15858);
+ a6_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__UPDATES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_7_0_0_0, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9994);
+ addExpectedElement(9995);
+ }
+
+ // Java.g:21001:4: ( (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ loop179:
+ do {
+ int alt179=2;
+ int LA179_0 = input.LA(1);
+
+ if ( (LA179_0==33) ) {
+ alt179=1;
+ }
+
+
+ switch (alt179) {
+ case 1 :
+ // Java.g:21002:5: (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:21002:5: (a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:21003:6: a7= ',' (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a7=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_statements_ForLoop15899); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_7_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a7, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(9996);
+ addExpectedElement(9997);
+ addExpectedElement(9998);
+ addExpectedElement(9999);
+ addExpectedElement(10000);
+ addExpectedElement(10001);
+ addExpectedElement(10002);
+ addExpectedElement(10003);
+ addExpectedElement(10004);
+ addExpectedElement(10005);
+ addExpectedElement(10006);
+ addExpectedElement(10007);
+ addExpectedElement(10008);
+ addExpectedElement(10009);
+ addExpectedElement(10010);
+ addExpectedElement(10011);
+ addExpectedElement(10012);
+ addExpectedElement(10013);
+ addExpectedElement(10014);
+ addExpectedElement(10015);
+ addExpectedElement(10016);
+ addExpectedElement(10017);
+ addExpectedElement(10018);
+ addExpectedElement(10019);
+ addExpectedElement(10020);
+ addExpectedElement(10021);
+ addExpectedElement(10022);
+ addExpectedElement(10023);
+ addExpectedElement(10024);
+ addExpectedElement(10025);
+ addExpectedElement(10026);
+ addExpectedElement(10027);
+ addExpectedElement(10028);
+ addExpectedElement(10029);
+ addExpectedElement(10030);
+ addExpectedElement(10031);
+ addExpectedElement(10032);
+ addExpectedElement(10033);
+ addExpectedElement(10034);
+ addExpectedElement(10035);
+ addExpectedElement(10036);
+ addExpectedElement(10037);
+ addExpectedElement(10038);
+ }
+
+ // Java.g:21059:6: (a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:21060:7: a8_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForLoop15933);
+ a8_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ if (a8_0 != null) {
+ if (a8_0 != null) {
+ Object value = a8_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__UPDATES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_7_0_0_1_0_0_1, a8_0, true);
+ copyLocalizationInfos(a8_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10039);
+ addExpectedElement(10040);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop179;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10041);
+ addExpectedElement(10042);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10043);
+ }
+
+ a9=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_ForLoop16007); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_8, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a9, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10044);
+ addExpectedElement(10045);
+ addExpectedElement(10046);
+ addExpectedElement(10047);
+ addExpectedElement(10048);
+ addExpectedElement(10049);
+ addExpectedElement(10050);
+ addExpectedElement(10051);
+ addExpectedElement(10052);
+ addExpectedElement(10053);
+ addExpectedElement(10054);
+ addExpectedElement(10055);
+ addExpectedElement(10056);
+ addExpectedElement(10057);
+ addExpectedElement(10058);
+ addExpectedElement(10059);
+ addExpectedElement(10060);
+ addExpectedElement(10061);
+ addExpectedElement(10062);
+ addExpectedElement(10063);
+ addExpectedElement(10064);
+ addExpectedElement(10065);
+ addExpectedElement(10066);
+ addExpectedElement(10067);
+ addExpectedElement(10068);
+ addExpectedElement(10069);
+ addExpectedElement(10070);
+ addExpectedElement(10071);
+ addExpectedElement(10072);
+ addExpectedElement(10073);
+ addExpectedElement(10074);
+ addExpectedElement(10075);
+ addExpectedElement(10076);
+ addExpectedElement(10077);
+ addExpectedElement(10078);
+ addExpectedElement(10079);
+ addExpectedElement(10080);
+ addExpectedElement(10081);
+ addExpectedElement(10082);
+ addExpectedElement(10083);
+ addExpectedElement(10084);
+ addExpectedElement(10085);
+ addExpectedElement(10086);
+ addExpectedElement(10087);
+ addExpectedElement(10088);
+ addExpectedElement(10089);
+ addExpectedElement(10090);
+ addExpectedElement(10091);
+ addExpectedElement(10092);
+ addExpectedElement(10093);
+ addExpectedElement(10094);
+ addExpectedElement(10095);
+ addExpectedElement(10096);
+ addExpectedElement(10097);
+ addExpectedElement(10098);
+ addExpectedElement(10099);
+ addExpectedElement(10100);
+ addExpectedElement(10101);
+ addExpectedElement(10102);
+ addExpectedElement(10103);
+ addExpectedElement(10104);
+ addExpectedElement(10105);
+ addExpectedElement(10106);
+ addExpectedElement(10107);
+ addExpectedElement(10108);
+ addExpectedElement(10109);
+ addExpectedElement(10110);
+ addExpectedElement(10111);
+ addExpectedElement(10112);
+ addExpectedElement(10113);
+ addExpectedElement(10114);
+ addExpectedElement(10115);
+ addExpectedElement(10116);
+ addExpectedElement(10117);
+ addExpectedElement(10118);
+ addExpectedElement(10119);
+ }
+
+ // Java.g:21190:2: (a10_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:21191:3: a10_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_ForLoop16025);
+ a10_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForLoop();
+ startIncompleteElement(element);
+ }
+ if (a10_0 != null) {
+ if (a10_0 != null) {
+ Object value = a10_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_LOOP__STATEMENT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_54_0_0_9, a10_0, true);
+ copyLocalizationInfos(a10_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10120);
+ addExpectedElement(10121);
+ addExpectedElement(10122);
+ addExpectedElement(10123);
+ addExpectedElement(10124);
+ addExpectedElement(10125);
+ addExpectedElement(10126);
+ addExpectedElement(10127);
+ addExpectedElement(10128);
+ addExpectedElement(10129);
+ addExpectedElement(10130);
+ addExpectedElement(10131);
+ addExpectedElement(10132);
+ addExpectedElement(10133);
+ addExpectedElement(10134);
+ addExpectedElement(10135);
+ addExpectedElement(10136);
+ addExpectedElement(10137);
+ addExpectedElement(10138);
+ addExpectedElement(10139);
+ addExpectedElement(10140);
+ addExpectedElement(10141);
+ addExpectedElement(10142);
+ addExpectedElement(10143);
+ addExpectedElement(10144);
+ addExpectedElement(10145);
+ addExpectedElement(10146);
+ addExpectedElement(10147);
+ addExpectedElement(10148);
+ addExpectedElement(10149);
+ addExpectedElement(10150);
+ addExpectedElement(10151);
+ addExpectedElement(10152);
+ addExpectedElement(10153);
+ addExpectedElement(10154);
+ addExpectedElement(10155);
+ addExpectedElement(10156);
+ addExpectedElement(10157);
+ addExpectedElement(10158);
+ addExpectedElement(10159);
+ addExpectedElement(10160);
+ addExpectedElement(10161);
+ addExpectedElement(10162);
+ addExpectedElement(10163);
+ addExpectedElement(10164);
+ addExpectedElement(10165);
+ addExpectedElement(10166);
+ addExpectedElement(10167);
+ addExpectedElement(10168);
+ addExpectedElement(10169);
+ addExpectedElement(10170);
+ addExpectedElement(10171);
+ addExpectedElement(10172);
+ addExpectedElement(10173);
+ addExpectedElement(10174);
+ addExpectedElement(10175);
+ addExpectedElement(10176);
+ addExpectedElement(10177);
+ addExpectedElement(10178);
+ addExpectedElement(10179);
+ addExpectedElement(10180);
+ addExpectedElement(10181);
+ addExpectedElement(10182);
+ addExpectedElement(10183);
+ addExpectedElement(10184);
+ addExpectedElement(10185);
+ addExpectedElement(10186);
+ addExpectedElement(10187);
+ addExpectedElement(10188);
+ addExpectedElement(10189);
+ addExpectedElement(10190);
+ addExpectedElement(10191);
+ addExpectedElement(10192);
+ addExpectedElement(10193);
+ addExpectedElement(10194);
+ addExpectedElement(10195);
+ addExpectedElement(10196);
+ addExpectedElement(10197);
+ addExpectedElement(10198);
+ addExpectedElement(10199);
+ addExpectedElement(10200);
+ addExpectedElement(10201);
+ addExpectedElement(10202);
+ addExpectedElement(10203);
+ addExpectedElement(10204);
+ addExpectedElement(10205);
+ addExpectedElement(10206);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 56, parse_org_emftext_language_java_statements_ForLoop_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_ForLoop"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_ForEachLoop"
+ // Java.g:21304:1: parse_org_emftext_language_java_statements_ForEachLoop returns [org.emftext.language.java.statements.ForEachLoop element = null] : a0= 'for' a1= '(' (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a5= ')' (a6_0= parse_org_emftext_language_java_statements_Statement ) ;
+ public final org.emftext.language.java.statements.ForEachLoop parse_org_emftext_language_java_statements_ForEachLoop() throws RecognitionException {
+ org.emftext.language.java.statements.ForEachLoop element = null;
+
+ int parse_org_emftext_language_java_statements_ForEachLoop_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ org.emftext.language.java.parameters.OrdinaryParameter a2_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a4_0 =null;
+
+ org.emftext.language.java.statements.Statement a6_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 57) ) { return element; }
+
+ // Java.g:21307:2: (a0= 'for' a1= '(' (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a5= ')' (a6_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:21308:2: a0= 'for' a1= '(' (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a5= ')' (a6_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ a0=(Token)match(input,75,FOLLOW_75_in_parse_org_emftext_language_java_statements_ForEachLoop16058); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForEachLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_55_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10207);
+ }
+
+ a1=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_ForEachLoop16072); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForEachLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_55_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10208);
+ addExpectedElement(10209);
+ addExpectedElement(10210);
+ addExpectedElement(10211);
+ addExpectedElement(10212);
+ addExpectedElement(10213);
+ addExpectedElement(10214);
+ addExpectedElement(10215);
+ addExpectedElement(10216);
+ addExpectedElement(10217);
+ addExpectedElement(10218);
+ addExpectedElement(10219);
+ addExpectedElement(10220);
+ addExpectedElement(10221);
+ addExpectedElement(10222);
+ addExpectedElement(10223);
+ addExpectedElement(10224);
+ addExpectedElement(10225);
+ addExpectedElement(10226);
+ addExpectedElement(10227);
+ addExpectedElement(10228);
+ addExpectedElement(10229);
+ addExpectedElement(10230);
+ }
+
+ // Java.g:21358:2: (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter )
+ // Java.g:21359:3: a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_parse_org_emftext_language_java_statements_ForEachLoop16090);
+ a2_0=parse_org_emftext_language_java_parameters_OrdinaryParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForEachLoop();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_EACH_LOOP__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_55_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10231);
+ }
+
+ a3=(Token)match(input,41,FOLLOW_41_in_parse_org_emftext_language_java_statements_ForEachLoop16108); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForEachLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_55_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10232);
+ addExpectedElement(10233);
+ addExpectedElement(10234);
+ addExpectedElement(10235);
+ addExpectedElement(10236);
+ addExpectedElement(10237);
+ addExpectedElement(10238);
+ addExpectedElement(10239);
+ addExpectedElement(10240);
+ addExpectedElement(10241);
+ addExpectedElement(10242);
+ addExpectedElement(10243);
+ addExpectedElement(10244);
+ addExpectedElement(10245);
+ addExpectedElement(10246);
+ addExpectedElement(10247);
+ addExpectedElement(10248);
+ addExpectedElement(10249);
+ addExpectedElement(10250);
+ addExpectedElement(10251);
+ addExpectedElement(10252);
+ addExpectedElement(10253);
+ addExpectedElement(10254);
+ addExpectedElement(10255);
+ addExpectedElement(10256);
+ addExpectedElement(10257);
+ addExpectedElement(10258);
+ addExpectedElement(10259);
+ addExpectedElement(10260);
+ addExpectedElement(10261);
+ addExpectedElement(10262);
+ addExpectedElement(10263);
+ addExpectedElement(10264);
+ addExpectedElement(10265);
+ addExpectedElement(10266);
+ addExpectedElement(10267);
+ addExpectedElement(10268);
+ addExpectedElement(10269);
+ addExpectedElement(10270);
+ addExpectedElement(10271);
+ addExpectedElement(10272);
+ addExpectedElement(10273);
+ addExpectedElement(10274);
+ }
+
+ // Java.g:21440:2: (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:21441:3: a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForEachLoop16126);
+ a4_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForEachLoop();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_EACH_LOOP__COLLECTION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_55_0_0_5, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10275);
+ }
+
+ a5=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_ForEachLoop16144); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForEachLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_55_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10276);
+ addExpectedElement(10277);
+ addExpectedElement(10278);
+ addExpectedElement(10279);
+ addExpectedElement(10280);
+ addExpectedElement(10281);
+ addExpectedElement(10282);
+ addExpectedElement(10283);
+ addExpectedElement(10284);
+ addExpectedElement(10285);
+ addExpectedElement(10286);
+ addExpectedElement(10287);
+ addExpectedElement(10288);
+ addExpectedElement(10289);
+ addExpectedElement(10290);
+ addExpectedElement(10291);
+ addExpectedElement(10292);
+ addExpectedElement(10293);
+ addExpectedElement(10294);
+ addExpectedElement(10295);
+ addExpectedElement(10296);
+ addExpectedElement(10297);
+ addExpectedElement(10298);
+ addExpectedElement(10299);
+ addExpectedElement(10300);
+ addExpectedElement(10301);
+ addExpectedElement(10302);
+ addExpectedElement(10303);
+ addExpectedElement(10304);
+ addExpectedElement(10305);
+ addExpectedElement(10306);
+ addExpectedElement(10307);
+ addExpectedElement(10308);
+ addExpectedElement(10309);
+ addExpectedElement(10310);
+ addExpectedElement(10311);
+ addExpectedElement(10312);
+ addExpectedElement(10313);
+ addExpectedElement(10314);
+ addExpectedElement(10315);
+ addExpectedElement(10316);
+ addExpectedElement(10317);
+ addExpectedElement(10318);
+ addExpectedElement(10319);
+ addExpectedElement(10320);
+ addExpectedElement(10321);
+ addExpectedElement(10322);
+ addExpectedElement(10323);
+ addExpectedElement(10324);
+ addExpectedElement(10325);
+ addExpectedElement(10326);
+ addExpectedElement(10327);
+ addExpectedElement(10328);
+ addExpectedElement(10329);
+ addExpectedElement(10330);
+ addExpectedElement(10331);
+ addExpectedElement(10332);
+ addExpectedElement(10333);
+ addExpectedElement(10334);
+ addExpectedElement(10335);
+ addExpectedElement(10336);
+ addExpectedElement(10337);
+ addExpectedElement(10338);
+ addExpectedElement(10339);
+ addExpectedElement(10340);
+ addExpectedElement(10341);
+ addExpectedElement(10342);
+ addExpectedElement(10343);
+ addExpectedElement(10344);
+ addExpectedElement(10345);
+ addExpectedElement(10346);
+ addExpectedElement(10347);
+ addExpectedElement(10348);
+ addExpectedElement(10349);
+ addExpectedElement(10350);
+ addExpectedElement(10351);
+ }
+
+ // Java.g:21555:2: (a6_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:21556:3: a6_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_ForEachLoop16162);
+ a6_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createForEachLoop();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.FOR_EACH_LOOP__STATEMENT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_55_0_0_7, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10352);
+ addExpectedElement(10353);
+ addExpectedElement(10354);
+ addExpectedElement(10355);
+ addExpectedElement(10356);
+ addExpectedElement(10357);
+ addExpectedElement(10358);
+ addExpectedElement(10359);
+ addExpectedElement(10360);
+ addExpectedElement(10361);
+ addExpectedElement(10362);
+ addExpectedElement(10363);
+ addExpectedElement(10364);
+ addExpectedElement(10365);
+ addExpectedElement(10366);
+ addExpectedElement(10367);
+ addExpectedElement(10368);
+ addExpectedElement(10369);
+ addExpectedElement(10370);
+ addExpectedElement(10371);
+ addExpectedElement(10372);
+ addExpectedElement(10373);
+ addExpectedElement(10374);
+ addExpectedElement(10375);
+ addExpectedElement(10376);
+ addExpectedElement(10377);
+ addExpectedElement(10378);
+ addExpectedElement(10379);
+ addExpectedElement(10380);
+ addExpectedElement(10381);
+ addExpectedElement(10382);
+ addExpectedElement(10383);
+ addExpectedElement(10384);
+ addExpectedElement(10385);
+ addExpectedElement(10386);
+ addExpectedElement(10387);
+ addExpectedElement(10388);
+ addExpectedElement(10389);
+ addExpectedElement(10390);
+ addExpectedElement(10391);
+ addExpectedElement(10392);
+ addExpectedElement(10393);
+ addExpectedElement(10394);
+ addExpectedElement(10395);
+ addExpectedElement(10396);
+ addExpectedElement(10397);
+ addExpectedElement(10398);
+ addExpectedElement(10399);
+ addExpectedElement(10400);
+ addExpectedElement(10401);
+ addExpectedElement(10402);
+ addExpectedElement(10403);
+ addExpectedElement(10404);
+ addExpectedElement(10405);
+ addExpectedElement(10406);
+ addExpectedElement(10407);
+ addExpectedElement(10408);
+ addExpectedElement(10409);
+ addExpectedElement(10410);
+ addExpectedElement(10411);
+ addExpectedElement(10412);
+ addExpectedElement(10413);
+ addExpectedElement(10414);
+ addExpectedElement(10415);
+ addExpectedElement(10416);
+ addExpectedElement(10417);
+ addExpectedElement(10418);
+ addExpectedElement(10419);
+ addExpectedElement(10420);
+ addExpectedElement(10421);
+ addExpectedElement(10422);
+ addExpectedElement(10423);
+ addExpectedElement(10424);
+ addExpectedElement(10425);
+ addExpectedElement(10426);
+ addExpectedElement(10427);
+ addExpectedElement(10428);
+ addExpectedElement(10429);
+ addExpectedElement(10430);
+ addExpectedElement(10431);
+ addExpectedElement(10432);
+ addExpectedElement(10433);
+ addExpectedElement(10434);
+ addExpectedElement(10435);
+ addExpectedElement(10436);
+ addExpectedElement(10437);
+ addExpectedElement(10438);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 57, parse_org_emftext_language_java_statements_ForEachLoop_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_ForEachLoop"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_WhileLoop"
+ // Java.g:21669:1: parse_org_emftext_language_java_statements_WhileLoop returns [org.emftext.language.java.statements.WhileLoop element = null] : (a0= 'while' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' (a4_0= parse_org_emftext_language_java_statements_Statement ) |c0= parse_org_emftext_language_java_statements_DoWhileLoop );
+ public final org.emftext.language.java.statements.WhileLoop parse_org_emftext_language_java_statements_WhileLoop() throws RecognitionException {
+ org.emftext.language.java.statements.WhileLoop element = null;
+
+ int parse_org_emftext_language_java_statements_WhileLoop_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ org.emftext.language.java.expressions.AssignmentExpression a2_0 =null;
+
+ org.emftext.language.java.statements.Statement a4_0 =null;
+
+ org.emftext.language.java.statements.DoWhileLoop c0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 58) ) { return element; }
+
+ // Java.g:21672:2: (a0= 'while' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' (a4_0= parse_org_emftext_language_java_statements_Statement ) |c0= parse_org_emftext_language_java_statements_DoWhileLoop )
+ int alt181=2;
+ int LA181_0 = input.LA(1);
+
+ if ( (LA181_0==104) ) {
+ alt181=1;
+ }
+ else if ( (LA181_0==67) ) {
+ alt181=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 181, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt181) {
+ case 1 :
+ // Java.g:21673:2: a0= 'while' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' (a4_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ a0=(Token)match(input,104,FOLLOW_104_in_parse_org_emftext_language_java_statements_WhileLoop16195); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_56_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10439);
+ }
+
+ a1=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_WhileLoop16209); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_56_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10440);
+ addExpectedElement(10441);
+ addExpectedElement(10442);
+ addExpectedElement(10443);
+ addExpectedElement(10444);
+ addExpectedElement(10445);
+ addExpectedElement(10446);
+ addExpectedElement(10447);
+ addExpectedElement(10448);
+ addExpectedElement(10449);
+ addExpectedElement(10450);
+ addExpectedElement(10451);
+ addExpectedElement(10452);
+ addExpectedElement(10453);
+ addExpectedElement(10454);
+ addExpectedElement(10455);
+ addExpectedElement(10456);
+ addExpectedElement(10457);
+ addExpectedElement(10458);
+ addExpectedElement(10459);
+ addExpectedElement(10460);
+ addExpectedElement(10461);
+ addExpectedElement(10462);
+ addExpectedElement(10463);
+ addExpectedElement(10464);
+ addExpectedElement(10465);
+ addExpectedElement(10466);
+ addExpectedElement(10467);
+ addExpectedElement(10468);
+ addExpectedElement(10469);
+ addExpectedElement(10470);
+ addExpectedElement(10471);
+ addExpectedElement(10472);
+ addExpectedElement(10473);
+ addExpectedElement(10474);
+ addExpectedElement(10475);
+ addExpectedElement(10476);
+ addExpectedElement(10477);
+ addExpectedElement(10478);
+ addExpectedElement(10479);
+ addExpectedElement(10480);
+ addExpectedElement(10481);
+ addExpectedElement(10482);
+ }
+
+ // Java.g:21743:2: (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:21744:3: a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_WhileLoop16227);
+ a2_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createWhileLoop();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.WHILE_LOOP__CONDITION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_56_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10483);
+ }
+
+ a3=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_WhileLoop16245); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_56_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10484);
+ addExpectedElement(10485);
+ addExpectedElement(10486);
+ addExpectedElement(10487);
+ addExpectedElement(10488);
+ addExpectedElement(10489);
+ addExpectedElement(10490);
+ addExpectedElement(10491);
+ addExpectedElement(10492);
+ addExpectedElement(10493);
+ addExpectedElement(10494);
+ addExpectedElement(10495);
+ addExpectedElement(10496);
+ addExpectedElement(10497);
+ addExpectedElement(10498);
+ addExpectedElement(10499);
+ addExpectedElement(10500);
+ addExpectedElement(10501);
+ addExpectedElement(10502);
+ addExpectedElement(10503);
+ addExpectedElement(10504);
+ addExpectedElement(10505);
+ addExpectedElement(10506);
+ addExpectedElement(10507);
+ addExpectedElement(10508);
+ addExpectedElement(10509);
+ addExpectedElement(10510);
+ addExpectedElement(10511);
+ addExpectedElement(10512);
+ addExpectedElement(10513);
+ addExpectedElement(10514);
+ addExpectedElement(10515);
+ addExpectedElement(10516);
+ addExpectedElement(10517);
+ addExpectedElement(10518);
+ addExpectedElement(10519);
+ addExpectedElement(10520);
+ addExpectedElement(10521);
+ addExpectedElement(10522);
+ addExpectedElement(10523);
+ addExpectedElement(10524);
+ addExpectedElement(10525);
+ addExpectedElement(10526);
+ addExpectedElement(10527);
+ addExpectedElement(10528);
+ addExpectedElement(10529);
+ addExpectedElement(10530);
+ addExpectedElement(10531);
+ addExpectedElement(10532);
+ addExpectedElement(10533);
+ addExpectedElement(10534);
+ addExpectedElement(10535);
+ addExpectedElement(10536);
+ addExpectedElement(10537);
+ addExpectedElement(10538);
+ addExpectedElement(10539);
+ addExpectedElement(10540);
+ addExpectedElement(10541);
+ addExpectedElement(10542);
+ addExpectedElement(10543);
+ addExpectedElement(10544);
+ addExpectedElement(10545);
+ addExpectedElement(10546);
+ addExpectedElement(10547);
+ addExpectedElement(10548);
+ addExpectedElement(10549);
+ addExpectedElement(10550);
+ addExpectedElement(10551);
+ addExpectedElement(10552);
+ addExpectedElement(10553);
+ addExpectedElement(10554);
+ addExpectedElement(10555);
+ addExpectedElement(10556);
+ addExpectedElement(10557);
+ addExpectedElement(10558);
+ addExpectedElement(10559);
+ }
+
+ // Java.g:21858:2: (a4_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:21859:3: a4_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_WhileLoop16263);
+ a4_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createWhileLoop();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.WHILE_LOOP__STATEMENT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_56_0_0_5, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10560);
+ addExpectedElement(10561);
+ addExpectedElement(10562);
+ addExpectedElement(10563);
+ addExpectedElement(10564);
+ addExpectedElement(10565);
+ addExpectedElement(10566);
+ addExpectedElement(10567);
+ addExpectedElement(10568);
+ addExpectedElement(10569);
+ addExpectedElement(10570);
+ addExpectedElement(10571);
+ addExpectedElement(10572);
+ addExpectedElement(10573);
+ addExpectedElement(10574);
+ addExpectedElement(10575);
+ addExpectedElement(10576);
+ addExpectedElement(10577);
+ addExpectedElement(10578);
+ addExpectedElement(10579);
+ addExpectedElement(10580);
+ addExpectedElement(10581);
+ addExpectedElement(10582);
+ addExpectedElement(10583);
+ addExpectedElement(10584);
+ addExpectedElement(10585);
+ addExpectedElement(10586);
+ addExpectedElement(10587);
+ addExpectedElement(10588);
+ addExpectedElement(10589);
+ addExpectedElement(10590);
+ addExpectedElement(10591);
+ addExpectedElement(10592);
+ addExpectedElement(10593);
+ addExpectedElement(10594);
+ addExpectedElement(10595);
+ addExpectedElement(10596);
+ addExpectedElement(10597);
+ addExpectedElement(10598);
+ addExpectedElement(10599);
+ addExpectedElement(10600);
+ addExpectedElement(10601);
+ addExpectedElement(10602);
+ addExpectedElement(10603);
+ addExpectedElement(10604);
+ addExpectedElement(10605);
+ addExpectedElement(10606);
+ addExpectedElement(10607);
+ addExpectedElement(10608);
+ addExpectedElement(10609);
+ addExpectedElement(10610);
+ addExpectedElement(10611);
+ addExpectedElement(10612);
+ addExpectedElement(10613);
+ addExpectedElement(10614);
+ addExpectedElement(10615);
+ addExpectedElement(10616);
+ addExpectedElement(10617);
+ addExpectedElement(10618);
+ addExpectedElement(10619);
+ addExpectedElement(10620);
+ addExpectedElement(10621);
+ addExpectedElement(10622);
+ addExpectedElement(10623);
+ addExpectedElement(10624);
+ addExpectedElement(10625);
+ addExpectedElement(10626);
+ addExpectedElement(10627);
+ addExpectedElement(10628);
+ addExpectedElement(10629);
+ addExpectedElement(10630);
+ addExpectedElement(10631);
+ addExpectedElement(10632);
+ addExpectedElement(10633);
+ addExpectedElement(10634);
+ addExpectedElement(10635);
+ addExpectedElement(10636);
+ addExpectedElement(10637);
+ addExpectedElement(10638);
+ addExpectedElement(10639);
+ addExpectedElement(10640);
+ addExpectedElement(10641);
+ addExpectedElement(10642);
+ addExpectedElement(10643);
+ addExpectedElement(10644);
+ addExpectedElement(10645);
+ addExpectedElement(10646);
+ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:21972:2: c0= parse_org_emftext_language_java_statements_DoWhileLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_DoWhileLoop_in_parse_org_emftext_language_java_statements_WhileLoop16286);
+ c0=parse_org_emftext_language_java_statements_DoWhileLoop();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 58, parse_org_emftext_language_java_statements_WhileLoop_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_WhileLoop"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_DoWhileLoop"
+ // Java.g:21976:1: parse_org_emftext_language_java_statements_DoWhileLoop returns [org.emftext.language.java.statements.DoWhileLoop element = null] : a0= 'do' (a1_0= parse_org_emftext_language_java_statements_Statement ) a2= 'while' a3= '(' (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a5= ')' a6= ';' ;
+ public final org.emftext.language.java.statements.DoWhileLoop parse_org_emftext_language_java_statements_DoWhileLoop() throws RecognitionException {
+ org.emftext.language.java.statements.DoWhileLoop element = null;
+
+ int parse_org_emftext_language_java_statements_DoWhileLoop_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a3=null;
+ Token a5=null;
+ Token a6=null;
+ org.emftext.language.java.statements.Statement a1_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a4_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 59) ) { return element; }
+
+ // Java.g:21979:2: (a0= 'do' (a1_0= parse_org_emftext_language_java_statements_Statement ) a2= 'while' a3= '(' (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a5= ')' a6= ';' )
+ // Java.g:21980:2: a0= 'do' (a1_0= parse_org_emftext_language_java_statements_Statement ) a2= 'while' a3= '(' (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a5= ')' a6= ';'
+ {
+ a0=(Token)match(input,67,FOLLOW_67_in_parse_org_emftext_language_java_statements_DoWhileLoop16311); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDoWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_57_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10647);
+ addExpectedElement(10648);
+ addExpectedElement(10649);
+ addExpectedElement(10650);
+ addExpectedElement(10651);
+ addExpectedElement(10652);
+ addExpectedElement(10653);
+ addExpectedElement(10654);
+ addExpectedElement(10655);
+ addExpectedElement(10656);
+ addExpectedElement(10657);
+ addExpectedElement(10658);
+ addExpectedElement(10659);
+ addExpectedElement(10660);
+ addExpectedElement(10661);
+ addExpectedElement(10662);
+ addExpectedElement(10663);
+ addExpectedElement(10664);
+ addExpectedElement(10665);
+ addExpectedElement(10666);
+ addExpectedElement(10667);
+ addExpectedElement(10668);
+ addExpectedElement(10669);
+ addExpectedElement(10670);
+ addExpectedElement(10671);
+ addExpectedElement(10672);
+ addExpectedElement(10673);
+ addExpectedElement(10674);
+ addExpectedElement(10675);
+ addExpectedElement(10676);
+ addExpectedElement(10677);
+ addExpectedElement(10678);
+ addExpectedElement(10679);
+ addExpectedElement(10680);
+ addExpectedElement(10681);
+ addExpectedElement(10682);
+ addExpectedElement(10683);
+ addExpectedElement(10684);
+ addExpectedElement(10685);
+ addExpectedElement(10686);
+ addExpectedElement(10687);
+ addExpectedElement(10688);
+ addExpectedElement(10689);
+ addExpectedElement(10690);
+ addExpectedElement(10691);
+ addExpectedElement(10692);
+ addExpectedElement(10693);
+ addExpectedElement(10694);
+ addExpectedElement(10695);
+ addExpectedElement(10696);
+ addExpectedElement(10697);
+ addExpectedElement(10698);
+ addExpectedElement(10699);
+ addExpectedElement(10700);
+ addExpectedElement(10701);
+ addExpectedElement(10702);
+ addExpectedElement(10703);
+ addExpectedElement(10704);
+ addExpectedElement(10705);
+ addExpectedElement(10706);
+ addExpectedElement(10707);
+ addExpectedElement(10708);
+ addExpectedElement(10709);
+ addExpectedElement(10710);
+ addExpectedElement(10711);
+ addExpectedElement(10712);
+ addExpectedElement(10713);
+ addExpectedElement(10714);
+ addExpectedElement(10715);
+ addExpectedElement(10716);
+ addExpectedElement(10717);
+ addExpectedElement(10718);
+ addExpectedElement(10719);
+ addExpectedElement(10720);
+ addExpectedElement(10721);
+ addExpectedElement(10722);
+ }
+
+ // Java.g:22069:2: (a1_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:22070:3: a1_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_DoWhileLoop16329);
+ a1_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDoWhileLoop();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.DO_WHILE_LOOP__STATEMENT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_57_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10723);
+ }
+
+ a2=(Token)match(input,104,FOLLOW_104_in_parse_org_emftext_language_java_statements_DoWhileLoop16347); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDoWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_57_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10724);
+ }
+
+ a3=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_DoWhileLoop16361); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDoWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_57_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10725);
+ addExpectedElement(10726);
+ addExpectedElement(10727);
+ addExpectedElement(10728);
+ addExpectedElement(10729);
+ addExpectedElement(10730);
+ addExpectedElement(10731);
+ addExpectedElement(10732);
+ addExpectedElement(10733);
+ addExpectedElement(10734);
+ addExpectedElement(10735);
+ addExpectedElement(10736);
+ addExpectedElement(10737);
+ addExpectedElement(10738);
+ addExpectedElement(10739);
+ addExpectedElement(10740);
+ addExpectedElement(10741);
+ addExpectedElement(10742);
+ addExpectedElement(10743);
+ addExpectedElement(10744);
+ addExpectedElement(10745);
+ addExpectedElement(10746);
+ addExpectedElement(10747);
+ addExpectedElement(10748);
+ addExpectedElement(10749);
+ addExpectedElement(10750);
+ addExpectedElement(10751);
+ addExpectedElement(10752);
+ addExpectedElement(10753);
+ addExpectedElement(10754);
+ addExpectedElement(10755);
+ addExpectedElement(10756);
+ addExpectedElement(10757);
+ addExpectedElement(10758);
+ addExpectedElement(10759);
+ addExpectedElement(10760);
+ addExpectedElement(10761);
+ addExpectedElement(10762);
+ addExpectedElement(10763);
+ addExpectedElement(10764);
+ addExpectedElement(10765);
+ addExpectedElement(10766);
+ addExpectedElement(10767);
+ }
+
+ // Java.g:22165:2: (a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:22166:3: a4_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_DoWhileLoop16379);
+ a4_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDoWhileLoop();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.DO_WHILE_LOOP__CONDITION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_57_0_0_5, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10768);
+ }
+
+ a5=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_DoWhileLoop16397); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDoWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_57_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10769);
+ }
+
+ a6=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_DoWhileLoop16411); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDoWhileLoop();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_57_0_0_7, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10770);
+ addExpectedElement(10771);
+ addExpectedElement(10772);
+ addExpectedElement(10773);
+ addExpectedElement(10774);
+ addExpectedElement(10775);
+ addExpectedElement(10776);
+ addExpectedElement(10777);
+ addExpectedElement(10778);
+ addExpectedElement(10779);
+ addExpectedElement(10780);
+ addExpectedElement(10781);
+ addExpectedElement(10782);
+ addExpectedElement(10783);
+ addExpectedElement(10784);
+ addExpectedElement(10785);
+ addExpectedElement(10786);
+ addExpectedElement(10787);
+ addExpectedElement(10788);
+ addExpectedElement(10789);
+ addExpectedElement(10790);
+ addExpectedElement(10791);
+ addExpectedElement(10792);
+ addExpectedElement(10793);
+ addExpectedElement(10794);
+ addExpectedElement(10795);
+ addExpectedElement(10796);
+ addExpectedElement(10797);
+ addExpectedElement(10798);
+ addExpectedElement(10799);
+ addExpectedElement(10800);
+ addExpectedElement(10801);
+ addExpectedElement(10802);
+ addExpectedElement(10803);
+ addExpectedElement(10804);
+ addExpectedElement(10805);
+ addExpectedElement(10806);
+ addExpectedElement(10807);
+ addExpectedElement(10808);
+ addExpectedElement(10809);
+ addExpectedElement(10810);
+ addExpectedElement(10811);
+ addExpectedElement(10812);
+ addExpectedElement(10813);
+ addExpectedElement(10814);
+ addExpectedElement(10815);
+ addExpectedElement(10816);
+ addExpectedElement(10817);
+ addExpectedElement(10818);
+ addExpectedElement(10819);
+ addExpectedElement(10820);
+ addExpectedElement(10821);
+ addExpectedElement(10822);
+ addExpectedElement(10823);
+ addExpectedElement(10824);
+ addExpectedElement(10825);
+ addExpectedElement(10826);
+ addExpectedElement(10827);
+ addExpectedElement(10828);
+ addExpectedElement(10829);
+ addExpectedElement(10830);
+ addExpectedElement(10831);
+ addExpectedElement(10832);
+ addExpectedElement(10833);
+ addExpectedElement(10834);
+ addExpectedElement(10835);
+ addExpectedElement(10836);
+ addExpectedElement(10837);
+ addExpectedElement(10838);
+ addExpectedElement(10839);
+ addExpectedElement(10840);
+ addExpectedElement(10841);
+ addExpectedElement(10842);
+ addExpectedElement(10843);
+ addExpectedElement(10844);
+ addExpectedElement(10845);
+ addExpectedElement(10846);
+ addExpectedElement(10847);
+ addExpectedElement(10848);
+ addExpectedElement(10849);
+ addExpectedElement(10850);
+ addExpectedElement(10851);
+ addExpectedElement(10852);
+ addExpectedElement(10853);
+ addExpectedElement(10854);
+ addExpectedElement(10855);
+ addExpectedElement(10856);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 59, parse_org_emftext_language_java_statements_DoWhileLoop_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_DoWhileLoop"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_EmptyStatement"
+ // Java.g:22307:1: parse_org_emftext_language_java_statements_EmptyStatement returns [org.emftext.language.java.statements.EmptyStatement element = null] : a0= ';' ;
+ public final org.emftext.language.java.statements.EmptyStatement parse_org_emftext_language_java_statements_EmptyStatement() throws RecognitionException {
+ org.emftext.language.java.statements.EmptyStatement element = null;
+
+ int parse_org_emftext_language_java_statements_EmptyStatement_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 60) ) { return element; }
+
+ // Java.g:22310:2: (a0= ';' )
+ // Java.g:22311:2: a0= ';'
+ {
+ a0=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_EmptyStatement16440); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createEmptyStatement();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_58_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10857);
+ addExpectedElement(10858);
+ addExpectedElement(10859);
+ addExpectedElement(10860);
+ addExpectedElement(10861);
+ addExpectedElement(10862);
+ addExpectedElement(10863);
+ addExpectedElement(10864);
+ addExpectedElement(10865);
+ addExpectedElement(10866);
+ addExpectedElement(10867);
+ addExpectedElement(10868);
+ addExpectedElement(10869);
+ addExpectedElement(10870);
+ addExpectedElement(10871);
+ addExpectedElement(10872);
+ addExpectedElement(10873);
+ addExpectedElement(10874);
+ addExpectedElement(10875);
+ addExpectedElement(10876);
+ addExpectedElement(10877);
+ addExpectedElement(10878);
+ addExpectedElement(10879);
+ addExpectedElement(10880);
+ addExpectedElement(10881);
+ addExpectedElement(10882);
+ addExpectedElement(10883);
+ addExpectedElement(10884);
+ addExpectedElement(10885);
+ addExpectedElement(10886);
+ addExpectedElement(10887);
+ addExpectedElement(10888);
+ addExpectedElement(10889);
+ addExpectedElement(10890);
+ addExpectedElement(10891);
+ addExpectedElement(10892);
+ addExpectedElement(10893);
+ addExpectedElement(10894);
+ addExpectedElement(10895);
+ addExpectedElement(10896);
+ addExpectedElement(10897);
+ addExpectedElement(10898);
+ addExpectedElement(10899);
+ addExpectedElement(10900);
+ addExpectedElement(10901);
+ addExpectedElement(10902);
+ addExpectedElement(10903);
+ addExpectedElement(10904);
+ addExpectedElement(10905);
+ addExpectedElement(10906);
+ addExpectedElement(10907);
+ addExpectedElement(10908);
+ addExpectedElement(10909);
+ addExpectedElement(10910);
+ addExpectedElement(10911);
+ addExpectedElement(10912);
+ addExpectedElement(10913);
+ addExpectedElement(10914);
+ addExpectedElement(10915);
+ addExpectedElement(10916);
+ addExpectedElement(10917);
+ addExpectedElement(10918);
+ addExpectedElement(10919);
+ addExpectedElement(10920);
+ addExpectedElement(10921);
+ addExpectedElement(10922);
+ addExpectedElement(10923);
+ addExpectedElement(10924);
+ addExpectedElement(10925);
+ addExpectedElement(10926);
+ addExpectedElement(10927);
+ addExpectedElement(10928);
+ addExpectedElement(10929);
+ addExpectedElement(10930);
+ addExpectedElement(10931);
+ addExpectedElement(10932);
+ addExpectedElement(10933);
+ addExpectedElement(10934);
+ addExpectedElement(10935);
+ addExpectedElement(10936);
+ addExpectedElement(10937);
+ addExpectedElement(10938);
+ addExpectedElement(10939);
+ addExpectedElement(10940);
+ addExpectedElement(10941);
+ addExpectedElement(10942);
+ addExpectedElement(10943);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 60, parse_org_emftext_language_java_statements_EmptyStatement_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_EmptyStatement"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_SynchronizedBlock"
+ // Java.g:22413:1: parse_org_emftext_language_java_statements_SynchronizedBlock returns [org.emftext.language.java.statements.SynchronizedBlock element = null] : a0= 'synchronized' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )* a6= '}' ;
+ public final org.emftext.language.java.statements.SynchronizedBlock parse_org_emftext_language_java_statements_SynchronizedBlock() throws RecognitionException {
+ org.emftext.language.java.statements.SynchronizedBlock element = null;
+
+ int parse_org_emftext_language_java_statements_SynchronizedBlock_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a4=null;
+ Token a6=null;
+ org.emftext.language.java.expressions.AssignmentExpression a2_0 =null;
+
+ org.emftext.language.java.statements.Statement a5_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 61) ) { return element; }
+
+ // Java.g:22416:2: (a0= 'synchronized' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )* a6= '}' )
+ // Java.g:22417:2: a0= 'synchronized' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )* a6= '}'
+ {
+ a0=(Token)match(input,96,FOLLOW_96_in_parse_org_emftext_language_java_statements_SynchronizedBlock16469); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_59_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10944);
+ }
+
+ a1=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_SynchronizedBlock16483); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_59_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10945);
+ addExpectedElement(10946);
+ addExpectedElement(10947);
+ addExpectedElement(10948);
+ addExpectedElement(10949);
+ addExpectedElement(10950);
+ addExpectedElement(10951);
+ addExpectedElement(10952);
+ addExpectedElement(10953);
+ addExpectedElement(10954);
+ addExpectedElement(10955);
+ addExpectedElement(10956);
+ addExpectedElement(10957);
+ addExpectedElement(10958);
+ addExpectedElement(10959);
+ addExpectedElement(10960);
+ addExpectedElement(10961);
+ addExpectedElement(10962);
+ addExpectedElement(10963);
+ addExpectedElement(10964);
+ addExpectedElement(10965);
+ addExpectedElement(10966);
+ addExpectedElement(10967);
+ addExpectedElement(10968);
+ addExpectedElement(10969);
+ addExpectedElement(10970);
+ addExpectedElement(10971);
+ addExpectedElement(10972);
+ addExpectedElement(10973);
+ addExpectedElement(10974);
+ addExpectedElement(10975);
+ addExpectedElement(10976);
+ addExpectedElement(10977);
+ addExpectedElement(10978);
+ addExpectedElement(10979);
+ addExpectedElement(10980);
+ addExpectedElement(10981);
+ addExpectedElement(10982);
+ addExpectedElement(10983);
+ addExpectedElement(10984);
+ addExpectedElement(10985);
+ addExpectedElement(10986);
+ addExpectedElement(10987);
+ }
+
+ // Java.g:22487:2: (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:22488:3: a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_SynchronizedBlock16501);
+ a2_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.SYNCHRONIZED_BLOCK__LOCK_PROVIDER), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_59_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10988);
+ }
+
+ a3=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_SynchronizedBlock16519); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_59_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10989);
+ }
+
+ a4=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_statements_SynchronizedBlock16533); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_59_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(10990);
+ addExpectedElement(10991);
+ addExpectedElement(10992);
+ addExpectedElement(10993);
+ addExpectedElement(10994);
+ addExpectedElement(10995);
+ addExpectedElement(10996);
+ addExpectedElement(10997);
+ addExpectedElement(10998);
+ addExpectedElement(10999);
+ addExpectedElement(11000);
+ addExpectedElement(11001);
+ addExpectedElement(11002);
+ addExpectedElement(11003);
+ addExpectedElement(11004);
+ addExpectedElement(11005);
+ addExpectedElement(11006);
+ addExpectedElement(11007);
+ addExpectedElement(11008);
+ addExpectedElement(11009);
+ addExpectedElement(11010);
+ addExpectedElement(11011);
+ addExpectedElement(11012);
+ addExpectedElement(11013);
+ addExpectedElement(11014);
+ addExpectedElement(11015);
+ addExpectedElement(11016);
+ addExpectedElement(11017);
+ addExpectedElement(11018);
+ addExpectedElement(11019);
+ addExpectedElement(11020);
+ addExpectedElement(11021);
+ addExpectedElement(11022);
+ addExpectedElement(11023);
+ addExpectedElement(11024);
+ addExpectedElement(11025);
+ addExpectedElement(11026);
+ addExpectedElement(11027);
+ addExpectedElement(11028);
+ addExpectedElement(11029);
+ addExpectedElement(11030);
+ addExpectedElement(11031);
+ addExpectedElement(11032);
+ addExpectedElement(11033);
+ addExpectedElement(11034);
+ addExpectedElement(11035);
+ addExpectedElement(11036);
+ addExpectedElement(11037);
+ addExpectedElement(11038);
+ addExpectedElement(11039);
+ addExpectedElement(11040);
+ addExpectedElement(11041);
+ addExpectedElement(11042);
+ addExpectedElement(11043);
+ addExpectedElement(11044);
+ addExpectedElement(11045);
+ addExpectedElement(11046);
+ addExpectedElement(11047);
+ addExpectedElement(11048);
+ addExpectedElement(11049);
+ addExpectedElement(11050);
+ addExpectedElement(11051);
+ addExpectedElement(11052);
+ addExpectedElement(11053);
+ addExpectedElement(11054);
+ addExpectedElement(11055);
+ addExpectedElement(11056);
+ addExpectedElement(11057);
+ addExpectedElement(11058);
+ addExpectedElement(11059);
+ addExpectedElement(11060);
+ addExpectedElement(11061);
+ addExpectedElement(11062);
+ addExpectedElement(11063);
+ addExpectedElement(11064);
+ addExpectedElement(11065);
+ addExpectedElement(11066);
+ }
+
+ // Java.g:22617:2: ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop182:
+ do {
+ int alt182=2;
+ int LA182_0 = input.LA(1);
+
+ if ( ((LA182_0 >= BOOLEAN_LITERAL && LA182_0 <= IDENTIFIER)||(LA182_0 >= OCTAL_INTEGER_LITERAL && LA182_0 <= OCTAL_LONG_LITERAL)||LA182_0==STRING_LITERAL||LA182_0==21||LA182_0==26||(LA182_0 >= 30 && LA182_0 <= 31)||(LA182_0 >= 34 && LA182_0 <= 35)||(LA182_0 >= 42 && LA182_0 <= 43)||LA182_0==48||(LA182_0 >= 56 && LA182_0 <= 60)||(LA182_0 >= 63 && LA182_0 <= 65)||(LA182_0 >= 67 && LA182_0 <= 68)||LA182_0==70||LA182_0==72||(LA182_0 >= 74 && LA182_0 <= 76)||(LA182_0 >= 80 && LA182_0 <= 85)||(LA182_0 >= 87 && LA182_0 <= 98)||(LA182_0 >= 100 && LA182_0 <= 105)||LA182_0==110) ) {
+ alt182=1;
+ }
+
+
+ switch (alt182) {
+ case 1 :
+ // Java.g:22618:3: ( (a5_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:22618:3: ( (a5_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:22619:4: (a5_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:22619:4: (a5_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:22620:5: a5_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_SynchronizedBlock16562);
+ a5_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.SYNCHRONIZED_BLOCK__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_59_0_0_7_0_0_1, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11067);
+ addExpectedElement(11068);
+ addExpectedElement(11069);
+ addExpectedElement(11070);
+ addExpectedElement(11071);
+ addExpectedElement(11072);
+ addExpectedElement(11073);
+ addExpectedElement(11074);
+ addExpectedElement(11075);
+ addExpectedElement(11076);
+ addExpectedElement(11077);
+ addExpectedElement(11078);
+ addExpectedElement(11079);
+ addExpectedElement(11080);
+ addExpectedElement(11081);
+ addExpectedElement(11082);
+ addExpectedElement(11083);
+ addExpectedElement(11084);
+ addExpectedElement(11085);
+ addExpectedElement(11086);
+ addExpectedElement(11087);
+ addExpectedElement(11088);
+ addExpectedElement(11089);
+ addExpectedElement(11090);
+ addExpectedElement(11091);
+ addExpectedElement(11092);
+ addExpectedElement(11093);
+ addExpectedElement(11094);
+ addExpectedElement(11095);
+ addExpectedElement(11096);
+ addExpectedElement(11097);
+ addExpectedElement(11098);
+ addExpectedElement(11099);
+ addExpectedElement(11100);
+ addExpectedElement(11101);
+ addExpectedElement(11102);
+ addExpectedElement(11103);
+ addExpectedElement(11104);
+ addExpectedElement(11105);
+ addExpectedElement(11106);
+ addExpectedElement(11107);
+ addExpectedElement(11108);
+ addExpectedElement(11109);
+ addExpectedElement(11110);
+ addExpectedElement(11111);
+ addExpectedElement(11112);
+ addExpectedElement(11113);
+ addExpectedElement(11114);
+ addExpectedElement(11115);
+ addExpectedElement(11116);
+ addExpectedElement(11117);
+ addExpectedElement(11118);
+ addExpectedElement(11119);
+ addExpectedElement(11120);
+ addExpectedElement(11121);
+ addExpectedElement(11122);
+ addExpectedElement(11123);
+ addExpectedElement(11124);
+ addExpectedElement(11125);
+ addExpectedElement(11126);
+ addExpectedElement(11127);
+ addExpectedElement(11128);
+ addExpectedElement(11129);
+ addExpectedElement(11130);
+ addExpectedElement(11131);
+ addExpectedElement(11132);
+ addExpectedElement(11133);
+ addExpectedElement(11134);
+ addExpectedElement(11135);
+ addExpectedElement(11136);
+ addExpectedElement(11137);
+ addExpectedElement(11138);
+ addExpectedElement(11139);
+ addExpectedElement(11140);
+ addExpectedElement(11141);
+ addExpectedElement(11142);
+ addExpectedElement(11143);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop182;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11144);
+ addExpectedElement(11145);
+ addExpectedElement(11146);
+ addExpectedElement(11147);
+ addExpectedElement(11148);
+ addExpectedElement(11149);
+ addExpectedElement(11150);
+ addExpectedElement(11151);
+ addExpectedElement(11152);
+ addExpectedElement(11153);
+ addExpectedElement(11154);
+ addExpectedElement(11155);
+ addExpectedElement(11156);
+ addExpectedElement(11157);
+ addExpectedElement(11158);
+ addExpectedElement(11159);
+ addExpectedElement(11160);
+ addExpectedElement(11161);
+ addExpectedElement(11162);
+ addExpectedElement(11163);
+ addExpectedElement(11164);
+ addExpectedElement(11165);
+ addExpectedElement(11166);
+ addExpectedElement(11167);
+ addExpectedElement(11168);
+ addExpectedElement(11169);
+ addExpectedElement(11170);
+ addExpectedElement(11171);
+ addExpectedElement(11172);
+ addExpectedElement(11173);
+ addExpectedElement(11174);
+ addExpectedElement(11175);
+ addExpectedElement(11176);
+ addExpectedElement(11177);
+ addExpectedElement(11178);
+ addExpectedElement(11179);
+ addExpectedElement(11180);
+ addExpectedElement(11181);
+ addExpectedElement(11182);
+ addExpectedElement(11183);
+ addExpectedElement(11184);
+ addExpectedElement(11185);
+ addExpectedElement(11186);
+ addExpectedElement(11187);
+ addExpectedElement(11188);
+ addExpectedElement(11189);
+ addExpectedElement(11190);
+ addExpectedElement(11191);
+ addExpectedElement(11192);
+ addExpectedElement(11193);
+ addExpectedElement(11194);
+ addExpectedElement(11195);
+ addExpectedElement(11196);
+ addExpectedElement(11197);
+ addExpectedElement(11198);
+ addExpectedElement(11199);
+ addExpectedElement(11200);
+ addExpectedElement(11201);
+ addExpectedElement(11202);
+ addExpectedElement(11203);
+ addExpectedElement(11204);
+ addExpectedElement(11205);
+ addExpectedElement(11206);
+ addExpectedElement(11207);
+ addExpectedElement(11208);
+ addExpectedElement(11209);
+ addExpectedElement(11210);
+ addExpectedElement(11211);
+ addExpectedElement(11212);
+ addExpectedElement(11213);
+ addExpectedElement(11214);
+ addExpectedElement(11215);
+ addExpectedElement(11216);
+ addExpectedElement(11217);
+ addExpectedElement(11218);
+ addExpectedElement(11219);
+ addExpectedElement(11220);
+ }
+
+ a6=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_statements_SynchronizedBlock16603); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSynchronizedBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_59_0_0_9, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11221);
+ addExpectedElement(11222);
+ addExpectedElement(11223);
+ addExpectedElement(11224);
+ addExpectedElement(11225);
+ addExpectedElement(11226);
+ addExpectedElement(11227);
+ addExpectedElement(11228);
+ addExpectedElement(11229);
+ addExpectedElement(11230);
+ addExpectedElement(11231);
+ addExpectedElement(11232);
+ addExpectedElement(11233);
+ addExpectedElement(11234);
+ addExpectedElement(11235);
+ addExpectedElement(11236);
+ addExpectedElement(11237);
+ addExpectedElement(11238);
+ addExpectedElement(11239);
+ addExpectedElement(11240);
+ addExpectedElement(11241);
+ addExpectedElement(11242);
+ addExpectedElement(11243);
+ addExpectedElement(11244);
+ addExpectedElement(11245);
+ addExpectedElement(11246);
+ addExpectedElement(11247);
+ addExpectedElement(11248);
+ addExpectedElement(11249);
+ addExpectedElement(11250);
+ addExpectedElement(11251);
+ addExpectedElement(11252);
+ addExpectedElement(11253);
+ addExpectedElement(11254);
+ addExpectedElement(11255);
+ addExpectedElement(11256);
+ addExpectedElement(11257);
+ addExpectedElement(11258);
+ addExpectedElement(11259);
+ addExpectedElement(11260);
+ addExpectedElement(11261);
+ addExpectedElement(11262);
+ addExpectedElement(11263);
+ addExpectedElement(11264);
+ addExpectedElement(11265);
+ addExpectedElement(11266);
+ addExpectedElement(11267);
+ addExpectedElement(11268);
+ addExpectedElement(11269);
+ addExpectedElement(11270);
+ addExpectedElement(11271);
+ addExpectedElement(11272);
+ addExpectedElement(11273);
+ addExpectedElement(11274);
+ addExpectedElement(11275);
+ addExpectedElement(11276);
+ addExpectedElement(11277);
+ addExpectedElement(11278);
+ addExpectedElement(11279);
+ addExpectedElement(11280);
+ addExpectedElement(11281);
+ addExpectedElement(11282);
+ addExpectedElement(11283);
+ addExpectedElement(11284);
+ addExpectedElement(11285);
+ addExpectedElement(11286);
+ addExpectedElement(11287);
+ addExpectedElement(11288);
+ addExpectedElement(11289);
+ addExpectedElement(11290);
+ addExpectedElement(11291);
+ addExpectedElement(11292);
+ addExpectedElement(11293);
+ addExpectedElement(11294);
+ addExpectedElement(11295);
+ addExpectedElement(11296);
+ addExpectedElement(11297);
+ addExpectedElement(11298);
+ addExpectedElement(11299);
+ addExpectedElement(11300);
+ addExpectedElement(11301);
+ addExpectedElement(11302);
+ addExpectedElement(11303);
+ addExpectedElement(11304);
+ addExpectedElement(11305);
+ addExpectedElement(11306);
+ addExpectedElement(11307);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 61, parse_org_emftext_language_java_statements_SynchronizedBlock_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_SynchronizedBlock"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_TryBlock"
+ // Java.g:22906:1: parse_org_emftext_language_java_statements_TryBlock returns [org.emftext.language.java.statements.TryBlock element = null] : a0= 'try' a1= '{' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* a3= '}' ( (a4_0= parse_org_emftext_language_java_statements_CatchBlock ) )* ( (a5= 'finally' (a6_0= parse_org_emftext_language_java_statements_Block ) ) )? ;
+ public final org.emftext.language.java.statements.TryBlock parse_org_emftext_language_java_statements_TryBlock() throws RecognitionException {
+ org.emftext.language.java.statements.TryBlock element = null;
+
+ int parse_org_emftext_language_java_statements_TryBlock_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ org.emftext.language.java.statements.Statement a2_0 =null;
+
+ org.emftext.language.java.statements.CatchBlock a4_0 =null;
+
+ org.emftext.language.java.statements.Block a6_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 62) ) { return element; }
+
+ // Java.g:22909:2: (a0= 'try' a1= '{' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* a3= '}' ( (a4_0= parse_org_emftext_language_java_statements_CatchBlock ) )* ( (a5= 'finally' (a6_0= parse_org_emftext_language_java_statements_Block ) ) )? )
+ // Java.g:22910:2: a0= 'try' a1= '{' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* a3= '}' ( (a4_0= parse_org_emftext_language_java_statements_CatchBlock ) )* ( (a5= 'finally' (a6_0= parse_org_emftext_language_java_statements_Block ) ) )?
+ {
+ a0=(Token)match(input,101,FOLLOW_101_in_parse_org_emftext_language_java_statements_TryBlock16632); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createTryBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_60_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11308);
+ }
+
+ a1=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_statements_TryBlock16646); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createTryBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_60_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11309);
+ addExpectedElement(11310);
+ addExpectedElement(11311);
+ addExpectedElement(11312);
+ addExpectedElement(11313);
+ addExpectedElement(11314);
+ addExpectedElement(11315);
+ addExpectedElement(11316);
+ addExpectedElement(11317);
+ addExpectedElement(11318);
+ addExpectedElement(11319);
+ addExpectedElement(11320);
+ addExpectedElement(11321);
+ addExpectedElement(11322);
+ addExpectedElement(11323);
+ addExpectedElement(11324);
+ addExpectedElement(11325);
+ addExpectedElement(11326);
+ addExpectedElement(11327);
+ addExpectedElement(11328);
+ addExpectedElement(11329);
+ addExpectedElement(11330);
+ addExpectedElement(11331);
+ addExpectedElement(11332);
+ addExpectedElement(11333);
+ addExpectedElement(11334);
+ addExpectedElement(11335);
+ addExpectedElement(11336);
+ addExpectedElement(11337);
+ addExpectedElement(11338);
+ addExpectedElement(11339);
+ addExpectedElement(11340);
+ addExpectedElement(11341);
+ addExpectedElement(11342);
+ addExpectedElement(11343);
+ addExpectedElement(11344);
+ addExpectedElement(11345);
+ addExpectedElement(11346);
+ addExpectedElement(11347);
+ addExpectedElement(11348);
+ addExpectedElement(11349);
+ addExpectedElement(11350);
+ addExpectedElement(11351);
+ addExpectedElement(11352);
+ addExpectedElement(11353);
+ addExpectedElement(11354);
+ addExpectedElement(11355);
+ addExpectedElement(11356);
+ addExpectedElement(11357);
+ addExpectedElement(11358);
+ addExpectedElement(11359);
+ addExpectedElement(11360);
+ addExpectedElement(11361);
+ addExpectedElement(11362);
+ addExpectedElement(11363);
+ addExpectedElement(11364);
+ addExpectedElement(11365);
+ addExpectedElement(11366);
+ addExpectedElement(11367);
+ addExpectedElement(11368);
+ addExpectedElement(11369);
+ addExpectedElement(11370);
+ addExpectedElement(11371);
+ addExpectedElement(11372);
+ addExpectedElement(11373);
+ addExpectedElement(11374);
+ addExpectedElement(11375);
+ addExpectedElement(11376);
+ addExpectedElement(11377);
+ addExpectedElement(11378);
+ addExpectedElement(11379);
+ addExpectedElement(11380);
+ addExpectedElement(11381);
+ addExpectedElement(11382);
+ addExpectedElement(11383);
+ addExpectedElement(11384);
+ addExpectedElement(11385);
+ }
+
+ // Java.g:23014:2: ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop183:
+ do {
+ int alt183=2;
+ int LA183_0 = input.LA(1);
+
+ if ( ((LA183_0 >= BOOLEAN_LITERAL && LA183_0 <= IDENTIFIER)||(LA183_0 >= OCTAL_INTEGER_LITERAL && LA183_0 <= OCTAL_LONG_LITERAL)||LA183_0==STRING_LITERAL||LA183_0==21||LA183_0==26||(LA183_0 >= 30 && LA183_0 <= 31)||(LA183_0 >= 34 && LA183_0 <= 35)||(LA183_0 >= 42 && LA183_0 <= 43)||LA183_0==48||(LA183_0 >= 56 && LA183_0 <= 60)||(LA183_0 >= 63 && LA183_0 <= 65)||(LA183_0 >= 67 && LA183_0 <= 68)||LA183_0==70||LA183_0==72||(LA183_0 >= 74 && LA183_0 <= 76)||(LA183_0 >= 80 && LA183_0 <= 85)||(LA183_0 >= 87 && LA183_0 <= 98)||(LA183_0 >= 100 && LA183_0 <= 105)||LA183_0==110) ) {
+ alt183=1;
+ }
+
+
+ switch (alt183) {
+ case 1 :
+ // Java.g:23015:3: ( (a2_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:23015:3: ( (a2_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:23016:4: (a2_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:23016:4: (a2_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:23017:5: a2_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_TryBlock16675);
+ a2_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createTryBlock();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.TRY_BLOCK__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_60_0_0_3_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11386);
+ addExpectedElement(11387);
+ addExpectedElement(11388);
+ addExpectedElement(11389);
+ addExpectedElement(11390);
+ addExpectedElement(11391);
+ addExpectedElement(11392);
+ addExpectedElement(11393);
+ addExpectedElement(11394);
+ addExpectedElement(11395);
+ addExpectedElement(11396);
+ addExpectedElement(11397);
+ addExpectedElement(11398);
+ addExpectedElement(11399);
+ addExpectedElement(11400);
+ addExpectedElement(11401);
+ addExpectedElement(11402);
+ addExpectedElement(11403);
+ addExpectedElement(11404);
+ addExpectedElement(11405);
+ addExpectedElement(11406);
+ addExpectedElement(11407);
+ addExpectedElement(11408);
+ addExpectedElement(11409);
+ addExpectedElement(11410);
+ addExpectedElement(11411);
+ addExpectedElement(11412);
+ addExpectedElement(11413);
+ addExpectedElement(11414);
+ addExpectedElement(11415);
+ addExpectedElement(11416);
+ addExpectedElement(11417);
+ addExpectedElement(11418);
+ addExpectedElement(11419);
+ addExpectedElement(11420);
+ addExpectedElement(11421);
+ addExpectedElement(11422);
+ addExpectedElement(11423);
+ addExpectedElement(11424);
+ addExpectedElement(11425);
+ addExpectedElement(11426);
+ addExpectedElement(11427);
+ addExpectedElement(11428);
+ addExpectedElement(11429);
+ addExpectedElement(11430);
+ addExpectedElement(11431);
+ addExpectedElement(11432);
+ addExpectedElement(11433);
+ addExpectedElement(11434);
+ addExpectedElement(11435);
+ addExpectedElement(11436);
+ addExpectedElement(11437);
+ addExpectedElement(11438);
+ addExpectedElement(11439);
+ addExpectedElement(11440);
+ addExpectedElement(11441);
+ addExpectedElement(11442);
+ addExpectedElement(11443);
+ addExpectedElement(11444);
+ addExpectedElement(11445);
+ addExpectedElement(11446);
+ addExpectedElement(11447);
+ addExpectedElement(11448);
+ addExpectedElement(11449);
+ addExpectedElement(11450);
+ addExpectedElement(11451);
+ addExpectedElement(11452);
+ addExpectedElement(11453);
+ addExpectedElement(11454);
+ addExpectedElement(11455);
+ addExpectedElement(11456);
+ addExpectedElement(11457);
+ addExpectedElement(11458);
+ addExpectedElement(11459);
+ addExpectedElement(11460);
+ addExpectedElement(11461);
+ addExpectedElement(11462);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop183;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11463);
+ addExpectedElement(11464);
+ addExpectedElement(11465);
+ addExpectedElement(11466);
+ addExpectedElement(11467);
+ addExpectedElement(11468);
+ addExpectedElement(11469);
+ addExpectedElement(11470);
+ addExpectedElement(11471);
+ addExpectedElement(11472);
+ addExpectedElement(11473);
+ addExpectedElement(11474);
+ addExpectedElement(11475);
+ addExpectedElement(11476);
+ addExpectedElement(11477);
+ addExpectedElement(11478);
+ addExpectedElement(11479);
+ addExpectedElement(11480);
+ addExpectedElement(11481);
+ addExpectedElement(11482);
+ addExpectedElement(11483);
+ addExpectedElement(11484);
+ addExpectedElement(11485);
+ addExpectedElement(11486);
+ addExpectedElement(11487);
+ addExpectedElement(11488);
+ addExpectedElement(11489);
+ addExpectedElement(11490);
+ addExpectedElement(11491);
+ addExpectedElement(11492);
+ addExpectedElement(11493);
+ addExpectedElement(11494);
+ addExpectedElement(11495);
+ addExpectedElement(11496);
+ addExpectedElement(11497);
+ addExpectedElement(11498);
+ addExpectedElement(11499);
+ addExpectedElement(11500);
+ addExpectedElement(11501);
+ addExpectedElement(11502);
+ addExpectedElement(11503);
+ addExpectedElement(11504);
+ addExpectedElement(11505);
+ addExpectedElement(11506);
+ addExpectedElement(11507);
+ addExpectedElement(11508);
+ addExpectedElement(11509);
+ addExpectedElement(11510);
+ addExpectedElement(11511);
+ addExpectedElement(11512);
+ addExpectedElement(11513);
+ addExpectedElement(11514);
+ addExpectedElement(11515);
+ addExpectedElement(11516);
+ addExpectedElement(11517);
+ addExpectedElement(11518);
+ addExpectedElement(11519);
+ addExpectedElement(11520);
+ addExpectedElement(11521);
+ addExpectedElement(11522);
+ addExpectedElement(11523);
+ addExpectedElement(11524);
+ addExpectedElement(11525);
+ addExpectedElement(11526);
+ addExpectedElement(11527);
+ addExpectedElement(11528);
+ addExpectedElement(11529);
+ addExpectedElement(11530);
+ addExpectedElement(11531);
+ addExpectedElement(11532);
+ addExpectedElement(11533);
+ addExpectedElement(11534);
+ addExpectedElement(11535);
+ addExpectedElement(11536);
+ addExpectedElement(11537);
+ addExpectedElement(11538);
+ addExpectedElement(11539);
+ }
+
+ a3=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_statements_TryBlock16716); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createTryBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_60_0_0_5, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11540);
+ addExpectedElement(11541);
+ addExpectedElement(11542);
+ addExpectedElement(11543);
+ addExpectedElement(11544);
+ addExpectedElement(11545);
+ addExpectedElement(11546);
+ addExpectedElement(11547);
+ addExpectedElement(11548);
+ addExpectedElement(11549);
+ addExpectedElement(11550);
+ addExpectedElement(11551);
+ addExpectedElement(11552);
+ addExpectedElement(11553);
+ addExpectedElement(11554);
+ addExpectedElement(11555);
+ addExpectedElement(11556);
+ addExpectedElement(11557);
+ addExpectedElement(11558);
+ addExpectedElement(11559);
+ addExpectedElement(11560);
+ addExpectedElement(11561);
+ addExpectedElement(11562);
+ addExpectedElement(11563);
+ addExpectedElement(11564);
+ addExpectedElement(11565);
+ addExpectedElement(11566);
+ addExpectedElement(11567);
+ addExpectedElement(11568);
+ addExpectedElement(11569);
+ addExpectedElement(11570);
+ addExpectedElement(11571);
+ addExpectedElement(11572);
+ addExpectedElement(11573);
+ addExpectedElement(11574);
+ addExpectedElement(11575);
+ addExpectedElement(11576);
+ addExpectedElement(11577);
+ addExpectedElement(11578);
+ addExpectedElement(11579);
+ addExpectedElement(11580);
+ addExpectedElement(11581);
+ addExpectedElement(11582);
+ addExpectedElement(11583);
+ addExpectedElement(11584);
+ addExpectedElement(11585);
+ addExpectedElement(11586);
+ addExpectedElement(11587);
+ addExpectedElement(11588);
+ addExpectedElement(11589);
+ addExpectedElement(11590);
+ addExpectedElement(11591);
+ addExpectedElement(11592);
+ addExpectedElement(11593);
+ addExpectedElement(11594);
+ addExpectedElement(11595);
+ addExpectedElement(11596);
+ addExpectedElement(11597);
+ addExpectedElement(11598);
+ addExpectedElement(11599);
+ addExpectedElement(11600);
+ addExpectedElement(11601);
+ addExpectedElement(11602);
+ addExpectedElement(11603);
+ addExpectedElement(11604);
+ addExpectedElement(11605);
+ addExpectedElement(11606);
+ addExpectedElement(11607);
+ addExpectedElement(11608);
+ addExpectedElement(11609);
+ addExpectedElement(11610);
+ addExpectedElement(11611);
+ addExpectedElement(11612);
+ addExpectedElement(11613);
+ addExpectedElement(11614);
+ addExpectedElement(11615);
+ addExpectedElement(11616);
+ addExpectedElement(11617);
+ addExpectedElement(11618);
+ addExpectedElement(11619);
+ addExpectedElement(11620);
+ addExpectedElement(11621);
+ addExpectedElement(11622);
+ addExpectedElement(11623);
+ addExpectedElement(11624);
+ addExpectedElement(11625);
+ addExpectedElement(11626);
+ addExpectedElement(11627);
+ addExpectedElement(11628);
+ }
+
+ // Java.g:23303:2: ( (a4_0= parse_org_emftext_language_java_statements_CatchBlock ) )*
+ loop184:
+ do {
+ int alt184=2;
+ int LA184_0 = input.LA(1);
+
+ if ( (LA184_0==62) ) {
+ alt184=1;
+ }
+
+
+ switch (alt184) {
+ case 1 :
+ // Java.g:23304:3: (a4_0= parse_org_emftext_language_java_statements_CatchBlock )
+ {
+ // Java.g:23304:3: (a4_0= parse_org_emftext_language_java_statements_CatchBlock )
+ // Java.g:23305:4: a4_0= parse_org_emftext_language_java_statements_CatchBlock
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_CatchBlock_in_parse_org_emftext_language_java_statements_TryBlock16739);
+ a4_0=parse_org_emftext_language_java_statements_CatchBlock();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createTryBlock();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.TRY_BLOCK__CATCHE_BLOCKS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_60_0_0_6, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop184;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11629);
+ addExpectedElement(11630);
+ addExpectedElement(11631);
+ addExpectedElement(11632);
+ addExpectedElement(11633);
+ addExpectedElement(11634);
+ addExpectedElement(11635);
+ addExpectedElement(11636);
+ addExpectedElement(11637);
+ addExpectedElement(11638);
+ addExpectedElement(11639);
+ addExpectedElement(11640);
+ addExpectedElement(11641);
+ addExpectedElement(11642);
+ addExpectedElement(11643);
+ addExpectedElement(11644);
+ addExpectedElement(11645);
+ addExpectedElement(11646);
+ addExpectedElement(11647);
+ addExpectedElement(11648);
+ addExpectedElement(11649);
+ addExpectedElement(11650);
+ addExpectedElement(11651);
+ addExpectedElement(11652);
+ addExpectedElement(11653);
+ addExpectedElement(11654);
+ addExpectedElement(11655);
+ addExpectedElement(11656);
+ addExpectedElement(11657);
+ addExpectedElement(11658);
+ addExpectedElement(11659);
+ addExpectedElement(11660);
+ addExpectedElement(11661);
+ addExpectedElement(11662);
+ addExpectedElement(11663);
+ addExpectedElement(11664);
+ addExpectedElement(11665);
+ addExpectedElement(11666);
+ addExpectedElement(11667);
+ addExpectedElement(11668);
+ addExpectedElement(11669);
+ addExpectedElement(11670);
+ addExpectedElement(11671);
+ addExpectedElement(11672);
+ addExpectedElement(11673);
+ addExpectedElement(11674);
+ addExpectedElement(11675);
+ addExpectedElement(11676);
+ addExpectedElement(11677);
+ addExpectedElement(11678);
+ addExpectedElement(11679);
+ addExpectedElement(11680);
+ addExpectedElement(11681);
+ addExpectedElement(11682);
+ addExpectedElement(11683);
+ addExpectedElement(11684);
+ addExpectedElement(11685);
+ addExpectedElement(11686);
+ addExpectedElement(11687);
+ addExpectedElement(11688);
+ addExpectedElement(11689);
+ addExpectedElement(11690);
+ addExpectedElement(11691);
+ addExpectedElement(11692);
+ addExpectedElement(11693);
+ addExpectedElement(11694);
+ addExpectedElement(11695);
+ addExpectedElement(11696);
+ addExpectedElement(11697);
+ addExpectedElement(11698);
+ addExpectedElement(11699);
+ addExpectedElement(11700);
+ addExpectedElement(11701);
+ addExpectedElement(11702);
+ addExpectedElement(11703);
+ addExpectedElement(11704);
+ addExpectedElement(11705);
+ addExpectedElement(11706);
+ addExpectedElement(11707);
+ addExpectedElement(11708);
+ addExpectedElement(11709);
+ addExpectedElement(11710);
+ addExpectedElement(11711);
+ addExpectedElement(11712);
+ addExpectedElement(11713);
+ addExpectedElement(11714);
+ addExpectedElement(11715);
+ addExpectedElement(11716);
+ addExpectedElement(11717);
+ }
+
+ // Java.g:23419:2: ( (a5= 'finally' (a6_0= parse_org_emftext_language_java_statements_Block ) ) )?
+ int alt185=2;
+ int LA185_0 = input.LA(1);
+
+ if ( (LA185_0==73) ) {
+ alt185=1;
+ }
+ switch (alt185) {
+ case 1 :
+ // Java.g:23420:3: (a5= 'finally' (a6_0= parse_org_emftext_language_java_statements_Block ) )
+ {
+ // Java.g:23420:3: (a5= 'finally' (a6_0= parse_org_emftext_language_java_statements_Block ) )
+ // Java.g:23421:4: a5= 'finally' (a6_0= parse_org_emftext_language_java_statements_Block )
+ {
+ a5=(Token)match(input,73,FOLLOW_73_in_parse_org_emftext_language_java_statements_TryBlock16774); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createTryBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_60_0_0_7_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a5, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11718);
+ addExpectedElement(11719);
+ addExpectedElement(11720);
+ addExpectedElement(11721);
+ addExpectedElement(11722);
+ addExpectedElement(11723);
+ addExpectedElement(11724);
+ addExpectedElement(11725);
+ addExpectedElement(11726);
+ addExpectedElement(11727);
+ addExpectedElement(11728);
+ addExpectedElement(11729);
+ }
+
+ // Java.g:23446:4: (a6_0= parse_org_emftext_language_java_statements_Block )
+ // Java.g:23447:5: a6_0= parse_org_emftext_language_java_statements_Block
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Block_in_parse_org_emftext_language_java_statements_TryBlock16800);
+ a6_0=parse_org_emftext_language_java_statements_Block();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createTryBlock();
+ startIncompleteElement(element);
+ }
+ if (a6_0 != null) {
+ if (a6_0 != null) {
+ Object value = a6_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.TRY_BLOCK__FINALLY_BLOCK), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_60_0_0_7_0_0_1, a6_0, true);
+ copyLocalizationInfos(a6_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11730);
+ addExpectedElement(11731);
+ addExpectedElement(11732);
+ addExpectedElement(11733);
+ addExpectedElement(11734);
+ addExpectedElement(11735);
+ addExpectedElement(11736);
+ addExpectedElement(11737);
+ addExpectedElement(11738);
+ addExpectedElement(11739);
+ addExpectedElement(11740);
+ addExpectedElement(11741);
+ addExpectedElement(11742);
+ addExpectedElement(11743);
+ addExpectedElement(11744);
+ addExpectedElement(11745);
+ addExpectedElement(11746);
+ addExpectedElement(11747);
+ addExpectedElement(11748);
+ addExpectedElement(11749);
+ addExpectedElement(11750);
+ addExpectedElement(11751);
+ addExpectedElement(11752);
+ addExpectedElement(11753);
+ addExpectedElement(11754);
+ addExpectedElement(11755);
+ addExpectedElement(11756);
+ addExpectedElement(11757);
+ addExpectedElement(11758);
+ addExpectedElement(11759);
+ addExpectedElement(11760);
+ addExpectedElement(11761);
+ addExpectedElement(11762);
+ addExpectedElement(11763);
+ addExpectedElement(11764);
+ addExpectedElement(11765);
+ addExpectedElement(11766);
+ addExpectedElement(11767);
+ addExpectedElement(11768);
+ addExpectedElement(11769);
+ addExpectedElement(11770);
+ addExpectedElement(11771);
+ addExpectedElement(11772);
+ addExpectedElement(11773);
+ addExpectedElement(11774);
+ addExpectedElement(11775);
+ addExpectedElement(11776);
+ addExpectedElement(11777);
+ addExpectedElement(11778);
+ addExpectedElement(11779);
+ addExpectedElement(11780);
+ addExpectedElement(11781);
+ addExpectedElement(11782);
+ addExpectedElement(11783);
+ addExpectedElement(11784);
+ addExpectedElement(11785);
+ addExpectedElement(11786);
+ addExpectedElement(11787);
+ addExpectedElement(11788);
+ addExpectedElement(11789);
+ addExpectedElement(11790);
+ addExpectedElement(11791);
+ addExpectedElement(11792);
+ addExpectedElement(11793);
+ addExpectedElement(11794);
+ addExpectedElement(11795);
+ addExpectedElement(11796);
+ addExpectedElement(11797);
+ addExpectedElement(11798);
+ addExpectedElement(11799);
+ addExpectedElement(11800);
+ addExpectedElement(11801);
+ addExpectedElement(11802);
+ addExpectedElement(11803);
+ addExpectedElement(11804);
+ addExpectedElement(11805);
+ addExpectedElement(11806);
+ addExpectedElement(11807);
+ addExpectedElement(11808);
+ addExpectedElement(11809);
+ addExpectedElement(11810);
+ addExpectedElement(11811);
+ addExpectedElement(11812);
+ addExpectedElement(11813);
+ addExpectedElement(11814);
+ addExpectedElement(11815);
+ addExpectedElement(11816);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11817);
+ addExpectedElement(11818);
+ addExpectedElement(11819);
+ addExpectedElement(11820);
+ addExpectedElement(11821);
+ addExpectedElement(11822);
+ addExpectedElement(11823);
+ addExpectedElement(11824);
+ addExpectedElement(11825);
+ addExpectedElement(11826);
+ addExpectedElement(11827);
+ addExpectedElement(11828);
+ addExpectedElement(11829);
+ addExpectedElement(11830);
+ addExpectedElement(11831);
+ addExpectedElement(11832);
+ addExpectedElement(11833);
+ addExpectedElement(11834);
+ addExpectedElement(11835);
+ addExpectedElement(11836);
+ addExpectedElement(11837);
+ addExpectedElement(11838);
+ addExpectedElement(11839);
+ addExpectedElement(11840);
+ addExpectedElement(11841);
+ addExpectedElement(11842);
+ addExpectedElement(11843);
+ addExpectedElement(11844);
+ addExpectedElement(11845);
+ addExpectedElement(11846);
+ addExpectedElement(11847);
+ addExpectedElement(11848);
+ addExpectedElement(11849);
+ addExpectedElement(11850);
+ addExpectedElement(11851);
+ addExpectedElement(11852);
+ addExpectedElement(11853);
+ addExpectedElement(11854);
+ addExpectedElement(11855);
+ addExpectedElement(11856);
+ addExpectedElement(11857);
+ addExpectedElement(11858);
+ addExpectedElement(11859);
+ addExpectedElement(11860);
+ addExpectedElement(11861);
+ addExpectedElement(11862);
+ addExpectedElement(11863);
+ addExpectedElement(11864);
+ addExpectedElement(11865);
+ addExpectedElement(11866);
+ addExpectedElement(11867);
+ addExpectedElement(11868);
+ addExpectedElement(11869);
+ addExpectedElement(11870);
+ addExpectedElement(11871);
+ addExpectedElement(11872);
+ addExpectedElement(11873);
+ addExpectedElement(11874);
+ addExpectedElement(11875);
+ addExpectedElement(11876);
+ addExpectedElement(11877);
+ addExpectedElement(11878);
+ addExpectedElement(11879);
+ addExpectedElement(11880);
+ addExpectedElement(11881);
+ addExpectedElement(11882);
+ addExpectedElement(11883);
+ addExpectedElement(11884);
+ addExpectedElement(11885);
+ addExpectedElement(11886);
+ addExpectedElement(11887);
+ addExpectedElement(11888);
+ addExpectedElement(11889);
+ addExpectedElement(11890);
+ addExpectedElement(11891);
+ addExpectedElement(11892);
+ addExpectedElement(11893);
+ addExpectedElement(11894);
+ addExpectedElement(11895);
+ addExpectedElement(11896);
+ addExpectedElement(11897);
+ addExpectedElement(11898);
+ addExpectedElement(11899);
+ addExpectedElement(11900);
+ addExpectedElement(11901);
+ addExpectedElement(11902);
+ addExpectedElement(11903);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 62, parse_org_emftext_language_java_statements_TryBlock_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_TryBlock"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_CatchBlock"
+ // Java.g:23653:1: parse_org_emftext_language_java_statements_CatchBlock returns [org.emftext.language.java.statements.CatchBlock element = null] : a0= 'catch' a1= '(' (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )* a6= '}' ;
+ public final org.emftext.language.java.statements.CatchBlock parse_org_emftext_language_java_statements_CatchBlock() throws RecognitionException {
+ org.emftext.language.java.statements.CatchBlock element = null;
+
+ int parse_org_emftext_language_java_statements_CatchBlock_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a4=null;
+ Token a6=null;
+ org.emftext.language.java.parameters.OrdinaryParameter a2_0 =null;
+
+ org.emftext.language.java.statements.Statement a5_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 63) ) { return element; }
+
+ // Java.g:23656:2: (a0= 'catch' a1= '(' (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )* a6= '}' )
+ // Java.g:23657:2: a0= 'catch' a1= '(' (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )* a6= '}'
+ {
+ a0=(Token)match(input,62,FOLLOW_62_in_parse_org_emftext_language_java_statements_CatchBlock16856); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCatchBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_61_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11904);
+ }
+
+ a1=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_CatchBlock16870); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCatchBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_61_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11905);
+ addExpectedElement(11906);
+ addExpectedElement(11907);
+ addExpectedElement(11908);
+ addExpectedElement(11909);
+ addExpectedElement(11910);
+ addExpectedElement(11911);
+ addExpectedElement(11912);
+ addExpectedElement(11913);
+ addExpectedElement(11914);
+ addExpectedElement(11915);
+ addExpectedElement(11916);
+ addExpectedElement(11917);
+ addExpectedElement(11918);
+ addExpectedElement(11919);
+ addExpectedElement(11920);
+ addExpectedElement(11921);
+ addExpectedElement(11922);
+ addExpectedElement(11923);
+ addExpectedElement(11924);
+ addExpectedElement(11925);
+ addExpectedElement(11926);
+ addExpectedElement(11927);
+ }
+
+ // Java.g:23707:2: (a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter )
+ // Java.g:23708:3: a2_0= parse_org_emftext_language_java_parameters_OrdinaryParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_parse_org_emftext_language_java_statements_CatchBlock16888);
+ a2_0=parse_org_emftext_language_java_parameters_OrdinaryParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCatchBlock();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CATCH_BLOCK__PARAMETER), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_61_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11928);
+ }
+
+ a3=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_CatchBlock16906); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCatchBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_61_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11929);
+ }
+
+ a4=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_statements_CatchBlock16920); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCatchBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_61_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(11930);
+ addExpectedElement(11931);
+ addExpectedElement(11932);
+ addExpectedElement(11933);
+ addExpectedElement(11934);
+ addExpectedElement(11935);
+ addExpectedElement(11936);
+ addExpectedElement(11937);
+ addExpectedElement(11938);
+ addExpectedElement(11939);
+ addExpectedElement(11940);
+ addExpectedElement(11941);
+ addExpectedElement(11942);
+ addExpectedElement(11943);
+ addExpectedElement(11944);
+ addExpectedElement(11945);
+ addExpectedElement(11946);
+ addExpectedElement(11947);
+ addExpectedElement(11948);
+ addExpectedElement(11949);
+ addExpectedElement(11950);
+ addExpectedElement(11951);
+ addExpectedElement(11952);
+ addExpectedElement(11953);
+ addExpectedElement(11954);
+ addExpectedElement(11955);
+ addExpectedElement(11956);
+ addExpectedElement(11957);
+ addExpectedElement(11958);
+ addExpectedElement(11959);
+ addExpectedElement(11960);
+ addExpectedElement(11961);
+ addExpectedElement(11962);
+ addExpectedElement(11963);
+ addExpectedElement(11964);
+ addExpectedElement(11965);
+ addExpectedElement(11966);
+ addExpectedElement(11967);
+ addExpectedElement(11968);
+ addExpectedElement(11969);
+ addExpectedElement(11970);
+ addExpectedElement(11971);
+ addExpectedElement(11972);
+ addExpectedElement(11973);
+ addExpectedElement(11974);
+ addExpectedElement(11975);
+ addExpectedElement(11976);
+ addExpectedElement(11977);
+ addExpectedElement(11978);
+ addExpectedElement(11979);
+ addExpectedElement(11980);
+ addExpectedElement(11981);
+ addExpectedElement(11982);
+ addExpectedElement(11983);
+ addExpectedElement(11984);
+ addExpectedElement(11985);
+ addExpectedElement(11986);
+ addExpectedElement(11987);
+ addExpectedElement(11988);
+ addExpectedElement(11989);
+ addExpectedElement(11990);
+ addExpectedElement(11991);
+ addExpectedElement(11992);
+ addExpectedElement(11993);
+ addExpectedElement(11994);
+ addExpectedElement(11995);
+ addExpectedElement(11996);
+ addExpectedElement(11997);
+ addExpectedElement(11998);
+ addExpectedElement(11999);
+ addExpectedElement(12000);
+ addExpectedElement(12001);
+ addExpectedElement(12002);
+ addExpectedElement(12003);
+ addExpectedElement(12004);
+ addExpectedElement(12005);
+ addExpectedElement(12006);
+ }
+
+ // Java.g:23837:2: ( ( (a5_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop186:
+ do {
+ int alt186=2;
+ int LA186_0 = input.LA(1);
+
+ if ( ((LA186_0 >= BOOLEAN_LITERAL && LA186_0 <= IDENTIFIER)||(LA186_0 >= OCTAL_INTEGER_LITERAL && LA186_0 <= OCTAL_LONG_LITERAL)||LA186_0==STRING_LITERAL||LA186_0==21||LA186_0==26||(LA186_0 >= 30 && LA186_0 <= 31)||(LA186_0 >= 34 && LA186_0 <= 35)||(LA186_0 >= 42 && LA186_0 <= 43)||LA186_0==48||(LA186_0 >= 56 && LA186_0 <= 60)||(LA186_0 >= 63 && LA186_0 <= 65)||(LA186_0 >= 67 && LA186_0 <= 68)||LA186_0==70||LA186_0==72||(LA186_0 >= 74 && LA186_0 <= 76)||(LA186_0 >= 80 && LA186_0 <= 85)||(LA186_0 >= 87 && LA186_0 <= 98)||(LA186_0 >= 100 && LA186_0 <= 105)||LA186_0==110) ) {
+ alt186=1;
+ }
+
+
+ switch (alt186) {
+ case 1 :
+ // Java.g:23838:3: ( (a5_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:23838:3: ( (a5_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:23839:4: (a5_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:23839:4: (a5_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:23840:5: a5_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_CatchBlock16949);
+ a5_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCatchBlock();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.CATCH_BLOCK__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_61_0_0_7_0_0_1, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12007);
+ addExpectedElement(12008);
+ addExpectedElement(12009);
+ addExpectedElement(12010);
+ addExpectedElement(12011);
+ addExpectedElement(12012);
+ addExpectedElement(12013);
+ addExpectedElement(12014);
+ addExpectedElement(12015);
+ addExpectedElement(12016);
+ addExpectedElement(12017);
+ addExpectedElement(12018);
+ addExpectedElement(12019);
+ addExpectedElement(12020);
+ addExpectedElement(12021);
+ addExpectedElement(12022);
+ addExpectedElement(12023);
+ addExpectedElement(12024);
+ addExpectedElement(12025);
+ addExpectedElement(12026);
+ addExpectedElement(12027);
+ addExpectedElement(12028);
+ addExpectedElement(12029);
+ addExpectedElement(12030);
+ addExpectedElement(12031);
+ addExpectedElement(12032);
+ addExpectedElement(12033);
+ addExpectedElement(12034);
+ addExpectedElement(12035);
+ addExpectedElement(12036);
+ addExpectedElement(12037);
+ addExpectedElement(12038);
+ addExpectedElement(12039);
+ addExpectedElement(12040);
+ addExpectedElement(12041);
+ addExpectedElement(12042);
+ addExpectedElement(12043);
+ addExpectedElement(12044);
+ addExpectedElement(12045);
+ addExpectedElement(12046);
+ addExpectedElement(12047);
+ addExpectedElement(12048);
+ addExpectedElement(12049);
+ addExpectedElement(12050);
+ addExpectedElement(12051);
+ addExpectedElement(12052);
+ addExpectedElement(12053);
+ addExpectedElement(12054);
+ addExpectedElement(12055);
+ addExpectedElement(12056);
+ addExpectedElement(12057);
+ addExpectedElement(12058);
+ addExpectedElement(12059);
+ addExpectedElement(12060);
+ addExpectedElement(12061);
+ addExpectedElement(12062);
+ addExpectedElement(12063);
+ addExpectedElement(12064);
+ addExpectedElement(12065);
+ addExpectedElement(12066);
+ addExpectedElement(12067);
+ addExpectedElement(12068);
+ addExpectedElement(12069);
+ addExpectedElement(12070);
+ addExpectedElement(12071);
+ addExpectedElement(12072);
+ addExpectedElement(12073);
+ addExpectedElement(12074);
+ addExpectedElement(12075);
+ addExpectedElement(12076);
+ addExpectedElement(12077);
+ addExpectedElement(12078);
+ addExpectedElement(12079);
+ addExpectedElement(12080);
+ addExpectedElement(12081);
+ addExpectedElement(12082);
+ addExpectedElement(12083);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop186;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12084);
+ addExpectedElement(12085);
+ addExpectedElement(12086);
+ addExpectedElement(12087);
+ addExpectedElement(12088);
+ addExpectedElement(12089);
+ addExpectedElement(12090);
+ addExpectedElement(12091);
+ addExpectedElement(12092);
+ addExpectedElement(12093);
+ addExpectedElement(12094);
+ addExpectedElement(12095);
+ addExpectedElement(12096);
+ addExpectedElement(12097);
+ addExpectedElement(12098);
+ addExpectedElement(12099);
+ addExpectedElement(12100);
+ addExpectedElement(12101);
+ addExpectedElement(12102);
+ addExpectedElement(12103);
+ addExpectedElement(12104);
+ addExpectedElement(12105);
+ addExpectedElement(12106);
+ addExpectedElement(12107);
+ addExpectedElement(12108);
+ addExpectedElement(12109);
+ addExpectedElement(12110);
+ addExpectedElement(12111);
+ addExpectedElement(12112);
+ addExpectedElement(12113);
+ addExpectedElement(12114);
+ addExpectedElement(12115);
+ addExpectedElement(12116);
+ addExpectedElement(12117);
+ addExpectedElement(12118);
+ addExpectedElement(12119);
+ addExpectedElement(12120);
+ addExpectedElement(12121);
+ addExpectedElement(12122);
+ addExpectedElement(12123);
+ addExpectedElement(12124);
+ addExpectedElement(12125);
+ addExpectedElement(12126);
+ addExpectedElement(12127);
+ addExpectedElement(12128);
+ addExpectedElement(12129);
+ addExpectedElement(12130);
+ addExpectedElement(12131);
+ addExpectedElement(12132);
+ addExpectedElement(12133);
+ addExpectedElement(12134);
+ addExpectedElement(12135);
+ addExpectedElement(12136);
+ addExpectedElement(12137);
+ addExpectedElement(12138);
+ addExpectedElement(12139);
+ addExpectedElement(12140);
+ addExpectedElement(12141);
+ addExpectedElement(12142);
+ addExpectedElement(12143);
+ addExpectedElement(12144);
+ addExpectedElement(12145);
+ addExpectedElement(12146);
+ addExpectedElement(12147);
+ addExpectedElement(12148);
+ addExpectedElement(12149);
+ addExpectedElement(12150);
+ addExpectedElement(12151);
+ addExpectedElement(12152);
+ addExpectedElement(12153);
+ addExpectedElement(12154);
+ addExpectedElement(12155);
+ addExpectedElement(12156);
+ addExpectedElement(12157);
+ addExpectedElement(12158);
+ addExpectedElement(12159);
+ addExpectedElement(12160);
+ }
+
+ a6=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_statements_CatchBlock16990); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createCatchBlock();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_61_0_0_9, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12161);
+ addExpectedElement(12162);
+ addExpectedElement(12163);
+ addExpectedElement(12164);
+ addExpectedElement(12165);
+ addExpectedElement(12166);
+ addExpectedElement(12167);
+ addExpectedElement(12168);
+ addExpectedElement(12169);
+ addExpectedElement(12170);
+ addExpectedElement(12171);
+ addExpectedElement(12172);
+ addExpectedElement(12173);
+ addExpectedElement(12174);
+ addExpectedElement(12175);
+ addExpectedElement(12176);
+ addExpectedElement(12177);
+ addExpectedElement(12178);
+ addExpectedElement(12179);
+ addExpectedElement(12180);
+ addExpectedElement(12181);
+ addExpectedElement(12182);
+ addExpectedElement(12183);
+ addExpectedElement(12184);
+ addExpectedElement(12185);
+ addExpectedElement(12186);
+ addExpectedElement(12187);
+ addExpectedElement(12188);
+ addExpectedElement(12189);
+ addExpectedElement(12190);
+ addExpectedElement(12191);
+ addExpectedElement(12192);
+ addExpectedElement(12193);
+ addExpectedElement(12194);
+ addExpectedElement(12195);
+ addExpectedElement(12196);
+ addExpectedElement(12197);
+ addExpectedElement(12198);
+ addExpectedElement(12199);
+ addExpectedElement(12200);
+ addExpectedElement(12201);
+ addExpectedElement(12202);
+ addExpectedElement(12203);
+ addExpectedElement(12204);
+ addExpectedElement(12205);
+ addExpectedElement(12206);
+ addExpectedElement(12207);
+ addExpectedElement(12208);
+ addExpectedElement(12209);
+ addExpectedElement(12210);
+ addExpectedElement(12211);
+ addExpectedElement(12212);
+ addExpectedElement(12213);
+ addExpectedElement(12214);
+ addExpectedElement(12215);
+ addExpectedElement(12216);
+ addExpectedElement(12217);
+ addExpectedElement(12218);
+ addExpectedElement(12219);
+ addExpectedElement(12220);
+ addExpectedElement(12221);
+ addExpectedElement(12222);
+ addExpectedElement(12223);
+ addExpectedElement(12224);
+ addExpectedElement(12225);
+ addExpectedElement(12226);
+ addExpectedElement(12227);
+ addExpectedElement(12228);
+ addExpectedElement(12229);
+ addExpectedElement(12230);
+ addExpectedElement(12231);
+ addExpectedElement(12232);
+ addExpectedElement(12233);
+ addExpectedElement(12234);
+ addExpectedElement(12235);
+ addExpectedElement(12236);
+ addExpectedElement(12237);
+ addExpectedElement(12238);
+ addExpectedElement(12239);
+ addExpectedElement(12240);
+ addExpectedElement(12241);
+ addExpectedElement(12242);
+ addExpectedElement(12243);
+ addExpectedElement(12244);
+ addExpectedElement(12245);
+ addExpectedElement(12246);
+ addExpectedElement(12247);
+ addExpectedElement(12248);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 63, parse_org_emftext_language_java_statements_CatchBlock_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_CatchBlock"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Switch"
+ // Java.g:24127:1: parse_org_emftext_language_java_statements_Switch returns [org.emftext.language.java.statements.Switch element = null] : a0= 'switch' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_SwitchCase ) )* ) a6= '}' ;
+ public final org.emftext.language.java.statements.Switch parse_org_emftext_language_java_statements_Switch() throws RecognitionException {
+ org.emftext.language.java.statements.Switch element = null;
+
+ int parse_org_emftext_language_java_statements_Switch_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a3=null;
+ Token a4=null;
+ Token a6=null;
+ org.emftext.language.java.expressions.AssignmentExpression a2_0 =null;
+
+ org.emftext.language.java.statements.SwitchCase a5_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 64) ) { return element; }
+
+ // Java.g:24130:2: (a0= 'switch' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_SwitchCase ) )* ) a6= '}' )
+ // Java.g:24131:2: a0= 'switch' a1= '(' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ')' a4= '{' ( ( (a5_0= parse_org_emftext_language_java_statements_SwitchCase ) )* ) a6= '}'
+ {
+ a0=(Token)match(input,95,FOLLOW_95_in_parse_org_emftext_language_java_statements_Switch17019); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSwitch();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_62_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12249);
+ }
+
+ a1=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_statements_Switch17033); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSwitch();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_62_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12250);
+ addExpectedElement(12251);
+ addExpectedElement(12252);
+ addExpectedElement(12253);
+ addExpectedElement(12254);
+ addExpectedElement(12255);
+ addExpectedElement(12256);
+ addExpectedElement(12257);
+ addExpectedElement(12258);
+ addExpectedElement(12259);
+ addExpectedElement(12260);
+ addExpectedElement(12261);
+ addExpectedElement(12262);
+ addExpectedElement(12263);
+ addExpectedElement(12264);
+ addExpectedElement(12265);
+ addExpectedElement(12266);
+ addExpectedElement(12267);
+ addExpectedElement(12268);
+ addExpectedElement(12269);
+ addExpectedElement(12270);
+ addExpectedElement(12271);
+ addExpectedElement(12272);
+ addExpectedElement(12273);
+ addExpectedElement(12274);
+ addExpectedElement(12275);
+ addExpectedElement(12276);
+ addExpectedElement(12277);
+ addExpectedElement(12278);
+ addExpectedElement(12279);
+ addExpectedElement(12280);
+ addExpectedElement(12281);
+ addExpectedElement(12282);
+ addExpectedElement(12283);
+ addExpectedElement(12284);
+ addExpectedElement(12285);
+ addExpectedElement(12286);
+ addExpectedElement(12287);
+ addExpectedElement(12288);
+ addExpectedElement(12289);
+ addExpectedElement(12290);
+ addExpectedElement(12291);
+ addExpectedElement(12292);
+ }
+
+ // Java.g:24201:2: (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:24202:3: a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Switch17051);
+ a2_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSwitch();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.SWITCH__VARIABLE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_62_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12293);
+ }
+
+ a3=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_statements_Switch17069); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSwitch();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_62_0_0_4, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12294);
+ }
+
+ a4=(Token)match(input,105,FOLLOW_105_in_parse_org_emftext_language_java_statements_Switch17083); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSwitch();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_62_0_0_6, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12295);
+ addExpectedElement(12296);
+ addExpectedElement(12297);
+ }
+
+ // Java.g:24257:2: ( ( (a5_0= parse_org_emftext_language_java_statements_SwitchCase ) )* )
+ // Java.g:24258:3: ( (a5_0= parse_org_emftext_language_java_statements_SwitchCase ) )*
+ {
+ // Java.g:24258:3: ( (a5_0= parse_org_emftext_language_java_statements_SwitchCase ) )*
+ loop187:
+ do {
+ int alt187=2;
+ int LA187_0 = input.LA(1);
+
+ if ( (LA187_0==61||LA187_0==66) ) {
+ alt187=1;
+ }
+
+
+ switch (alt187) {
+ case 1 :
+ // Java.g:24259:4: (a5_0= parse_org_emftext_language_java_statements_SwitchCase )
+ {
+ // Java.g:24259:4: (a5_0= parse_org_emftext_language_java_statements_SwitchCase )
+ // Java.g:24260:5: a5_0= parse_org_emftext_language_java_statements_SwitchCase
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_SwitchCase_in_parse_org_emftext_language_java_statements_Switch17112);
+ a5_0=parse_org_emftext_language_java_statements_SwitchCase();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSwitch();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.SWITCH__CASES, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_62_0_0_7_0_0_0, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop187;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12298);
+ addExpectedElement(12299);
+ addExpectedElement(12300);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12301);
+ }
+
+ a6=(Token)match(input,109,FOLLOW_109_in_parse_org_emftext_language_java_statements_Switch17152); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createSwitch();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_62_0_0_8, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a6, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12302);
+ addExpectedElement(12303);
+ addExpectedElement(12304);
+ addExpectedElement(12305);
+ addExpectedElement(12306);
+ addExpectedElement(12307);
+ addExpectedElement(12308);
+ addExpectedElement(12309);
+ addExpectedElement(12310);
+ addExpectedElement(12311);
+ addExpectedElement(12312);
+ addExpectedElement(12313);
+ addExpectedElement(12314);
+ addExpectedElement(12315);
+ addExpectedElement(12316);
+ addExpectedElement(12317);
+ addExpectedElement(12318);
+ addExpectedElement(12319);
+ addExpectedElement(12320);
+ addExpectedElement(12321);
+ addExpectedElement(12322);
+ addExpectedElement(12323);
+ addExpectedElement(12324);
+ addExpectedElement(12325);
+ addExpectedElement(12326);
+ addExpectedElement(12327);
+ addExpectedElement(12328);
+ addExpectedElement(12329);
+ addExpectedElement(12330);
+ addExpectedElement(12331);
+ addExpectedElement(12332);
+ addExpectedElement(12333);
+ addExpectedElement(12334);
+ addExpectedElement(12335);
+ addExpectedElement(12336);
+ addExpectedElement(12337);
+ addExpectedElement(12338);
+ addExpectedElement(12339);
+ addExpectedElement(12340);
+ addExpectedElement(12341);
+ addExpectedElement(12342);
+ addExpectedElement(12343);
+ addExpectedElement(12344);
+ addExpectedElement(12345);
+ addExpectedElement(12346);
+ addExpectedElement(12347);
+ addExpectedElement(12348);
+ addExpectedElement(12349);
+ addExpectedElement(12350);
+ addExpectedElement(12351);
+ addExpectedElement(12352);
+ addExpectedElement(12353);
+ addExpectedElement(12354);
+ addExpectedElement(12355);
+ addExpectedElement(12356);
+ addExpectedElement(12357);
+ addExpectedElement(12358);
+ addExpectedElement(12359);
+ addExpectedElement(12360);
+ addExpectedElement(12361);
+ addExpectedElement(12362);
+ addExpectedElement(12363);
+ addExpectedElement(12364);
+ addExpectedElement(12365);
+ addExpectedElement(12366);
+ addExpectedElement(12367);
+ addExpectedElement(12368);
+ addExpectedElement(12369);
+ addExpectedElement(12370);
+ addExpectedElement(12371);
+ addExpectedElement(12372);
+ addExpectedElement(12373);
+ addExpectedElement(12374);
+ addExpectedElement(12375);
+ addExpectedElement(12376);
+ addExpectedElement(12377);
+ addExpectedElement(12378);
+ addExpectedElement(12379);
+ addExpectedElement(12380);
+ addExpectedElement(12381);
+ addExpectedElement(12382);
+ addExpectedElement(12383);
+ addExpectedElement(12384);
+ addExpectedElement(12385);
+ addExpectedElement(12386);
+ addExpectedElement(12387);
+ addExpectedElement(12388);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 64, parse_org_emftext_language_java_statements_Switch_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Switch"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_NormalSwitchCase"
+ // Java.g:24396:1: parse_org_emftext_language_java_statements_NormalSwitchCase returns [org.emftext.language.java.statements.NormalSwitchCase element = null] : a0= 'case' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ':' ( ( (a3_0= parse_org_emftext_language_java_statements_Statement ) ) )* ;
+ public final org.emftext.language.java.statements.NormalSwitchCase parse_org_emftext_language_java_statements_NormalSwitchCase() throws RecognitionException {
+ org.emftext.language.java.statements.NormalSwitchCase element = null;
+
+ int parse_org_emftext_language_java_statements_NormalSwitchCase_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+ org.emftext.language.java.statements.Statement a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 65) ) { return element; }
+
+ // Java.g:24399:2: (a0= 'case' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ':' ( ( (a3_0= parse_org_emftext_language_java_statements_Statement ) ) )* )
+ // Java.g:24400:2: a0= 'case' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ':' ( ( (a3_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ {
+ a0=(Token)match(input,61,FOLLOW_61_in_parse_org_emftext_language_java_statements_NormalSwitchCase17181); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createNormalSwitchCase();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_63_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12389);
+ addExpectedElement(12390);
+ addExpectedElement(12391);
+ addExpectedElement(12392);
+ addExpectedElement(12393);
+ addExpectedElement(12394);
+ addExpectedElement(12395);
+ addExpectedElement(12396);
+ addExpectedElement(12397);
+ addExpectedElement(12398);
+ addExpectedElement(12399);
+ addExpectedElement(12400);
+ addExpectedElement(12401);
+ addExpectedElement(12402);
+ addExpectedElement(12403);
+ addExpectedElement(12404);
+ addExpectedElement(12405);
+ addExpectedElement(12406);
+ addExpectedElement(12407);
+ addExpectedElement(12408);
+ addExpectedElement(12409);
+ addExpectedElement(12410);
+ addExpectedElement(12411);
+ addExpectedElement(12412);
+ addExpectedElement(12413);
+ addExpectedElement(12414);
+ addExpectedElement(12415);
+ addExpectedElement(12416);
+ addExpectedElement(12417);
+ addExpectedElement(12418);
+ addExpectedElement(12419);
+ addExpectedElement(12420);
+ addExpectedElement(12421);
+ addExpectedElement(12422);
+ addExpectedElement(12423);
+ addExpectedElement(12424);
+ addExpectedElement(12425);
+ addExpectedElement(12426);
+ addExpectedElement(12427);
+ addExpectedElement(12428);
+ addExpectedElement(12429);
+ addExpectedElement(12430);
+ addExpectedElement(12431);
+ }
+
+ // Java.g:24456:2: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:24457:3: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_NormalSwitchCase17199);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createNormalSwitchCase();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.NORMAL_SWITCH_CASE__CONDITION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_63_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12432);
+ }
+
+ a2=(Token)match(input,41,FOLLOW_41_in_parse_org_emftext_language_java_statements_NormalSwitchCase17217); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createNormalSwitchCase();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_63_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12433);
+ addExpectedElement(12434);
+ addExpectedElement(12435);
+ addExpectedElement(12436);
+ addExpectedElement(12437);
+ addExpectedElement(12438);
+ addExpectedElement(12439);
+ addExpectedElement(12440);
+ addExpectedElement(12441);
+ addExpectedElement(12442);
+ addExpectedElement(12443);
+ addExpectedElement(12444);
+ addExpectedElement(12445);
+ addExpectedElement(12446);
+ addExpectedElement(12447);
+ addExpectedElement(12448);
+ addExpectedElement(12449);
+ addExpectedElement(12450);
+ addExpectedElement(12451);
+ addExpectedElement(12452);
+ addExpectedElement(12453);
+ addExpectedElement(12454);
+ addExpectedElement(12455);
+ addExpectedElement(12456);
+ addExpectedElement(12457);
+ addExpectedElement(12458);
+ addExpectedElement(12459);
+ addExpectedElement(12460);
+ addExpectedElement(12461);
+ addExpectedElement(12462);
+ addExpectedElement(12463);
+ addExpectedElement(12464);
+ addExpectedElement(12465);
+ addExpectedElement(12466);
+ addExpectedElement(12467);
+ addExpectedElement(12468);
+ addExpectedElement(12469);
+ addExpectedElement(12470);
+ addExpectedElement(12471);
+ addExpectedElement(12472);
+ addExpectedElement(12473);
+ addExpectedElement(12474);
+ addExpectedElement(12475);
+ addExpectedElement(12476);
+ addExpectedElement(12477);
+ addExpectedElement(12478);
+ addExpectedElement(12479);
+ addExpectedElement(12480);
+ addExpectedElement(12481);
+ addExpectedElement(12482);
+ addExpectedElement(12483);
+ addExpectedElement(12484);
+ addExpectedElement(12485);
+ addExpectedElement(12486);
+ addExpectedElement(12487);
+ addExpectedElement(12488);
+ addExpectedElement(12489);
+ addExpectedElement(12490);
+ addExpectedElement(12491);
+ addExpectedElement(12492);
+ addExpectedElement(12493);
+ addExpectedElement(12494);
+ addExpectedElement(12495);
+ addExpectedElement(12496);
+ addExpectedElement(12497);
+ addExpectedElement(12498);
+ addExpectedElement(12499);
+ addExpectedElement(12500);
+ addExpectedElement(12501);
+ addExpectedElement(12502);
+ addExpectedElement(12503);
+ addExpectedElement(12504);
+ addExpectedElement(12505);
+ addExpectedElement(12506);
+ addExpectedElement(12507);
+ addExpectedElement(12508);
+ addExpectedElement(12509);
+ addExpectedElement(12510);
+ addExpectedElement(12511);
+ }
+
+ // Java.g:24574:2: ( ( (a3_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop188:
+ do {
+ int alt188=2;
+ int LA188_0 = input.LA(1);
+
+ if ( ((LA188_0 >= BOOLEAN_LITERAL && LA188_0 <= IDENTIFIER)||(LA188_0 >= OCTAL_INTEGER_LITERAL && LA188_0 <= OCTAL_LONG_LITERAL)||LA188_0==STRING_LITERAL||LA188_0==21||LA188_0==26||(LA188_0 >= 30 && LA188_0 <= 31)||(LA188_0 >= 34 && LA188_0 <= 35)||(LA188_0 >= 42 && LA188_0 <= 43)||LA188_0==48||(LA188_0 >= 56 && LA188_0 <= 60)||(LA188_0 >= 63 && LA188_0 <= 65)||(LA188_0 >= 67 && LA188_0 <= 68)||LA188_0==70||LA188_0==72||(LA188_0 >= 74 && LA188_0 <= 76)||(LA188_0 >= 80 && LA188_0 <= 85)||(LA188_0 >= 87 && LA188_0 <= 98)||(LA188_0 >= 100 && LA188_0 <= 105)||LA188_0==110) ) {
+ alt188=1;
+ }
+
+
+ switch (alt188) {
+ case 1 :
+ // Java.g:24575:3: ( (a3_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:24575:3: ( (a3_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:24576:4: (a3_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:24576:4: (a3_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:24577:5: a3_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_NormalSwitchCase17246);
+ a3_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createNormalSwitchCase();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.NORMAL_SWITCH_CASE__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_63_0_0_3_0_0_1, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12512);
+ addExpectedElement(12513);
+ addExpectedElement(12514);
+ addExpectedElement(12515);
+ addExpectedElement(12516);
+ addExpectedElement(12517);
+ addExpectedElement(12518);
+ addExpectedElement(12519);
+ addExpectedElement(12520);
+ addExpectedElement(12521);
+ addExpectedElement(12522);
+ addExpectedElement(12523);
+ addExpectedElement(12524);
+ addExpectedElement(12525);
+ addExpectedElement(12526);
+ addExpectedElement(12527);
+ addExpectedElement(12528);
+ addExpectedElement(12529);
+ addExpectedElement(12530);
+ addExpectedElement(12531);
+ addExpectedElement(12532);
+ addExpectedElement(12533);
+ addExpectedElement(12534);
+ addExpectedElement(12535);
+ addExpectedElement(12536);
+ addExpectedElement(12537);
+ addExpectedElement(12538);
+ addExpectedElement(12539);
+ addExpectedElement(12540);
+ addExpectedElement(12541);
+ addExpectedElement(12542);
+ addExpectedElement(12543);
+ addExpectedElement(12544);
+ addExpectedElement(12545);
+ addExpectedElement(12546);
+ addExpectedElement(12547);
+ addExpectedElement(12548);
+ addExpectedElement(12549);
+ addExpectedElement(12550);
+ addExpectedElement(12551);
+ addExpectedElement(12552);
+ addExpectedElement(12553);
+ addExpectedElement(12554);
+ addExpectedElement(12555);
+ addExpectedElement(12556);
+ addExpectedElement(12557);
+ addExpectedElement(12558);
+ addExpectedElement(12559);
+ addExpectedElement(12560);
+ addExpectedElement(12561);
+ addExpectedElement(12562);
+ addExpectedElement(12563);
+ addExpectedElement(12564);
+ addExpectedElement(12565);
+ addExpectedElement(12566);
+ addExpectedElement(12567);
+ addExpectedElement(12568);
+ addExpectedElement(12569);
+ addExpectedElement(12570);
+ addExpectedElement(12571);
+ addExpectedElement(12572);
+ addExpectedElement(12573);
+ addExpectedElement(12574);
+ addExpectedElement(12575);
+ addExpectedElement(12576);
+ addExpectedElement(12577);
+ addExpectedElement(12578);
+ addExpectedElement(12579);
+ addExpectedElement(12580);
+ addExpectedElement(12581);
+ addExpectedElement(12582);
+ addExpectedElement(12583);
+ addExpectedElement(12584);
+ addExpectedElement(12585);
+ addExpectedElement(12586);
+ addExpectedElement(12587);
+ addExpectedElement(12588);
+ addExpectedElement(12589);
+ addExpectedElement(12590);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop188;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12591);
+ addExpectedElement(12592);
+ addExpectedElement(12593);
+ addExpectedElement(12594);
+ addExpectedElement(12595);
+ addExpectedElement(12596);
+ addExpectedElement(12597);
+ addExpectedElement(12598);
+ addExpectedElement(12599);
+ addExpectedElement(12600);
+ addExpectedElement(12601);
+ addExpectedElement(12602);
+ addExpectedElement(12603);
+ addExpectedElement(12604);
+ addExpectedElement(12605);
+ addExpectedElement(12606);
+ addExpectedElement(12607);
+ addExpectedElement(12608);
+ addExpectedElement(12609);
+ addExpectedElement(12610);
+ addExpectedElement(12611);
+ addExpectedElement(12612);
+ addExpectedElement(12613);
+ addExpectedElement(12614);
+ addExpectedElement(12615);
+ addExpectedElement(12616);
+ addExpectedElement(12617);
+ addExpectedElement(12618);
+ addExpectedElement(12619);
+ addExpectedElement(12620);
+ addExpectedElement(12621);
+ addExpectedElement(12622);
+ addExpectedElement(12623);
+ addExpectedElement(12624);
+ addExpectedElement(12625);
+ addExpectedElement(12626);
+ addExpectedElement(12627);
+ addExpectedElement(12628);
+ addExpectedElement(12629);
+ addExpectedElement(12630);
+ addExpectedElement(12631);
+ addExpectedElement(12632);
+ addExpectedElement(12633);
+ addExpectedElement(12634);
+ addExpectedElement(12635);
+ addExpectedElement(12636);
+ addExpectedElement(12637);
+ addExpectedElement(12638);
+ addExpectedElement(12639);
+ addExpectedElement(12640);
+ addExpectedElement(12641);
+ addExpectedElement(12642);
+ addExpectedElement(12643);
+ addExpectedElement(12644);
+ addExpectedElement(12645);
+ addExpectedElement(12646);
+ addExpectedElement(12647);
+ addExpectedElement(12648);
+ addExpectedElement(12649);
+ addExpectedElement(12650);
+ addExpectedElement(12651);
+ addExpectedElement(12652);
+ addExpectedElement(12653);
+ addExpectedElement(12654);
+ addExpectedElement(12655);
+ addExpectedElement(12656);
+ addExpectedElement(12657);
+ addExpectedElement(12658);
+ addExpectedElement(12659);
+ addExpectedElement(12660);
+ addExpectedElement(12661);
+ addExpectedElement(12662);
+ addExpectedElement(12663);
+ addExpectedElement(12664);
+ addExpectedElement(12665);
+ addExpectedElement(12666);
+ addExpectedElement(12667);
+ addExpectedElement(12668);
+ addExpectedElement(12669);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 65, parse_org_emftext_language_java_statements_NormalSwitchCase_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_NormalSwitchCase"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_DefaultSwitchCase"
+ // Java.g:24767:1: parse_org_emftext_language_java_statements_DefaultSwitchCase returns [org.emftext.language.java.statements.DefaultSwitchCase element = null] : a0= 'default' a1= ':' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* ;
+ public final org.emftext.language.java.statements.DefaultSwitchCase parse_org_emftext_language_java_statements_DefaultSwitchCase() throws RecognitionException {
+ org.emftext.language.java.statements.DefaultSwitchCase element = null;
+
+ int parse_org_emftext_language_java_statements_DefaultSwitchCase_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ org.emftext.language.java.statements.Statement a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 66) ) { return element; }
+
+ // Java.g:24770:2: (a0= 'default' a1= ':' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )* )
+ // Java.g:24771:2: a0= 'default' a1= ':' ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ {
+ a0=(Token)match(input,66,FOLLOW_66_in_parse_org_emftext_language_java_statements_DefaultSwitchCase17302); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDefaultSwitchCase();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_64_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12670);
+ }
+
+ a1=(Token)match(input,41,FOLLOW_41_in_parse_org_emftext_language_java_statements_DefaultSwitchCase17316); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDefaultSwitchCase();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_64_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12671);
+ addExpectedElement(12672);
+ addExpectedElement(12673);
+ addExpectedElement(12674);
+ addExpectedElement(12675);
+ addExpectedElement(12676);
+ addExpectedElement(12677);
+ addExpectedElement(12678);
+ addExpectedElement(12679);
+ addExpectedElement(12680);
+ addExpectedElement(12681);
+ addExpectedElement(12682);
+ addExpectedElement(12683);
+ addExpectedElement(12684);
+ addExpectedElement(12685);
+ addExpectedElement(12686);
+ addExpectedElement(12687);
+ addExpectedElement(12688);
+ addExpectedElement(12689);
+ addExpectedElement(12690);
+ addExpectedElement(12691);
+ addExpectedElement(12692);
+ addExpectedElement(12693);
+ addExpectedElement(12694);
+ addExpectedElement(12695);
+ addExpectedElement(12696);
+ addExpectedElement(12697);
+ addExpectedElement(12698);
+ addExpectedElement(12699);
+ addExpectedElement(12700);
+ addExpectedElement(12701);
+ addExpectedElement(12702);
+ addExpectedElement(12703);
+ addExpectedElement(12704);
+ addExpectedElement(12705);
+ addExpectedElement(12706);
+ addExpectedElement(12707);
+ addExpectedElement(12708);
+ addExpectedElement(12709);
+ addExpectedElement(12710);
+ addExpectedElement(12711);
+ addExpectedElement(12712);
+ addExpectedElement(12713);
+ addExpectedElement(12714);
+ addExpectedElement(12715);
+ addExpectedElement(12716);
+ addExpectedElement(12717);
+ addExpectedElement(12718);
+ addExpectedElement(12719);
+ addExpectedElement(12720);
+ addExpectedElement(12721);
+ addExpectedElement(12722);
+ addExpectedElement(12723);
+ addExpectedElement(12724);
+ addExpectedElement(12725);
+ addExpectedElement(12726);
+ addExpectedElement(12727);
+ addExpectedElement(12728);
+ addExpectedElement(12729);
+ addExpectedElement(12730);
+ addExpectedElement(12731);
+ addExpectedElement(12732);
+ addExpectedElement(12733);
+ addExpectedElement(12734);
+ addExpectedElement(12735);
+ addExpectedElement(12736);
+ addExpectedElement(12737);
+ addExpectedElement(12738);
+ addExpectedElement(12739);
+ addExpectedElement(12740);
+ addExpectedElement(12741);
+ addExpectedElement(12742);
+ addExpectedElement(12743);
+ addExpectedElement(12744);
+ addExpectedElement(12745);
+ addExpectedElement(12746);
+ addExpectedElement(12747);
+ addExpectedElement(12748);
+ addExpectedElement(12749);
+ }
+
+ // Java.g:24877:2: ( ( (a2_0= parse_org_emftext_language_java_statements_Statement ) ) )*
+ loop189:
+ do {
+ int alt189=2;
+ int LA189_0 = input.LA(1);
+
+ if ( ((LA189_0 >= BOOLEAN_LITERAL && LA189_0 <= IDENTIFIER)||(LA189_0 >= OCTAL_INTEGER_LITERAL && LA189_0 <= OCTAL_LONG_LITERAL)||LA189_0==STRING_LITERAL||LA189_0==21||LA189_0==26||(LA189_0 >= 30 && LA189_0 <= 31)||(LA189_0 >= 34 && LA189_0 <= 35)||(LA189_0 >= 42 && LA189_0 <= 43)||LA189_0==48||(LA189_0 >= 56 && LA189_0 <= 60)||(LA189_0 >= 63 && LA189_0 <= 65)||(LA189_0 >= 67 && LA189_0 <= 68)||LA189_0==70||LA189_0==72||(LA189_0 >= 74 && LA189_0 <= 76)||(LA189_0 >= 80 && LA189_0 <= 85)||(LA189_0 >= 87 && LA189_0 <= 98)||(LA189_0 >= 100 && LA189_0 <= 105)||LA189_0==110) ) {
+ alt189=1;
+ }
+
+
+ switch (alt189) {
+ case 1 :
+ // Java.g:24878:3: ( (a2_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:24878:3: ( (a2_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:24879:4: (a2_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:24879:4: (a2_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:24880:5: a2_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_DefaultSwitchCase17345);
+ a2_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createDefaultSwitchCase();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.statements.StatementsPackage.DEFAULT_SWITCH_CASE__STATEMENTS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_64_0_0_2_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12750);
+ addExpectedElement(12751);
+ addExpectedElement(12752);
+ addExpectedElement(12753);
+ addExpectedElement(12754);
+ addExpectedElement(12755);
+ addExpectedElement(12756);
+ addExpectedElement(12757);
+ addExpectedElement(12758);
+ addExpectedElement(12759);
+ addExpectedElement(12760);
+ addExpectedElement(12761);
+ addExpectedElement(12762);
+ addExpectedElement(12763);
+ addExpectedElement(12764);
+ addExpectedElement(12765);
+ addExpectedElement(12766);
+ addExpectedElement(12767);
+ addExpectedElement(12768);
+ addExpectedElement(12769);
+ addExpectedElement(12770);
+ addExpectedElement(12771);
+ addExpectedElement(12772);
+ addExpectedElement(12773);
+ addExpectedElement(12774);
+ addExpectedElement(12775);
+ addExpectedElement(12776);
+ addExpectedElement(12777);
+ addExpectedElement(12778);
+ addExpectedElement(12779);
+ addExpectedElement(12780);
+ addExpectedElement(12781);
+ addExpectedElement(12782);
+ addExpectedElement(12783);
+ addExpectedElement(12784);
+ addExpectedElement(12785);
+ addExpectedElement(12786);
+ addExpectedElement(12787);
+ addExpectedElement(12788);
+ addExpectedElement(12789);
+ addExpectedElement(12790);
+ addExpectedElement(12791);
+ addExpectedElement(12792);
+ addExpectedElement(12793);
+ addExpectedElement(12794);
+ addExpectedElement(12795);
+ addExpectedElement(12796);
+ addExpectedElement(12797);
+ addExpectedElement(12798);
+ addExpectedElement(12799);
+ addExpectedElement(12800);
+ addExpectedElement(12801);
+ addExpectedElement(12802);
+ addExpectedElement(12803);
+ addExpectedElement(12804);
+ addExpectedElement(12805);
+ addExpectedElement(12806);
+ addExpectedElement(12807);
+ addExpectedElement(12808);
+ addExpectedElement(12809);
+ addExpectedElement(12810);
+ addExpectedElement(12811);
+ addExpectedElement(12812);
+ addExpectedElement(12813);
+ addExpectedElement(12814);
+ addExpectedElement(12815);
+ addExpectedElement(12816);
+ addExpectedElement(12817);
+ addExpectedElement(12818);
+ addExpectedElement(12819);
+ addExpectedElement(12820);
+ addExpectedElement(12821);
+ addExpectedElement(12822);
+ addExpectedElement(12823);
+ addExpectedElement(12824);
+ addExpectedElement(12825);
+ addExpectedElement(12826);
+ addExpectedElement(12827);
+ addExpectedElement(12828);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop189;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12829);
+ addExpectedElement(12830);
+ addExpectedElement(12831);
+ addExpectedElement(12832);
+ addExpectedElement(12833);
+ addExpectedElement(12834);
+ addExpectedElement(12835);
+ addExpectedElement(12836);
+ addExpectedElement(12837);
+ addExpectedElement(12838);
+ addExpectedElement(12839);
+ addExpectedElement(12840);
+ addExpectedElement(12841);
+ addExpectedElement(12842);
+ addExpectedElement(12843);
+ addExpectedElement(12844);
+ addExpectedElement(12845);
+ addExpectedElement(12846);
+ addExpectedElement(12847);
+ addExpectedElement(12848);
+ addExpectedElement(12849);
+ addExpectedElement(12850);
+ addExpectedElement(12851);
+ addExpectedElement(12852);
+ addExpectedElement(12853);
+ addExpectedElement(12854);
+ addExpectedElement(12855);
+ addExpectedElement(12856);
+ addExpectedElement(12857);
+ addExpectedElement(12858);
+ addExpectedElement(12859);
+ addExpectedElement(12860);
+ addExpectedElement(12861);
+ addExpectedElement(12862);
+ addExpectedElement(12863);
+ addExpectedElement(12864);
+ addExpectedElement(12865);
+ addExpectedElement(12866);
+ addExpectedElement(12867);
+ addExpectedElement(12868);
+ addExpectedElement(12869);
+ addExpectedElement(12870);
+ addExpectedElement(12871);
+ addExpectedElement(12872);
+ addExpectedElement(12873);
+ addExpectedElement(12874);
+ addExpectedElement(12875);
+ addExpectedElement(12876);
+ addExpectedElement(12877);
+ addExpectedElement(12878);
+ addExpectedElement(12879);
+ addExpectedElement(12880);
+ addExpectedElement(12881);
+ addExpectedElement(12882);
+ addExpectedElement(12883);
+ addExpectedElement(12884);
+ addExpectedElement(12885);
+ addExpectedElement(12886);
+ addExpectedElement(12887);
+ addExpectedElement(12888);
+ addExpectedElement(12889);
+ addExpectedElement(12890);
+ addExpectedElement(12891);
+ addExpectedElement(12892);
+ addExpectedElement(12893);
+ addExpectedElement(12894);
+ addExpectedElement(12895);
+ addExpectedElement(12896);
+ addExpectedElement(12897);
+ addExpectedElement(12898);
+ addExpectedElement(12899);
+ addExpectedElement(12900);
+ addExpectedElement(12901);
+ addExpectedElement(12902);
+ addExpectedElement(12903);
+ addExpectedElement(12904);
+ addExpectedElement(12905);
+ addExpectedElement(12906);
+ addExpectedElement(12907);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 66, parse_org_emftext_language_java_statements_DefaultSwitchCase_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_DefaultSwitchCase"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Return"
+ // Java.g:25070:1: parse_org_emftext_language_java_statements_Return returns [org.emftext.language.java.statements.Return element = null] : a0= 'return' ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a2= ';' ;
+ public final org.emftext.language.java.statements.Return parse_org_emftext_language_java_statements_Return() throws RecognitionException {
+ org.emftext.language.java.statements.Return element = null;
+
+ int parse_org_emftext_language_java_statements_Return_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 67) ) { return element; }
+
+ // Java.g:25073:2: (a0= 'return' ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a2= ';' )
+ // Java.g:25074:2: a0= 'return' ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )? a2= ';'
+ {
+ a0=(Token)match(input,90,FOLLOW_90_in_parse_org_emftext_language_java_statements_Return17401); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createReturn();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_65_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12908);
+ addExpectedElement(12909);
+ addExpectedElement(12910);
+ addExpectedElement(12911);
+ addExpectedElement(12912);
+ addExpectedElement(12913);
+ addExpectedElement(12914);
+ addExpectedElement(12915);
+ addExpectedElement(12916);
+ addExpectedElement(12917);
+ addExpectedElement(12918);
+ addExpectedElement(12919);
+ addExpectedElement(12920);
+ addExpectedElement(12921);
+ addExpectedElement(12922);
+ addExpectedElement(12923);
+ addExpectedElement(12924);
+ addExpectedElement(12925);
+ addExpectedElement(12926);
+ addExpectedElement(12927);
+ addExpectedElement(12928);
+ addExpectedElement(12929);
+ addExpectedElement(12930);
+ addExpectedElement(12931);
+ addExpectedElement(12932);
+ addExpectedElement(12933);
+ addExpectedElement(12934);
+ addExpectedElement(12935);
+ addExpectedElement(12936);
+ addExpectedElement(12937);
+ addExpectedElement(12938);
+ addExpectedElement(12939);
+ addExpectedElement(12940);
+ addExpectedElement(12941);
+ addExpectedElement(12942);
+ addExpectedElement(12943);
+ addExpectedElement(12944);
+ addExpectedElement(12945);
+ addExpectedElement(12946);
+ addExpectedElement(12947);
+ addExpectedElement(12948);
+ addExpectedElement(12949);
+ addExpectedElement(12950);
+ addExpectedElement(12951);
+ }
+
+ // Java.g:25131:2: ( (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )?
+ int alt190=2;
+ int LA190_0 = input.LA(1);
+
+ if ( ((LA190_0 >= BOOLEAN_LITERAL && LA190_0 <= IDENTIFIER)||(LA190_0 >= OCTAL_INTEGER_LITERAL && LA190_0 <= OCTAL_LONG_LITERAL)||LA190_0==STRING_LITERAL||LA190_0==21||LA190_0==26||(LA190_0 >= 30 && LA190_0 <= 31)||(LA190_0 >= 34 && LA190_0 <= 35)||LA190_0==43||LA190_0==48||LA190_0==58||LA190_0==60||(LA190_0 >= 63 && LA190_0 <= 64)||LA190_0==68||LA190_0==74||LA190_0==80||LA190_0==82||(LA190_0 >= 84 && LA190_0 <= 85)||LA190_0==91||LA190_0==94||LA190_0==97||LA190_0==102||LA190_0==105||LA190_0==110) ) {
+ alt190=1;
+ }
+ switch (alt190) {
+ case 1 :
+ // Java.g:25132:3: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ // Java.g:25132:3: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:25133:4: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Return17424);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createReturn();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.RETURN__RETURN_VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_65_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12952);
+ }
+
+ a2=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_Return17450); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createReturn();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_65_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(12953);
+ addExpectedElement(12954);
+ addExpectedElement(12955);
+ addExpectedElement(12956);
+ addExpectedElement(12957);
+ addExpectedElement(12958);
+ addExpectedElement(12959);
+ addExpectedElement(12960);
+ addExpectedElement(12961);
+ addExpectedElement(12962);
+ addExpectedElement(12963);
+ addExpectedElement(12964);
+ addExpectedElement(12965);
+ addExpectedElement(12966);
+ addExpectedElement(12967);
+ addExpectedElement(12968);
+ addExpectedElement(12969);
+ addExpectedElement(12970);
+ addExpectedElement(12971);
+ addExpectedElement(12972);
+ addExpectedElement(12973);
+ addExpectedElement(12974);
+ addExpectedElement(12975);
+ addExpectedElement(12976);
+ addExpectedElement(12977);
+ addExpectedElement(12978);
+ addExpectedElement(12979);
+ addExpectedElement(12980);
+ addExpectedElement(12981);
+ addExpectedElement(12982);
+ addExpectedElement(12983);
+ addExpectedElement(12984);
+ addExpectedElement(12985);
+ addExpectedElement(12986);
+ addExpectedElement(12987);
+ addExpectedElement(12988);
+ addExpectedElement(12989);
+ addExpectedElement(12990);
+ addExpectedElement(12991);
+ addExpectedElement(12992);
+ addExpectedElement(12993);
+ addExpectedElement(12994);
+ addExpectedElement(12995);
+ addExpectedElement(12996);
+ addExpectedElement(12997);
+ addExpectedElement(12998);
+ addExpectedElement(12999);
+ addExpectedElement(13000);
+ addExpectedElement(13001);
+ addExpectedElement(13002);
+ addExpectedElement(13003);
+ addExpectedElement(13004);
+ addExpectedElement(13005);
+ addExpectedElement(13006);
+ addExpectedElement(13007);
+ addExpectedElement(13008);
+ addExpectedElement(13009);
+ addExpectedElement(13010);
+ addExpectedElement(13011);
+ addExpectedElement(13012);
+ addExpectedElement(13013);
+ addExpectedElement(13014);
+ addExpectedElement(13015);
+ addExpectedElement(13016);
+ addExpectedElement(13017);
+ addExpectedElement(13018);
+ addExpectedElement(13019);
+ addExpectedElement(13020);
+ addExpectedElement(13021);
+ addExpectedElement(13022);
+ addExpectedElement(13023);
+ addExpectedElement(13024);
+ addExpectedElement(13025);
+ addExpectedElement(13026);
+ addExpectedElement(13027);
+ addExpectedElement(13028);
+ addExpectedElement(13029);
+ addExpectedElement(13030);
+ addExpectedElement(13031);
+ addExpectedElement(13032);
+ addExpectedElement(13033);
+ addExpectedElement(13034);
+ addExpectedElement(13035);
+ addExpectedElement(13036);
+ addExpectedElement(13037);
+ addExpectedElement(13038);
+ addExpectedElement(13039);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 67, parse_org_emftext_language_java_statements_Return_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Return"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Throw"
+ // Java.g:25261:1: parse_org_emftext_language_java_statements_Throw returns [org.emftext.language.java.statements.Throw element = null] : a0= 'throw' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ';' ;
+ public final org.emftext.language.java.statements.Throw parse_org_emftext_language_java_statements_Throw() throws RecognitionException {
+ org.emftext.language.java.statements.Throw element = null;
+
+ int parse_org_emftext_language_java_statements_Throw_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 68) ) { return element; }
+
+ // Java.g:25264:2: (a0= 'throw' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ';' )
+ // Java.g:25265:2: a0= 'throw' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ';'
+ {
+ a0=(Token)match(input,98,FOLLOW_98_in_parse_org_emftext_language_java_statements_Throw17479); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createThrow();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_66_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13040);
+ addExpectedElement(13041);
+ addExpectedElement(13042);
+ addExpectedElement(13043);
+ addExpectedElement(13044);
+ addExpectedElement(13045);
+ addExpectedElement(13046);
+ addExpectedElement(13047);
+ addExpectedElement(13048);
+ addExpectedElement(13049);
+ addExpectedElement(13050);
+ addExpectedElement(13051);
+ addExpectedElement(13052);
+ addExpectedElement(13053);
+ addExpectedElement(13054);
+ addExpectedElement(13055);
+ addExpectedElement(13056);
+ addExpectedElement(13057);
+ addExpectedElement(13058);
+ addExpectedElement(13059);
+ addExpectedElement(13060);
+ addExpectedElement(13061);
+ addExpectedElement(13062);
+ addExpectedElement(13063);
+ addExpectedElement(13064);
+ addExpectedElement(13065);
+ addExpectedElement(13066);
+ addExpectedElement(13067);
+ addExpectedElement(13068);
+ addExpectedElement(13069);
+ addExpectedElement(13070);
+ addExpectedElement(13071);
+ addExpectedElement(13072);
+ addExpectedElement(13073);
+ addExpectedElement(13074);
+ addExpectedElement(13075);
+ addExpectedElement(13076);
+ addExpectedElement(13077);
+ addExpectedElement(13078);
+ addExpectedElement(13079);
+ addExpectedElement(13080);
+ addExpectedElement(13081);
+ addExpectedElement(13082);
+ }
+
+ // Java.g:25321:2: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:25322:3: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Throw17497);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createThrow();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.THROW__THROWABLE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_66_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13083);
+ }
+
+ a2=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_Throw17515); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createThrow();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_66_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13084);
+ addExpectedElement(13085);
+ addExpectedElement(13086);
+ addExpectedElement(13087);
+ addExpectedElement(13088);
+ addExpectedElement(13089);
+ addExpectedElement(13090);
+ addExpectedElement(13091);
+ addExpectedElement(13092);
+ addExpectedElement(13093);
+ addExpectedElement(13094);
+ addExpectedElement(13095);
+ addExpectedElement(13096);
+ addExpectedElement(13097);
+ addExpectedElement(13098);
+ addExpectedElement(13099);
+ addExpectedElement(13100);
+ addExpectedElement(13101);
+ addExpectedElement(13102);
+ addExpectedElement(13103);
+ addExpectedElement(13104);
+ addExpectedElement(13105);
+ addExpectedElement(13106);
+ addExpectedElement(13107);
+ addExpectedElement(13108);
+ addExpectedElement(13109);
+ addExpectedElement(13110);
+ addExpectedElement(13111);
+ addExpectedElement(13112);
+ addExpectedElement(13113);
+ addExpectedElement(13114);
+ addExpectedElement(13115);
+ addExpectedElement(13116);
+ addExpectedElement(13117);
+ addExpectedElement(13118);
+ addExpectedElement(13119);
+ addExpectedElement(13120);
+ addExpectedElement(13121);
+ addExpectedElement(13122);
+ addExpectedElement(13123);
+ addExpectedElement(13124);
+ addExpectedElement(13125);
+ addExpectedElement(13126);
+ addExpectedElement(13127);
+ addExpectedElement(13128);
+ addExpectedElement(13129);
+ addExpectedElement(13130);
+ addExpectedElement(13131);
+ addExpectedElement(13132);
+ addExpectedElement(13133);
+ addExpectedElement(13134);
+ addExpectedElement(13135);
+ addExpectedElement(13136);
+ addExpectedElement(13137);
+ addExpectedElement(13138);
+ addExpectedElement(13139);
+ addExpectedElement(13140);
+ addExpectedElement(13141);
+ addExpectedElement(13142);
+ addExpectedElement(13143);
+ addExpectedElement(13144);
+ addExpectedElement(13145);
+ addExpectedElement(13146);
+ addExpectedElement(13147);
+ addExpectedElement(13148);
+ addExpectedElement(13149);
+ addExpectedElement(13150);
+ addExpectedElement(13151);
+ addExpectedElement(13152);
+ addExpectedElement(13153);
+ addExpectedElement(13154);
+ addExpectedElement(13155);
+ addExpectedElement(13156);
+ addExpectedElement(13157);
+ addExpectedElement(13158);
+ addExpectedElement(13159);
+ addExpectedElement(13160);
+ addExpectedElement(13161);
+ addExpectedElement(13162);
+ addExpectedElement(13163);
+ addExpectedElement(13164);
+ addExpectedElement(13165);
+ addExpectedElement(13166);
+ addExpectedElement(13167);
+ addExpectedElement(13168);
+ addExpectedElement(13169);
+ addExpectedElement(13170);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 68, parse_org_emftext_language_java_statements_Throw_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Throw"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Break"
+ // Java.g:25449:1: parse_org_emftext_language_java_statements_Break returns [org.emftext.language.java.statements.Break element = null] : a0= 'break' ( ( (a1= IDENTIFIER ) ) )? a2= ';' ;
+ private JavaContextDependentURIFragmentFactory breakURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getJumpTargetReferenceResolver());
+ public final org.emftext.language.java.statements.Break parse_org_emftext_language_java_statements_Break() throws RecognitionException {
+ org.emftext.language.java.statements.Break element = null;
+
+ int parse_org_emftext_language_java_statements_Break_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 69) ) { return element; }
+
+ // Java.g:25452:2: (a0= 'break' ( ( (a1= IDENTIFIER ) ) )? a2= ';' )
+ // Java.g:25453:2: a0= 'break' ( ( (a1= IDENTIFIER ) ) )? a2= ';'
+ {
+ a0=(Token)match(input,59,FOLLOW_59_in_parse_org_emftext_language_java_statements_Break17544); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createBreak();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_67_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13171);
+ addExpectedElement(13172);
+ }
+
+ // Java.g:25468:2: ( ( (a1= IDENTIFIER ) ) )?
+ int alt191=2;
+ int LA191_0 = input.LA(1);
+
+ if ( (LA191_0==IDENTIFIER) ) {
+ alt191=1;
+ }
+ switch (alt191) {
+ case 1 :
+ // Java.g:25469:3: ( (a1= IDENTIFIER ) )
+ {
+ // Java.g:25469:3: ( (a1= IDENTIFIER ) )
+ // Java.g:25470:4: (a1= IDENTIFIER )
+ {
+ // Java.g:25470:4: (a1= IDENTIFIER )
+ // Java.g:25471:5: a1= IDENTIFIER
+ {
+ a1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_statements_Break17573); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createBreak();
+ startIncompleteElement(element);
+ }
+ if (a1 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.BREAK__TARGET), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.statements.JumpLabel proxy = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createJumpLabel();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(breakURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.BREAK__TARGET), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.BREAK__TARGET), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_67_0_0_1_0_0_0, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13173);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13174);
+ }
+
+ a2=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_Break17619); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createBreak();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_67_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13175);
+ addExpectedElement(13176);
+ addExpectedElement(13177);
+ addExpectedElement(13178);
+ addExpectedElement(13179);
+ addExpectedElement(13180);
+ addExpectedElement(13181);
+ addExpectedElement(13182);
+ addExpectedElement(13183);
+ addExpectedElement(13184);
+ addExpectedElement(13185);
+ addExpectedElement(13186);
+ addExpectedElement(13187);
+ addExpectedElement(13188);
+ addExpectedElement(13189);
+ addExpectedElement(13190);
+ addExpectedElement(13191);
+ addExpectedElement(13192);
+ addExpectedElement(13193);
+ addExpectedElement(13194);
+ addExpectedElement(13195);
+ addExpectedElement(13196);
+ addExpectedElement(13197);
+ addExpectedElement(13198);
+ addExpectedElement(13199);
+ addExpectedElement(13200);
+ addExpectedElement(13201);
+ addExpectedElement(13202);
+ addExpectedElement(13203);
+ addExpectedElement(13204);
+ addExpectedElement(13205);
+ addExpectedElement(13206);
+ addExpectedElement(13207);
+ addExpectedElement(13208);
+ addExpectedElement(13209);
+ addExpectedElement(13210);
+ addExpectedElement(13211);
+ addExpectedElement(13212);
+ addExpectedElement(13213);
+ addExpectedElement(13214);
+ addExpectedElement(13215);
+ addExpectedElement(13216);
+ addExpectedElement(13217);
+ addExpectedElement(13218);
+ addExpectedElement(13219);
+ addExpectedElement(13220);
+ addExpectedElement(13221);
+ addExpectedElement(13222);
+ addExpectedElement(13223);
+ addExpectedElement(13224);
+ addExpectedElement(13225);
+ addExpectedElement(13226);
+ addExpectedElement(13227);
+ addExpectedElement(13228);
+ addExpectedElement(13229);
+ addExpectedElement(13230);
+ addExpectedElement(13231);
+ addExpectedElement(13232);
+ addExpectedElement(13233);
+ addExpectedElement(13234);
+ addExpectedElement(13235);
+ addExpectedElement(13236);
+ addExpectedElement(13237);
+ addExpectedElement(13238);
+ addExpectedElement(13239);
+ addExpectedElement(13240);
+ addExpectedElement(13241);
+ addExpectedElement(13242);
+ addExpectedElement(13243);
+ addExpectedElement(13244);
+ addExpectedElement(13245);
+ addExpectedElement(13246);
+ addExpectedElement(13247);
+ addExpectedElement(13248);
+ addExpectedElement(13249);
+ addExpectedElement(13250);
+ addExpectedElement(13251);
+ addExpectedElement(13252);
+ addExpectedElement(13253);
+ addExpectedElement(13254);
+ addExpectedElement(13255);
+ addExpectedElement(13256);
+ addExpectedElement(13257);
+ addExpectedElement(13258);
+ addExpectedElement(13259);
+ addExpectedElement(13260);
+ addExpectedElement(13261);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 69, parse_org_emftext_language_java_statements_Break_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Break"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Continue"
+ // Java.g:25619:1: parse_org_emftext_language_java_statements_Continue returns [org.emftext.language.java.statements.Continue element = null] : a0= 'continue' ( ( (a1= IDENTIFIER ) ) )? a2= ';' ;
+ private JavaContextDependentURIFragmentFactory continueURIFragmentFactory = new JavaContextDependentURIFragmentFactory(getReferenceResolverSwitch().getJumpTargetReferenceResolver());
+ public final org.emftext.language.java.statements.Continue parse_org_emftext_language_java_statements_Continue() throws RecognitionException {
+ org.emftext.language.java.statements.Continue element = null;
+
+ int parse_org_emftext_language_java_statements_Continue_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 70) ) { return element; }
+
+ // Java.g:25622:2: (a0= 'continue' ( ( (a1= IDENTIFIER ) ) )? a2= ';' )
+ // Java.g:25623:2: a0= 'continue' ( ( (a1= IDENTIFIER ) ) )? a2= ';'
+ {
+ a0=(Token)match(input,65,FOLLOW_65_in_parse_org_emftext_language_java_statements_Continue17648); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createContinue();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_68_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13262);
+ addExpectedElement(13263);
+ }
+
+ // Java.g:25638:2: ( ( (a1= IDENTIFIER ) ) )?
+ int alt192=2;
+ int LA192_0 = input.LA(1);
+
+ if ( (LA192_0==IDENTIFIER) ) {
+ alt192=1;
+ }
+ switch (alt192) {
+ case 1 :
+ // Java.g:25639:3: ( (a1= IDENTIFIER ) )
+ {
+ // Java.g:25639:3: ( (a1= IDENTIFIER ) )
+ // Java.g:25640:4: (a1= IDENTIFIER )
+ {
+ // Java.g:25640:4: (a1= IDENTIFIER )
+ // Java.g:25641:5: a1= IDENTIFIER
+ {
+ a1=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_statements_Continue17677); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createContinue();
+ startIncompleteElement(element);
+ }
+ if (a1 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a1.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONTINUE__TARGET), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a1).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a1).getStopIndex());
+ }
+ String resolved = (String) resolvedObject;
+ org.emftext.language.java.statements.JumpLabel proxy = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createJumpLabel();
+ collectHiddenTokens(element);
+
+ registerContextDependentProxy(continueURIFragmentFactory, element, (org.eclipse.emf.ecore.EReference) element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONTINUE__TARGET), resolved, proxy);
+ if (proxy != null) {
+ Object value = proxy;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.CONTINUE__TARGET), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_68_0_0_1_0_0_0, proxy, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, element);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a1, proxy);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13264);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13265);
+ }
+
+ a2=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_Continue17723); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createContinue();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_68_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13266);
+ addExpectedElement(13267);
+ addExpectedElement(13268);
+ addExpectedElement(13269);
+ addExpectedElement(13270);
+ addExpectedElement(13271);
+ addExpectedElement(13272);
+ addExpectedElement(13273);
+ addExpectedElement(13274);
+ addExpectedElement(13275);
+ addExpectedElement(13276);
+ addExpectedElement(13277);
+ addExpectedElement(13278);
+ addExpectedElement(13279);
+ addExpectedElement(13280);
+ addExpectedElement(13281);
+ addExpectedElement(13282);
+ addExpectedElement(13283);
+ addExpectedElement(13284);
+ addExpectedElement(13285);
+ addExpectedElement(13286);
+ addExpectedElement(13287);
+ addExpectedElement(13288);
+ addExpectedElement(13289);
+ addExpectedElement(13290);
+ addExpectedElement(13291);
+ addExpectedElement(13292);
+ addExpectedElement(13293);
+ addExpectedElement(13294);
+ addExpectedElement(13295);
+ addExpectedElement(13296);
+ addExpectedElement(13297);
+ addExpectedElement(13298);
+ addExpectedElement(13299);
+ addExpectedElement(13300);
+ addExpectedElement(13301);
+ addExpectedElement(13302);
+ addExpectedElement(13303);
+ addExpectedElement(13304);
+ addExpectedElement(13305);
+ addExpectedElement(13306);
+ addExpectedElement(13307);
+ addExpectedElement(13308);
+ addExpectedElement(13309);
+ addExpectedElement(13310);
+ addExpectedElement(13311);
+ addExpectedElement(13312);
+ addExpectedElement(13313);
+ addExpectedElement(13314);
+ addExpectedElement(13315);
+ addExpectedElement(13316);
+ addExpectedElement(13317);
+ addExpectedElement(13318);
+ addExpectedElement(13319);
+ addExpectedElement(13320);
+ addExpectedElement(13321);
+ addExpectedElement(13322);
+ addExpectedElement(13323);
+ addExpectedElement(13324);
+ addExpectedElement(13325);
+ addExpectedElement(13326);
+ addExpectedElement(13327);
+ addExpectedElement(13328);
+ addExpectedElement(13329);
+ addExpectedElement(13330);
+ addExpectedElement(13331);
+ addExpectedElement(13332);
+ addExpectedElement(13333);
+ addExpectedElement(13334);
+ addExpectedElement(13335);
+ addExpectedElement(13336);
+ addExpectedElement(13337);
+ addExpectedElement(13338);
+ addExpectedElement(13339);
+ addExpectedElement(13340);
+ addExpectedElement(13341);
+ addExpectedElement(13342);
+ addExpectedElement(13343);
+ addExpectedElement(13344);
+ addExpectedElement(13345);
+ addExpectedElement(13346);
+ addExpectedElement(13347);
+ addExpectedElement(13348);
+ addExpectedElement(13349);
+ addExpectedElement(13350);
+ addExpectedElement(13351);
+ addExpectedElement(13352);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 70, parse_org_emftext_language_java_statements_Continue_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Continue"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_JumpLabel"
+ // Java.g:25789:1: parse_org_emftext_language_java_statements_JumpLabel returns [org.emftext.language.java.statements.JumpLabel element = null] : (a0= IDENTIFIER ) a1= ':' (a2_0= parse_org_emftext_language_java_statements_Statement ) ;
+ public final org.emftext.language.java.statements.JumpLabel parse_org_emftext_language_java_statements_JumpLabel() throws RecognitionException {
+ org.emftext.language.java.statements.JumpLabel element = null;
+
+ int parse_org_emftext_language_java_statements_JumpLabel_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ org.emftext.language.java.statements.Statement a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 71) ) { return element; }
+
+ // Java.g:25792:2: ( (a0= IDENTIFIER ) a1= ':' (a2_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:25793:2: (a0= IDENTIFIER ) a1= ':' (a2_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ // Java.g:25793:2: (a0= IDENTIFIER )
+ // Java.g:25794:3: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_statements_JumpLabel17756); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createJumpLabel();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("IDENTIFIER");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.JUMP_LABEL__NAME), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.String resolved = (java.lang.String) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.JUMP_LABEL__NAME), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_69_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13353);
+ }
+
+ a1=(Token)match(input,41,FOLLOW_41_in_parse_org_emftext_language_java_statements_JumpLabel17777); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createJumpLabel();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_69_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13354);
+ addExpectedElement(13355);
+ addExpectedElement(13356);
+ addExpectedElement(13357);
+ addExpectedElement(13358);
+ addExpectedElement(13359);
+ addExpectedElement(13360);
+ addExpectedElement(13361);
+ addExpectedElement(13362);
+ addExpectedElement(13363);
+ addExpectedElement(13364);
+ addExpectedElement(13365);
+ addExpectedElement(13366);
+ addExpectedElement(13367);
+ addExpectedElement(13368);
+ addExpectedElement(13369);
+ addExpectedElement(13370);
+ addExpectedElement(13371);
+ addExpectedElement(13372);
+ addExpectedElement(13373);
+ addExpectedElement(13374);
+ addExpectedElement(13375);
+ addExpectedElement(13376);
+ addExpectedElement(13377);
+ addExpectedElement(13378);
+ addExpectedElement(13379);
+ addExpectedElement(13380);
+ addExpectedElement(13381);
+ addExpectedElement(13382);
+ addExpectedElement(13383);
+ addExpectedElement(13384);
+ addExpectedElement(13385);
+ addExpectedElement(13386);
+ addExpectedElement(13387);
+ addExpectedElement(13388);
+ addExpectedElement(13389);
+ addExpectedElement(13390);
+ addExpectedElement(13391);
+ addExpectedElement(13392);
+ addExpectedElement(13393);
+ addExpectedElement(13394);
+ addExpectedElement(13395);
+ addExpectedElement(13396);
+ addExpectedElement(13397);
+ addExpectedElement(13398);
+ addExpectedElement(13399);
+ addExpectedElement(13400);
+ addExpectedElement(13401);
+ addExpectedElement(13402);
+ addExpectedElement(13403);
+ addExpectedElement(13404);
+ addExpectedElement(13405);
+ addExpectedElement(13406);
+ addExpectedElement(13407);
+ addExpectedElement(13408);
+ addExpectedElement(13409);
+ addExpectedElement(13410);
+ addExpectedElement(13411);
+ addExpectedElement(13412);
+ addExpectedElement(13413);
+ addExpectedElement(13414);
+ addExpectedElement(13415);
+ addExpectedElement(13416);
+ addExpectedElement(13417);
+ addExpectedElement(13418);
+ addExpectedElement(13419);
+ addExpectedElement(13420);
+ addExpectedElement(13421);
+ addExpectedElement(13422);
+ addExpectedElement(13423);
+ addExpectedElement(13424);
+ addExpectedElement(13425);
+ addExpectedElement(13426);
+ addExpectedElement(13427);
+ addExpectedElement(13428);
+ addExpectedElement(13429);
+ }
+
+ // Java.g:25918:2: (a2_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:25919:3: a2_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_JumpLabel17795);
+ a2_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createJumpLabel();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.JUMP_LABEL__STATEMENT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_69_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13430);
+ addExpectedElement(13431);
+ addExpectedElement(13432);
+ addExpectedElement(13433);
+ addExpectedElement(13434);
+ addExpectedElement(13435);
+ addExpectedElement(13436);
+ addExpectedElement(13437);
+ addExpectedElement(13438);
+ addExpectedElement(13439);
+ addExpectedElement(13440);
+ addExpectedElement(13441);
+ addExpectedElement(13442);
+ addExpectedElement(13443);
+ addExpectedElement(13444);
+ addExpectedElement(13445);
+ addExpectedElement(13446);
+ addExpectedElement(13447);
+ addExpectedElement(13448);
+ addExpectedElement(13449);
+ addExpectedElement(13450);
+ addExpectedElement(13451);
+ addExpectedElement(13452);
+ addExpectedElement(13453);
+ addExpectedElement(13454);
+ addExpectedElement(13455);
+ addExpectedElement(13456);
+ addExpectedElement(13457);
+ addExpectedElement(13458);
+ addExpectedElement(13459);
+ addExpectedElement(13460);
+ addExpectedElement(13461);
+ addExpectedElement(13462);
+ addExpectedElement(13463);
+ addExpectedElement(13464);
+ addExpectedElement(13465);
+ addExpectedElement(13466);
+ addExpectedElement(13467);
+ addExpectedElement(13468);
+ addExpectedElement(13469);
+ addExpectedElement(13470);
+ addExpectedElement(13471);
+ addExpectedElement(13472);
+ addExpectedElement(13473);
+ addExpectedElement(13474);
+ addExpectedElement(13475);
+ addExpectedElement(13476);
+ addExpectedElement(13477);
+ addExpectedElement(13478);
+ addExpectedElement(13479);
+ addExpectedElement(13480);
+ addExpectedElement(13481);
+ addExpectedElement(13482);
+ addExpectedElement(13483);
+ addExpectedElement(13484);
+ addExpectedElement(13485);
+ addExpectedElement(13486);
+ addExpectedElement(13487);
+ addExpectedElement(13488);
+ addExpectedElement(13489);
+ addExpectedElement(13490);
+ addExpectedElement(13491);
+ addExpectedElement(13492);
+ addExpectedElement(13493);
+ addExpectedElement(13494);
+ addExpectedElement(13495);
+ addExpectedElement(13496);
+ addExpectedElement(13497);
+ addExpectedElement(13498);
+ addExpectedElement(13499);
+ addExpectedElement(13500);
+ addExpectedElement(13501);
+ addExpectedElement(13502);
+ addExpectedElement(13503);
+ addExpectedElement(13504);
+ addExpectedElement(13505);
+ addExpectedElement(13506);
+ addExpectedElement(13507);
+ addExpectedElement(13508);
+ addExpectedElement(13509);
+ addExpectedElement(13510);
+ addExpectedElement(13511);
+ addExpectedElement(13512);
+ addExpectedElement(13513);
+ addExpectedElement(13514);
+ addExpectedElement(13515);
+ addExpectedElement(13516);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 71, parse_org_emftext_language_java_statements_JumpLabel_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_JumpLabel"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_ExpressionStatement"
+ // Java.g:26032:1: parse_org_emftext_language_java_statements_ExpressionStatement returns [org.emftext.language.java.statements.ExpressionStatement element = null] : (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a1= ';' ;
+ public final org.emftext.language.java.statements.ExpressionStatement parse_org_emftext_language_java_statements_ExpressionStatement() throws RecognitionException {
+ org.emftext.language.java.statements.ExpressionStatement element = null;
+
+ int parse_org_emftext_language_java_statements_ExpressionStatement_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.AssignmentExpression a0_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 72) ) { return element; }
+
+ // Java.g:26035:2: ( (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a1= ';' )
+ // Java.g:26036:2: (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a1= ';'
+ {
+ // Java.g:26036:2: (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:26037:3: a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ExpressionStatement17832);
+ a0_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createExpressionStatement();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.statements.StatementsPackage.EXPRESSION_STATEMENT__EXPRESSION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_70_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13517);
+ }
+
+ a1=(Token)match(input,42,FOLLOW_42_in_parse_org_emftext_language_java_statements_ExpressionStatement17850); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.statements.StatementsFactory.eINSTANCE.createExpressionStatement();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_70_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13518);
+ addExpectedElement(13519);
+ addExpectedElement(13520);
+ addExpectedElement(13521);
+ addExpectedElement(13522);
+ addExpectedElement(13523);
+ addExpectedElement(13524);
+ addExpectedElement(13525);
+ addExpectedElement(13526);
+ addExpectedElement(13527);
+ addExpectedElement(13528);
+ addExpectedElement(13529);
+ addExpectedElement(13530);
+ addExpectedElement(13531);
+ addExpectedElement(13532);
+ addExpectedElement(13533);
+ addExpectedElement(13534);
+ addExpectedElement(13535);
+ addExpectedElement(13536);
+ addExpectedElement(13537);
+ addExpectedElement(13538);
+ addExpectedElement(13539);
+ addExpectedElement(13540);
+ addExpectedElement(13541);
+ addExpectedElement(13542);
+ addExpectedElement(13543);
+ addExpectedElement(13544);
+ addExpectedElement(13545);
+ addExpectedElement(13546);
+ addExpectedElement(13547);
+ addExpectedElement(13548);
+ addExpectedElement(13549);
+ addExpectedElement(13550);
+ addExpectedElement(13551);
+ addExpectedElement(13552);
+ addExpectedElement(13553);
+ addExpectedElement(13554);
+ addExpectedElement(13555);
+ addExpectedElement(13556);
+ addExpectedElement(13557);
+ addExpectedElement(13558);
+ addExpectedElement(13559);
+ addExpectedElement(13560);
+ addExpectedElement(13561);
+ addExpectedElement(13562);
+ addExpectedElement(13563);
+ addExpectedElement(13564);
+ addExpectedElement(13565);
+ addExpectedElement(13566);
+ addExpectedElement(13567);
+ addExpectedElement(13568);
+ addExpectedElement(13569);
+ addExpectedElement(13570);
+ addExpectedElement(13571);
+ addExpectedElement(13572);
+ addExpectedElement(13573);
+ addExpectedElement(13574);
+ addExpectedElement(13575);
+ addExpectedElement(13576);
+ addExpectedElement(13577);
+ addExpectedElement(13578);
+ addExpectedElement(13579);
+ addExpectedElement(13580);
+ addExpectedElement(13581);
+ addExpectedElement(13582);
+ addExpectedElement(13583);
+ addExpectedElement(13584);
+ addExpectedElement(13585);
+ addExpectedElement(13586);
+ addExpectedElement(13587);
+ addExpectedElement(13588);
+ addExpectedElement(13589);
+ addExpectedElement(13590);
+ addExpectedElement(13591);
+ addExpectedElement(13592);
+ addExpectedElement(13593);
+ addExpectedElement(13594);
+ addExpectedElement(13595);
+ addExpectedElement(13596);
+ addExpectedElement(13597);
+ addExpectedElement(13598);
+ addExpectedElement(13599);
+ addExpectedElement(13600);
+ addExpectedElement(13601);
+ addExpectedElement(13602);
+ addExpectedElement(13603);
+ addExpectedElement(13604);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 72, parse_org_emftext_language_java_statements_ExpressionStatement_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_ExpressionStatement"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_ExpressionList"
+ // Java.g:26164:1: parse_org_emftext_language_java_expressions_ExpressionList returns [org.emftext.language.java.expressions.ExpressionList element = null] : (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a1= ',' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.ExpressionList parse_org_emftext_language_java_expressions_ExpressionList() throws RecognitionException {
+ org.emftext.language.java.expressions.ExpressionList element = null;
+
+ int parse_org_emftext_language_java_expressions_ExpressionList_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.AssignmentExpression a0_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 73) ) { return element; }
+
+ // Java.g:26167:2: ( (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a1= ',' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )* )
+ // Java.g:26168:2: (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ( (a1= ',' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ {
+ // Java.g:26168:2: (a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:26169:3: a0_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_ExpressionList17883);
+ a0_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createExpressionList();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.EXPRESSION_LIST__EXPRESSIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_71_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13605);
+ addExpectedElement(13606);
+ }
+
+ // Java.g:26195:2: ( (a1= ',' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )*
+ loop193:
+ do {
+ int alt193=2;
+ int LA193_0 = input.LA(1);
+
+ if ( (LA193_0==33) ) {
+ alt193=1;
+ }
+
+
+ switch (alt193) {
+ case 1 :
+ // Java.g:26196:3: (a1= ',' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:26196:3: (a1= ',' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:26197:4: a1= ',' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ a1=(Token)match(input,33,FOLLOW_33_in_parse_org_emftext_language_java_expressions_ExpressionList17910); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createExpressionList();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_71_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13607);
+ addExpectedElement(13608);
+ addExpectedElement(13609);
+ addExpectedElement(13610);
+ addExpectedElement(13611);
+ addExpectedElement(13612);
+ addExpectedElement(13613);
+ addExpectedElement(13614);
+ addExpectedElement(13615);
+ addExpectedElement(13616);
+ addExpectedElement(13617);
+ addExpectedElement(13618);
+ addExpectedElement(13619);
+ addExpectedElement(13620);
+ addExpectedElement(13621);
+ addExpectedElement(13622);
+ addExpectedElement(13623);
+ addExpectedElement(13624);
+ addExpectedElement(13625);
+ addExpectedElement(13626);
+ addExpectedElement(13627);
+ addExpectedElement(13628);
+ addExpectedElement(13629);
+ addExpectedElement(13630);
+ addExpectedElement(13631);
+ addExpectedElement(13632);
+ addExpectedElement(13633);
+ addExpectedElement(13634);
+ addExpectedElement(13635);
+ addExpectedElement(13636);
+ addExpectedElement(13637);
+ addExpectedElement(13638);
+ addExpectedElement(13639);
+ addExpectedElement(13640);
+ addExpectedElement(13641);
+ addExpectedElement(13642);
+ addExpectedElement(13643);
+ addExpectedElement(13644);
+ addExpectedElement(13645);
+ addExpectedElement(13646);
+ addExpectedElement(13647);
+ addExpectedElement(13648);
+ addExpectedElement(13649);
+ }
+
+ // Java.g:26253:4: (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:26254:5: a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_ExpressionList17936);
+ a2_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createExpressionList();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.EXPRESSION_LIST__EXPRESSIONS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_71_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13650);
+ addExpectedElement(13651);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop193;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13652);
+ addExpectedElement(13653);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 73, parse_org_emftext_language_java_expressions_ExpressionList_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_ExpressionList"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_AssignmentExpression"
+ // Java.g:26290:1: parse_org_emftext_language_java_expressions_AssignmentExpression returns [org.emftext.language.java.expressions.AssignmentExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator ) (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? ;
+ public final org.emftext.language.java.expressions.AssignmentExpression parse_org_emftext_language_java_expressions_AssignmentExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.AssignmentExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_AssignmentExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.ConditionalExpression a0_0 =null;
+
+ org.emftext.language.java.operators.AssignmentOperator a1_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 74) ) { return element; }
+
+ // Java.g:26293:2: ( (a0_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator ) (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )? )
+ // Java.g:26294:2: (a0_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator ) (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ {
+ // Java.g:26294:2: (a0_0= parse_org_emftext_language_java_expressions_ConditionalExpression )
+ // Java.g:26295:3: a0_0= parse_org_emftext_language_java_expressions_ConditionalExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_expressions_AssignmentExpression17996);
+ a0_0=parse_org_emftext_language_java_expressions_ConditionalExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAssignmentExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ASSIGNMENT_EXPRESSION__CHILD), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_72_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13654);
+ addExpectedElement(13655);
+ addExpectedElement(13656);
+ addExpectedElement(13657);
+ addExpectedElement(13658);
+ addExpectedElement(13659);
+ addExpectedElement(13660);
+ addExpectedElement(13661);
+ addExpectedElement(13662);
+ addExpectedElement(13663);
+ addExpectedElement(13664);
+ addExpectedElement(13665);
+ addExpectedElement(13666);
+ addExpectedElement(13667);
+ addExpectedElement(13668);
+ addExpectedElement(13669);
+ addExpectedElement(13670);
+ addExpectedElement(13671);
+ addExpectedElement(13672);
+ addExpectedElement(13673);
+ addExpectedElement(13674);
+ addExpectedElement(13675);
+ addExpectedElement(13676);
+ addExpectedElement(13677);
+ addExpectedElement(13678);
+ addExpectedElement(13679);
+ addExpectedElement(13680);
+ addExpectedElement(13681);
+ addExpectedElement(13682);
+ addExpectedElement(13683);
+ addExpectedElement(13684);
+ addExpectedElement(13685);
+ addExpectedElement(13686);
+ addExpectedElement(13687);
+ addExpectedElement(13688);
+ addExpectedElement(13689);
+ addExpectedElement(13690);
+ addExpectedElement(13691);
+ addExpectedElement(13692);
+ addExpectedElement(13693);
+ addExpectedElement(13694);
+ addExpectedElement(13695);
+ addExpectedElement(13696);
+ addExpectedElement(13697);
+ addExpectedElement(13698);
+ addExpectedElement(13699);
+ }
+
+ // Java.g:26365:2: ( ( (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator ) (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) ) )?
+ int alt194=2;
+ int LA194_0 = input.LA(1);
+
+ if ( (LA194_0==25||LA194_0==29||LA194_0==32||LA194_0==36||LA194_0==40||(LA194_0 >= 43 && LA194_0 <= 44)||LA194_0==46||LA194_0==52||LA194_0==55||LA194_0==107) ) {
+ alt194=1;
+ }
+ switch (alt194) {
+ case 1 :
+ // Java.g:26366:3: ( (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator ) (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ {
+ // Java.g:26366:3: ( (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator ) (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) )
+ // Java.g:26367:4: (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator ) (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ {
+ // Java.g:26367:4: (a1_0= parse_org_emftext_language_java_operators_AssignmentOperator )
+ // Java.g:26368:5: a1_0= parse_org_emftext_language_java_operators_AssignmentOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentOperator_in_parse_org_emftext_language_java_expressions_AssignmentExpression18029);
+ a1_0=parse_org_emftext_language_java_operators_AssignmentOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAssignmentExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ASSIGNMENT_EXPRESSION__ASSIGNMENT_OPERATOR), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_72_0_0_1_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13700);
+ addExpectedElement(13701);
+ addExpectedElement(13702);
+ addExpectedElement(13703);
+ addExpectedElement(13704);
+ addExpectedElement(13705);
+ addExpectedElement(13706);
+ addExpectedElement(13707);
+ addExpectedElement(13708);
+ addExpectedElement(13709);
+ addExpectedElement(13710);
+ addExpectedElement(13711);
+ addExpectedElement(13712);
+ addExpectedElement(13713);
+ addExpectedElement(13714);
+ addExpectedElement(13715);
+ addExpectedElement(13716);
+ addExpectedElement(13717);
+ addExpectedElement(13718);
+ addExpectedElement(13719);
+ addExpectedElement(13720);
+ addExpectedElement(13721);
+ addExpectedElement(13722);
+ addExpectedElement(13723);
+ addExpectedElement(13724);
+ addExpectedElement(13725);
+ addExpectedElement(13726);
+ addExpectedElement(13727);
+ addExpectedElement(13728);
+ addExpectedElement(13729);
+ addExpectedElement(13730);
+ addExpectedElement(13731);
+ addExpectedElement(13732);
+ addExpectedElement(13733);
+ addExpectedElement(13734);
+ addExpectedElement(13735);
+ addExpectedElement(13736);
+ addExpectedElement(13737);
+ addExpectedElement(13738);
+ addExpectedElement(13739);
+ addExpectedElement(13740);
+ addExpectedElement(13741);
+ addExpectedElement(13742);
+ }
+
+ // Java.g:26435:4: (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:26436:5: a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_AssignmentExpression18063);
+ a2_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAssignmentExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.ASSIGNMENT_EXPRESSION__VALUE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_72_0_0_1_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13743);
+ addExpectedElement(13744);
+ addExpectedElement(13745);
+ addExpectedElement(13746);
+ addExpectedElement(13747);
+ addExpectedElement(13748);
+ addExpectedElement(13749);
+ addExpectedElement(13750);
+ addExpectedElement(13751);
+ addExpectedElement(13752);
+ addExpectedElement(13753);
+ addExpectedElement(13754);
+ addExpectedElement(13755);
+ addExpectedElement(13756);
+ addExpectedElement(13757);
+ addExpectedElement(13758);
+ addExpectedElement(13759);
+ addExpectedElement(13760);
+ addExpectedElement(13761);
+ addExpectedElement(13762);
+ addExpectedElement(13763);
+ addExpectedElement(13764);
+ addExpectedElement(13765);
+ addExpectedElement(13766);
+ addExpectedElement(13767);
+ addExpectedElement(13768);
+ addExpectedElement(13769);
+ addExpectedElement(13770);
+ addExpectedElement(13771);
+ addExpectedElement(13772);
+ addExpectedElement(13773);
+ addExpectedElement(13774);
+ addExpectedElement(13775);
+ addExpectedElement(13776);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13777);
+ addExpectedElement(13778);
+ addExpectedElement(13779);
+ addExpectedElement(13780);
+ addExpectedElement(13781);
+ addExpectedElement(13782);
+ addExpectedElement(13783);
+ addExpectedElement(13784);
+ addExpectedElement(13785);
+ addExpectedElement(13786);
+ addExpectedElement(13787);
+ addExpectedElement(13788);
+ addExpectedElement(13789);
+ addExpectedElement(13790);
+ addExpectedElement(13791);
+ addExpectedElement(13792);
+ addExpectedElement(13793);
+ addExpectedElement(13794);
+ addExpectedElement(13795);
+ addExpectedElement(13796);
+ addExpectedElement(13797);
+ addExpectedElement(13798);
+ addExpectedElement(13799);
+ addExpectedElement(13800);
+ addExpectedElement(13801);
+ addExpectedElement(13802);
+ addExpectedElement(13803);
+ addExpectedElement(13804);
+ addExpectedElement(13805);
+ addExpectedElement(13806);
+ addExpectedElement(13807);
+ addExpectedElement(13808);
+ addExpectedElement(13809);
+ addExpectedElement(13810);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 74, parse_org_emftext_language_java_expressions_AssignmentExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_AssignmentExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_ConditionalExpression"
+ // Java.g:26536:1: parse_org_emftext_language_java_expressions_ConditionalExpression returns [org.emftext.language.java.expressions.ConditionalExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_ConditionalOrExpression ) ( (a1= '?' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) ) )? ;
+ public final org.emftext.language.java.expressions.ConditionalExpression parse_org_emftext_language_java_expressions_ConditionalExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.ConditionalExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_ConditionalExpression_StartIndex = input.index();
+
+ Token a1=null;
+ Token a3=null;
+ org.emftext.language.java.expressions.ConditionalOrExpression a0_0 =null;
+
+ org.emftext.language.java.expressions.AssignmentExpression a2_0 =null;
+
+ org.emftext.language.java.expressions.ConditionalExpression a4_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 75) ) { return element; }
+
+ // Java.g:26539:2: ( (a0_0= parse_org_emftext_language_java_expressions_ConditionalOrExpression ) ( (a1= '?' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) ) )? )
+ // Java.g:26540:2: (a0_0= parse_org_emftext_language_java_expressions_ConditionalOrExpression ) ( (a1= '?' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) ) )?
+ {
+ // Java.g:26540:2: (a0_0= parse_org_emftext_language_java_expressions_ConditionalOrExpression )
+ // Java.g:26541:3: a0_0= parse_org_emftext_language_java_expressions_ConditionalOrExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ConditionalOrExpression_in_parse_org_emftext_language_java_expressions_ConditionalExpression18123);
+ a0_0=parse_org_emftext_language_java_expressions_ConditionalOrExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_EXPRESSION__CHILD), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_73_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13811);
+ addExpectedElement(13812);
+ addExpectedElement(13813);
+ addExpectedElement(13814);
+ addExpectedElement(13815);
+ addExpectedElement(13816);
+ addExpectedElement(13817);
+ addExpectedElement(13818);
+ addExpectedElement(13819);
+ addExpectedElement(13820);
+ addExpectedElement(13821);
+ addExpectedElement(13822);
+ addExpectedElement(13823);
+ addExpectedElement(13824);
+ addExpectedElement(13825);
+ addExpectedElement(13826);
+ addExpectedElement(13827);
+ addExpectedElement(13828);
+ addExpectedElement(13829);
+ addExpectedElement(13830);
+ addExpectedElement(13831);
+ addExpectedElement(13832);
+ addExpectedElement(13833);
+ addExpectedElement(13834);
+ addExpectedElement(13835);
+ addExpectedElement(13836);
+ addExpectedElement(13837);
+ addExpectedElement(13838);
+ addExpectedElement(13839);
+ addExpectedElement(13840);
+ addExpectedElement(13841);
+ addExpectedElement(13842);
+ addExpectedElement(13843);
+ addExpectedElement(13844);
+ addExpectedElement(13845);
+ addExpectedElement(13846);
+ addExpectedElement(13847);
+ addExpectedElement(13848);
+ addExpectedElement(13849);
+ addExpectedElement(13850);
+ addExpectedElement(13851);
+ addExpectedElement(13852);
+ addExpectedElement(13853);
+ addExpectedElement(13854);
+ addExpectedElement(13855);
+ addExpectedElement(13856);
+ addExpectedElement(13857);
+ addExpectedElement(13858);
+ addExpectedElement(13859);
+ addExpectedElement(13860);
+ }
+
+ // Java.g:26615:2: ( (a1= '?' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) ) )?
+ int alt195=2;
+ int LA195_0 = input.LA(1);
+
+ if ( (LA195_0==47) ) {
+ alt195=1;
+ }
+ switch (alt195) {
+ case 1 :
+ // Java.g:26616:3: (a1= '?' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) )
+ {
+ // Java.g:26616:3: (a1= '?' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression ) )
+ // Java.g:26617:4: a1= '?' (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a3= ':' (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression )
+ {
+ a1=(Token)match(input,47,FOLLOW_47_in_parse_org_emftext_language_java_expressions_ConditionalExpression18150); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_73_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13861);
+ addExpectedElement(13862);
+ addExpectedElement(13863);
+ addExpectedElement(13864);
+ addExpectedElement(13865);
+ addExpectedElement(13866);
+ addExpectedElement(13867);
+ addExpectedElement(13868);
+ addExpectedElement(13869);
+ addExpectedElement(13870);
+ addExpectedElement(13871);
+ addExpectedElement(13872);
+ addExpectedElement(13873);
+ addExpectedElement(13874);
+ addExpectedElement(13875);
+ addExpectedElement(13876);
+ addExpectedElement(13877);
+ addExpectedElement(13878);
+ addExpectedElement(13879);
+ addExpectedElement(13880);
+ addExpectedElement(13881);
+ addExpectedElement(13882);
+ addExpectedElement(13883);
+ addExpectedElement(13884);
+ addExpectedElement(13885);
+ addExpectedElement(13886);
+ addExpectedElement(13887);
+ addExpectedElement(13888);
+ addExpectedElement(13889);
+ addExpectedElement(13890);
+ addExpectedElement(13891);
+ addExpectedElement(13892);
+ addExpectedElement(13893);
+ addExpectedElement(13894);
+ addExpectedElement(13895);
+ addExpectedElement(13896);
+ addExpectedElement(13897);
+ addExpectedElement(13898);
+ addExpectedElement(13899);
+ addExpectedElement(13900);
+ addExpectedElement(13901);
+ addExpectedElement(13902);
+ addExpectedElement(13903);
+ }
+
+ // Java.g:26673:4: (a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:26674:5: a2_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_ConditionalExpression18176);
+ a2_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_EXPRESSION__EXPRESSION_IF), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_73_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13904);
+ }
+
+ a3=(Token)match(input,41,FOLLOW_41_in_parse_org_emftext_language_java_expressions_ConditionalExpression18204); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_73_0_0_1_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13905);
+ addExpectedElement(13906);
+ addExpectedElement(13907);
+ addExpectedElement(13908);
+ addExpectedElement(13909);
+ addExpectedElement(13910);
+ addExpectedElement(13911);
+ addExpectedElement(13912);
+ addExpectedElement(13913);
+ addExpectedElement(13914);
+ addExpectedElement(13915);
+ addExpectedElement(13916);
+ addExpectedElement(13917);
+ addExpectedElement(13918);
+ addExpectedElement(13919);
+ addExpectedElement(13920);
+ addExpectedElement(13921);
+ addExpectedElement(13922);
+ addExpectedElement(13923);
+ addExpectedElement(13924);
+ addExpectedElement(13925);
+ addExpectedElement(13926);
+ addExpectedElement(13927);
+ addExpectedElement(13928);
+ addExpectedElement(13929);
+ addExpectedElement(13930);
+ addExpectedElement(13931);
+ addExpectedElement(13932);
+ addExpectedElement(13933);
+ addExpectedElement(13934);
+ addExpectedElement(13935);
+ addExpectedElement(13936);
+ addExpectedElement(13937);
+ addExpectedElement(13938);
+ addExpectedElement(13939);
+ addExpectedElement(13940);
+ addExpectedElement(13941);
+ addExpectedElement(13942);
+ addExpectedElement(13943);
+ addExpectedElement(13944);
+ addExpectedElement(13945);
+ addExpectedElement(13946);
+ addExpectedElement(13947);
+ }
+
+ // Java.g:26755:4: (a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression )
+ // Java.g:26756:5: a4_0= parse_org_emftext_language_java_expressions_ConditionalExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_expressions_ConditionalExpression18230);
+ a4_0=parse_org_emftext_language_java_expressions_ConditionalExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalExpression();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_EXPRESSION__EXPRESSION_ELSE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_73_0_0_1_0_0_3, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13948);
+ addExpectedElement(13949);
+ addExpectedElement(13950);
+ addExpectedElement(13951);
+ addExpectedElement(13952);
+ addExpectedElement(13953);
+ addExpectedElement(13954);
+ addExpectedElement(13955);
+ addExpectedElement(13956);
+ addExpectedElement(13957);
+ addExpectedElement(13958);
+ addExpectedElement(13959);
+ addExpectedElement(13960);
+ addExpectedElement(13961);
+ addExpectedElement(13962);
+ addExpectedElement(13963);
+ addExpectedElement(13964);
+ addExpectedElement(13965);
+ addExpectedElement(13966);
+ addExpectedElement(13967);
+ addExpectedElement(13968);
+ addExpectedElement(13969);
+ addExpectedElement(13970);
+ addExpectedElement(13971);
+ addExpectedElement(13972);
+ addExpectedElement(13973);
+ addExpectedElement(13974);
+ addExpectedElement(13975);
+ addExpectedElement(13976);
+ addExpectedElement(13977);
+ addExpectedElement(13978);
+ addExpectedElement(13979);
+ addExpectedElement(13980);
+ addExpectedElement(13981);
+ addExpectedElement(13982);
+ addExpectedElement(13983);
+ addExpectedElement(13984);
+ addExpectedElement(13985);
+ addExpectedElement(13986);
+ addExpectedElement(13987);
+ addExpectedElement(13988);
+ addExpectedElement(13989);
+ addExpectedElement(13990);
+ addExpectedElement(13991);
+ addExpectedElement(13992);
+ addExpectedElement(13993);
+ addExpectedElement(13994);
+ addExpectedElement(13995);
+ addExpectedElement(13996);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(13997);
+ addExpectedElement(13998);
+ addExpectedElement(13999);
+ addExpectedElement(14000);
+ addExpectedElement(14001);
+ addExpectedElement(14002);
+ addExpectedElement(14003);
+ addExpectedElement(14004);
+ addExpectedElement(14005);
+ addExpectedElement(14006);
+ addExpectedElement(14007);
+ addExpectedElement(14008);
+ addExpectedElement(14009);
+ addExpectedElement(14010);
+ addExpectedElement(14011);
+ addExpectedElement(14012);
+ addExpectedElement(14013);
+ addExpectedElement(14014);
+ addExpectedElement(14015);
+ addExpectedElement(14016);
+ addExpectedElement(14017);
+ addExpectedElement(14018);
+ addExpectedElement(14019);
+ addExpectedElement(14020);
+ addExpectedElement(14021);
+ addExpectedElement(14022);
+ addExpectedElement(14023);
+ addExpectedElement(14024);
+ addExpectedElement(14025);
+ addExpectedElement(14026);
+ addExpectedElement(14027);
+ addExpectedElement(14028);
+ addExpectedElement(14029);
+ addExpectedElement(14030);
+ addExpectedElement(14031);
+ addExpectedElement(14032);
+ addExpectedElement(14033);
+ addExpectedElement(14034);
+ addExpectedElement(14035);
+ addExpectedElement(14036);
+ addExpectedElement(14037);
+ addExpectedElement(14038);
+ addExpectedElement(14039);
+ addExpectedElement(14040);
+ addExpectedElement(14041);
+ addExpectedElement(14042);
+ addExpectedElement(14043);
+ addExpectedElement(14044);
+ addExpectedElement(14045);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 75, parse_org_emftext_language_java_expressions_ConditionalExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_ConditionalExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_ConditionalOrExpression"
+ // Java.g:26886:1: parse_org_emftext_language_java_expressions_ConditionalOrExpression returns [org.emftext.language.java.expressions.ConditionalOrExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) ( (a1= '||' (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.ConditionalOrExpression parse_org_emftext_language_java_expressions_ConditionalOrExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.ConditionalOrExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_ConditionalOrExpression_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.ConditionalAndExpression a0_0 =null;
+
+ org.emftext.language.java.expressions.ConditionalAndExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 76) ) { return element; }
+
+ // Java.g:26889:2: ( (a0_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) ( (a1= '||' (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) ) )* )
+ // Java.g:26890:2: (a0_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) ( (a1= '||' (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) ) )*
+ {
+ // Java.g:26890:2: (a0_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression )
+ // Java.g:26891:3: a0_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ConditionalAndExpression_in_parse_org_emftext_language_java_expressions_ConditionalOrExpression18290);
+ a0_0=parse_org_emftext_language_java_expressions_ConditionalAndExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalOrExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_OR_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_74_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14046);
+ addExpectedElement(14047);
+ addExpectedElement(14048);
+ addExpectedElement(14049);
+ addExpectedElement(14050);
+ addExpectedElement(14051);
+ addExpectedElement(14052);
+ addExpectedElement(14053);
+ addExpectedElement(14054);
+ addExpectedElement(14055);
+ addExpectedElement(14056);
+ addExpectedElement(14057);
+ addExpectedElement(14058);
+ addExpectedElement(14059);
+ addExpectedElement(14060);
+ addExpectedElement(14061);
+ addExpectedElement(14062);
+ addExpectedElement(14063);
+ addExpectedElement(14064);
+ addExpectedElement(14065);
+ addExpectedElement(14066);
+ addExpectedElement(14067);
+ addExpectedElement(14068);
+ addExpectedElement(14069);
+ addExpectedElement(14070);
+ addExpectedElement(14071);
+ addExpectedElement(14072);
+ addExpectedElement(14073);
+ addExpectedElement(14074);
+ addExpectedElement(14075);
+ addExpectedElement(14076);
+ addExpectedElement(14077);
+ addExpectedElement(14078);
+ addExpectedElement(14079);
+ addExpectedElement(14080);
+ addExpectedElement(14081);
+ addExpectedElement(14082);
+ addExpectedElement(14083);
+ addExpectedElement(14084);
+ addExpectedElement(14085);
+ addExpectedElement(14086);
+ addExpectedElement(14087);
+ addExpectedElement(14088);
+ addExpectedElement(14089);
+ addExpectedElement(14090);
+ addExpectedElement(14091);
+ addExpectedElement(14092);
+ addExpectedElement(14093);
+ addExpectedElement(14094);
+ addExpectedElement(14095);
+ }
+
+ // Java.g:26965:2: ( (a1= '||' (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) ) )*
+ loop196:
+ do {
+ int alt196=2;
+ int LA196_0 = input.LA(1);
+
+ if ( (LA196_0==108) ) {
+ alt196=1;
+ }
+
+
+ switch (alt196) {
+ case 1 :
+ // Java.g:26966:3: (a1= '||' (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) )
+ {
+ // Java.g:26966:3: (a1= '||' (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression ) )
+ // Java.g:26967:4: a1= '||' (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression )
+ {
+ a1=(Token)match(input,108,FOLLOW_108_in_parse_org_emftext_language_java_expressions_ConditionalOrExpression18317); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalOrExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_74_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14096);
+ addExpectedElement(14097);
+ addExpectedElement(14098);
+ addExpectedElement(14099);
+ addExpectedElement(14100);
+ addExpectedElement(14101);
+ addExpectedElement(14102);
+ addExpectedElement(14103);
+ addExpectedElement(14104);
+ addExpectedElement(14105);
+ addExpectedElement(14106);
+ addExpectedElement(14107);
+ addExpectedElement(14108);
+ addExpectedElement(14109);
+ addExpectedElement(14110);
+ addExpectedElement(14111);
+ addExpectedElement(14112);
+ addExpectedElement(14113);
+ addExpectedElement(14114);
+ addExpectedElement(14115);
+ addExpectedElement(14116);
+ addExpectedElement(14117);
+ addExpectedElement(14118);
+ addExpectedElement(14119);
+ addExpectedElement(14120);
+ addExpectedElement(14121);
+ addExpectedElement(14122);
+ addExpectedElement(14123);
+ addExpectedElement(14124);
+ addExpectedElement(14125);
+ addExpectedElement(14126);
+ addExpectedElement(14127);
+ addExpectedElement(14128);
+ addExpectedElement(14129);
+ addExpectedElement(14130);
+ addExpectedElement(14131);
+ addExpectedElement(14132);
+ addExpectedElement(14133);
+ addExpectedElement(14134);
+ addExpectedElement(14135);
+ addExpectedElement(14136);
+ addExpectedElement(14137);
+ addExpectedElement(14138);
+ }
+
+ // Java.g:27023:4: (a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression )
+ // Java.g:27024:5: a2_0= parse_org_emftext_language_java_expressions_ConditionalAndExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ConditionalAndExpression_in_parse_org_emftext_language_java_expressions_ConditionalOrExpression18343);
+ a2_0=parse_org_emftext_language_java_expressions_ConditionalAndExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalOrExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_OR_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_74_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14139);
+ addExpectedElement(14140);
+ addExpectedElement(14141);
+ addExpectedElement(14142);
+ addExpectedElement(14143);
+ addExpectedElement(14144);
+ addExpectedElement(14145);
+ addExpectedElement(14146);
+ addExpectedElement(14147);
+ addExpectedElement(14148);
+ addExpectedElement(14149);
+ addExpectedElement(14150);
+ addExpectedElement(14151);
+ addExpectedElement(14152);
+ addExpectedElement(14153);
+ addExpectedElement(14154);
+ addExpectedElement(14155);
+ addExpectedElement(14156);
+ addExpectedElement(14157);
+ addExpectedElement(14158);
+ addExpectedElement(14159);
+ addExpectedElement(14160);
+ addExpectedElement(14161);
+ addExpectedElement(14162);
+ addExpectedElement(14163);
+ addExpectedElement(14164);
+ addExpectedElement(14165);
+ addExpectedElement(14166);
+ addExpectedElement(14167);
+ addExpectedElement(14168);
+ addExpectedElement(14169);
+ addExpectedElement(14170);
+ addExpectedElement(14171);
+ addExpectedElement(14172);
+ addExpectedElement(14173);
+ addExpectedElement(14174);
+ addExpectedElement(14175);
+ addExpectedElement(14176);
+ addExpectedElement(14177);
+ addExpectedElement(14178);
+ addExpectedElement(14179);
+ addExpectedElement(14180);
+ addExpectedElement(14181);
+ addExpectedElement(14182);
+ addExpectedElement(14183);
+ addExpectedElement(14184);
+ addExpectedElement(14185);
+ addExpectedElement(14186);
+ addExpectedElement(14187);
+ addExpectedElement(14188);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop196;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14189);
+ addExpectedElement(14190);
+ addExpectedElement(14191);
+ addExpectedElement(14192);
+ addExpectedElement(14193);
+ addExpectedElement(14194);
+ addExpectedElement(14195);
+ addExpectedElement(14196);
+ addExpectedElement(14197);
+ addExpectedElement(14198);
+ addExpectedElement(14199);
+ addExpectedElement(14200);
+ addExpectedElement(14201);
+ addExpectedElement(14202);
+ addExpectedElement(14203);
+ addExpectedElement(14204);
+ addExpectedElement(14205);
+ addExpectedElement(14206);
+ addExpectedElement(14207);
+ addExpectedElement(14208);
+ addExpectedElement(14209);
+ addExpectedElement(14210);
+ addExpectedElement(14211);
+ addExpectedElement(14212);
+ addExpectedElement(14213);
+ addExpectedElement(14214);
+ addExpectedElement(14215);
+ addExpectedElement(14216);
+ addExpectedElement(14217);
+ addExpectedElement(14218);
+ addExpectedElement(14219);
+ addExpectedElement(14220);
+ addExpectedElement(14221);
+ addExpectedElement(14222);
+ addExpectedElement(14223);
+ addExpectedElement(14224);
+ addExpectedElement(14225);
+ addExpectedElement(14226);
+ addExpectedElement(14227);
+ addExpectedElement(14228);
+ addExpectedElement(14229);
+ addExpectedElement(14230);
+ addExpectedElement(14231);
+ addExpectedElement(14232);
+ addExpectedElement(14233);
+ addExpectedElement(14234);
+ addExpectedElement(14235);
+ addExpectedElement(14236);
+ addExpectedElement(14237);
+ addExpectedElement(14238);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 76, parse_org_emftext_language_java_expressions_ConditionalOrExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_ConditionalOrExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_ConditionalAndExpression"
+ // Java.g:27156:1: parse_org_emftext_language_java_expressions_ConditionalAndExpression returns [org.emftext.language.java.expressions.ConditionalAndExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) ( (a1= '&&' (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.ConditionalAndExpression parse_org_emftext_language_java_expressions_ConditionalAndExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.ConditionalAndExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_ConditionalAndExpression_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.InclusiveOrExpression a0_0 =null;
+
+ org.emftext.language.java.expressions.InclusiveOrExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 77) ) { return element; }
+
+ // Java.g:27159:2: ( (a0_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) ( (a1= '&&' (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) ) )* )
+ // Java.g:27160:2: (a0_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) ( (a1= '&&' (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) ) )*
+ {
+ // Java.g:27160:2: (a0_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression )
+ // Java.g:27161:3: a0_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_InclusiveOrExpression_in_parse_org_emftext_language_java_expressions_ConditionalAndExpression18403);
+ a0_0=parse_org_emftext_language_java_expressions_InclusiveOrExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalAndExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_AND_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_75_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14239);
+ addExpectedElement(14240);
+ addExpectedElement(14241);
+ addExpectedElement(14242);
+ addExpectedElement(14243);
+ addExpectedElement(14244);
+ addExpectedElement(14245);
+ addExpectedElement(14246);
+ addExpectedElement(14247);
+ addExpectedElement(14248);
+ addExpectedElement(14249);
+ addExpectedElement(14250);
+ addExpectedElement(14251);
+ addExpectedElement(14252);
+ addExpectedElement(14253);
+ addExpectedElement(14254);
+ addExpectedElement(14255);
+ addExpectedElement(14256);
+ addExpectedElement(14257);
+ addExpectedElement(14258);
+ addExpectedElement(14259);
+ addExpectedElement(14260);
+ addExpectedElement(14261);
+ addExpectedElement(14262);
+ addExpectedElement(14263);
+ addExpectedElement(14264);
+ addExpectedElement(14265);
+ addExpectedElement(14266);
+ addExpectedElement(14267);
+ addExpectedElement(14268);
+ addExpectedElement(14269);
+ addExpectedElement(14270);
+ addExpectedElement(14271);
+ addExpectedElement(14272);
+ addExpectedElement(14273);
+ addExpectedElement(14274);
+ addExpectedElement(14275);
+ addExpectedElement(14276);
+ addExpectedElement(14277);
+ addExpectedElement(14278);
+ addExpectedElement(14279);
+ addExpectedElement(14280);
+ addExpectedElement(14281);
+ addExpectedElement(14282);
+ addExpectedElement(14283);
+ addExpectedElement(14284);
+ addExpectedElement(14285);
+ addExpectedElement(14286);
+ addExpectedElement(14287);
+ addExpectedElement(14288);
+ addExpectedElement(14289);
+ }
+
+ // Java.g:27236:2: ( (a1= '&&' (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) ) )*
+ loop197:
+ do {
+ int alt197=2;
+ int LA197_0 = input.LA(1);
+
+ if ( (LA197_0==23) ) {
+ alt197=1;
+ }
+
+
+ switch (alt197) {
+ case 1 :
+ // Java.g:27237:3: (a1= '&&' (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) )
+ {
+ // Java.g:27237:3: (a1= '&&' (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression ) )
+ // Java.g:27238:4: a1= '&&' (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression )
+ {
+ a1=(Token)match(input,23,FOLLOW_23_in_parse_org_emftext_language_java_expressions_ConditionalAndExpression18430); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalAndExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_75_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14290);
+ addExpectedElement(14291);
+ addExpectedElement(14292);
+ addExpectedElement(14293);
+ addExpectedElement(14294);
+ addExpectedElement(14295);
+ addExpectedElement(14296);
+ addExpectedElement(14297);
+ addExpectedElement(14298);
+ addExpectedElement(14299);
+ addExpectedElement(14300);
+ addExpectedElement(14301);
+ addExpectedElement(14302);
+ addExpectedElement(14303);
+ addExpectedElement(14304);
+ addExpectedElement(14305);
+ addExpectedElement(14306);
+ addExpectedElement(14307);
+ addExpectedElement(14308);
+ addExpectedElement(14309);
+ addExpectedElement(14310);
+ addExpectedElement(14311);
+ addExpectedElement(14312);
+ addExpectedElement(14313);
+ addExpectedElement(14314);
+ addExpectedElement(14315);
+ addExpectedElement(14316);
+ addExpectedElement(14317);
+ addExpectedElement(14318);
+ addExpectedElement(14319);
+ addExpectedElement(14320);
+ addExpectedElement(14321);
+ addExpectedElement(14322);
+ addExpectedElement(14323);
+ addExpectedElement(14324);
+ addExpectedElement(14325);
+ addExpectedElement(14326);
+ addExpectedElement(14327);
+ addExpectedElement(14328);
+ addExpectedElement(14329);
+ addExpectedElement(14330);
+ addExpectedElement(14331);
+ addExpectedElement(14332);
+ }
+
+ // Java.g:27294:4: (a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression )
+ // Java.g:27295:5: a2_0= parse_org_emftext_language_java_expressions_InclusiveOrExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_InclusiveOrExpression_in_parse_org_emftext_language_java_expressions_ConditionalAndExpression18456);
+ a2_0=parse_org_emftext_language_java_expressions_InclusiveOrExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createConditionalAndExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.CONDITIONAL_AND_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_75_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14333);
+ addExpectedElement(14334);
+ addExpectedElement(14335);
+ addExpectedElement(14336);
+ addExpectedElement(14337);
+ addExpectedElement(14338);
+ addExpectedElement(14339);
+ addExpectedElement(14340);
+ addExpectedElement(14341);
+ addExpectedElement(14342);
+ addExpectedElement(14343);
+ addExpectedElement(14344);
+ addExpectedElement(14345);
+ addExpectedElement(14346);
+ addExpectedElement(14347);
+ addExpectedElement(14348);
+ addExpectedElement(14349);
+ addExpectedElement(14350);
+ addExpectedElement(14351);
+ addExpectedElement(14352);
+ addExpectedElement(14353);
+ addExpectedElement(14354);
+ addExpectedElement(14355);
+ addExpectedElement(14356);
+ addExpectedElement(14357);
+ addExpectedElement(14358);
+ addExpectedElement(14359);
+ addExpectedElement(14360);
+ addExpectedElement(14361);
+ addExpectedElement(14362);
+ addExpectedElement(14363);
+ addExpectedElement(14364);
+ addExpectedElement(14365);
+ addExpectedElement(14366);
+ addExpectedElement(14367);
+ addExpectedElement(14368);
+ addExpectedElement(14369);
+ addExpectedElement(14370);
+ addExpectedElement(14371);
+ addExpectedElement(14372);
+ addExpectedElement(14373);
+ addExpectedElement(14374);
+ addExpectedElement(14375);
+ addExpectedElement(14376);
+ addExpectedElement(14377);
+ addExpectedElement(14378);
+ addExpectedElement(14379);
+ addExpectedElement(14380);
+ addExpectedElement(14381);
+ addExpectedElement(14382);
+ addExpectedElement(14383);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop197;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14384);
+ addExpectedElement(14385);
+ addExpectedElement(14386);
+ addExpectedElement(14387);
+ addExpectedElement(14388);
+ addExpectedElement(14389);
+ addExpectedElement(14390);
+ addExpectedElement(14391);
+ addExpectedElement(14392);
+ addExpectedElement(14393);
+ addExpectedElement(14394);
+ addExpectedElement(14395);
+ addExpectedElement(14396);
+ addExpectedElement(14397);
+ addExpectedElement(14398);
+ addExpectedElement(14399);
+ addExpectedElement(14400);
+ addExpectedElement(14401);
+ addExpectedElement(14402);
+ addExpectedElement(14403);
+ addExpectedElement(14404);
+ addExpectedElement(14405);
+ addExpectedElement(14406);
+ addExpectedElement(14407);
+ addExpectedElement(14408);
+ addExpectedElement(14409);
+ addExpectedElement(14410);
+ addExpectedElement(14411);
+ addExpectedElement(14412);
+ addExpectedElement(14413);
+ addExpectedElement(14414);
+ addExpectedElement(14415);
+ addExpectedElement(14416);
+ addExpectedElement(14417);
+ addExpectedElement(14418);
+ addExpectedElement(14419);
+ addExpectedElement(14420);
+ addExpectedElement(14421);
+ addExpectedElement(14422);
+ addExpectedElement(14423);
+ addExpectedElement(14424);
+ addExpectedElement(14425);
+ addExpectedElement(14426);
+ addExpectedElement(14427);
+ addExpectedElement(14428);
+ addExpectedElement(14429);
+ addExpectedElement(14430);
+ addExpectedElement(14431);
+ addExpectedElement(14432);
+ addExpectedElement(14433);
+ addExpectedElement(14434);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 77, parse_org_emftext_language_java_expressions_ConditionalAndExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_ConditionalAndExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_InclusiveOrExpression"
+ // Java.g:27429:1: parse_org_emftext_language_java_expressions_InclusiveOrExpression returns [org.emftext.language.java.expressions.InclusiveOrExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) ( (a1= '|' (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.InclusiveOrExpression parse_org_emftext_language_java_expressions_InclusiveOrExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.InclusiveOrExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_InclusiveOrExpression_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.ExclusiveOrExpression a0_0 =null;
+
+ org.emftext.language.java.expressions.ExclusiveOrExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 78) ) { return element; }
+
+ // Java.g:27432:2: ( (a0_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) ( (a1= '|' (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) ) )* )
+ // Java.g:27433:2: (a0_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) ( (a1= '|' (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) ) )*
+ {
+ // Java.g:27433:2: (a0_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression )
+ // Java.g:27434:3: a0_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ExclusiveOrExpression_in_parse_org_emftext_language_java_expressions_InclusiveOrExpression18516);
+ a0_0=parse_org_emftext_language_java_expressions_ExclusiveOrExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createInclusiveOrExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.INCLUSIVE_OR_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_76_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14435);
+ addExpectedElement(14436);
+ addExpectedElement(14437);
+ addExpectedElement(14438);
+ addExpectedElement(14439);
+ addExpectedElement(14440);
+ addExpectedElement(14441);
+ addExpectedElement(14442);
+ addExpectedElement(14443);
+ addExpectedElement(14444);
+ addExpectedElement(14445);
+ addExpectedElement(14446);
+ addExpectedElement(14447);
+ addExpectedElement(14448);
+ addExpectedElement(14449);
+ addExpectedElement(14450);
+ addExpectedElement(14451);
+ addExpectedElement(14452);
+ addExpectedElement(14453);
+ addExpectedElement(14454);
+ addExpectedElement(14455);
+ addExpectedElement(14456);
+ addExpectedElement(14457);
+ addExpectedElement(14458);
+ addExpectedElement(14459);
+ addExpectedElement(14460);
+ addExpectedElement(14461);
+ addExpectedElement(14462);
+ addExpectedElement(14463);
+ addExpectedElement(14464);
+ addExpectedElement(14465);
+ addExpectedElement(14466);
+ addExpectedElement(14467);
+ addExpectedElement(14468);
+ addExpectedElement(14469);
+ addExpectedElement(14470);
+ addExpectedElement(14471);
+ addExpectedElement(14472);
+ addExpectedElement(14473);
+ addExpectedElement(14474);
+ addExpectedElement(14475);
+ addExpectedElement(14476);
+ addExpectedElement(14477);
+ addExpectedElement(14478);
+ addExpectedElement(14479);
+ addExpectedElement(14480);
+ addExpectedElement(14481);
+ addExpectedElement(14482);
+ addExpectedElement(14483);
+ addExpectedElement(14484);
+ addExpectedElement(14485);
+ addExpectedElement(14486);
+ }
+
+ // Java.g:27510:2: ( (a1= '|' (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) ) )*
+ loop198:
+ do {
+ int alt198=2;
+ int LA198_0 = input.LA(1);
+
+ if ( (LA198_0==106) ) {
+ alt198=1;
+ }
+
+
+ switch (alt198) {
+ case 1 :
+ // Java.g:27511:3: (a1= '|' (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) )
+ {
+ // Java.g:27511:3: (a1= '|' (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression ) )
+ // Java.g:27512:4: a1= '|' (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression )
+ {
+ a1=(Token)match(input,106,FOLLOW_106_in_parse_org_emftext_language_java_expressions_InclusiveOrExpression18543); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createInclusiveOrExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_76_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14487);
+ addExpectedElement(14488);
+ addExpectedElement(14489);
+ addExpectedElement(14490);
+ addExpectedElement(14491);
+ addExpectedElement(14492);
+ addExpectedElement(14493);
+ addExpectedElement(14494);
+ addExpectedElement(14495);
+ addExpectedElement(14496);
+ addExpectedElement(14497);
+ addExpectedElement(14498);
+ addExpectedElement(14499);
+ addExpectedElement(14500);
+ addExpectedElement(14501);
+ addExpectedElement(14502);
+ addExpectedElement(14503);
+ addExpectedElement(14504);
+ addExpectedElement(14505);
+ addExpectedElement(14506);
+ addExpectedElement(14507);
+ addExpectedElement(14508);
+ addExpectedElement(14509);
+ addExpectedElement(14510);
+ addExpectedElement(14511);
+ addExpectedElement(14512);
+ addExpectedElement(14513);
+ addExpectedElement(14514);
+ addExpectedElement(14515);
+ addExpectedElement(14516);
+ addExpectedElement(14517);
+ addExpectedElement(14518);
+ addExpectedElement(14519);
+ addExpectedElement(14520);
+ addExpectedElement(14521);
+ addExpectedElement(14522);
+ addExpectedElement(14523);
+ addExpectedElement(14524);
+ addExpectedElement(14525);
+ addExpectedElement(14526);
+ addExpectedElement(14527);
+ addExpectedElement(14528);
+ addExpectedElement(14529);
+ }
+
+ // Java.g:27568:4: (a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression )
+ // Java.g:27569:5: a2_0= parse_org_emftext_language_java_expressions_ExclusiveOrExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ExclusiveOrExpression_in_parse_org_emftext_language_java_expressions_InclusiveOrExpression18569);
+ a2_0=parse_org_emftext_language_java_expressions_ExclusiveOrExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createInclusiveOrExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.INCLUSIVE_OR_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_76_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14530);
+ addExpectedElement(14531);
+ addExpectedElement(14532);
+ addExpectedElement(14533);
+ addExpectedElement(14534);
+ addExpectedElement(14535);
+ addExpectedElement(14536);
+ addExpectedElement(14537);
+ addExpectedElement(14538);
+ addExpectedElement(14539);
+ addExpectedElement(14540);
+ addExpectedElement(14541);
+ addExpectedElement(14542);
+ addExpectedElement(14543);
+ addExpectedElement(14544);
+ addExpectedElement(14545);
+ addExpectedElement(14546);
+ addExpectedElement(14547);
+ addExpectedElement(14548);
+ addExpectedElement(14549);
+ addExpectedElement(14550);
+ addExpectedElement(14551);
+ addExpectedElement(14552);
+ addExpectedElement(14553);
+ addExpectedElement(14554);
+ addExpectedElement(14555);
+ addExpectedElement(14556);
+ addExpectedElement(14557);
+ addExpectedElement(14558);
+ addExpectedElement(14559);
+ addExpectedElement(14560);
+ addExpectedElement(14561);
+ addExpectedElement(14562);
+ addExpectedElement(14563);
+ addExpectedElement(14564);
+ addExpectedElement(14565);
+ addExpectedElement(14566);
+ addExpectedElement(14567);
+ addExpectedElement(14568);
+ addExpectedElement(14569);
+ addExpectedElement(14570);
+ addExpectedElement(14571);
+ addExpectedElement(14572);
+ addExpectedElement(14573);
+ addExpectedElement(14574);
+ addExpectedElement(14575);
+ addExpectedElement(14576);
+ addExpectedElement(14577);
+ addExpectedElement(14578);
+ addExpectedElement(14579);
+ addExpectedElement(14580);
+ addExpectedElement(14581);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop198;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14582);
+ addExpectedElement(14583);
+ addExpectedElement(14584);
+ addExpectedElement(14585);
+ addExpectedElement(14586);
+ addExpectedElement(14587);
+ addExpectedElement(14588);
+ addExpectedElement(14589);
+ addExpectedElement(14590);
+ addExpectedElement(14591);
+ addExpectedElement(14592);
+ addExpectedElement(14593);
+ addExpectedElement(14594);
+ addExpectedElement(14595);
+ addExpectedElement(14596);
+ addExpectedElement(14597);
+ addExpectedElement(14598);
+ addExpectedElement(14599);
+ addExpectedElement(14600);
+ addExpectedElement(14601);
+ addExpectedElement(14602);
+ addExpectedElement(14603);
+ addExpectedElement(14604);
+ addExpectedElement(14605);
+ addExpectedElement(14606);
+ addExpectedElement(14607);
+ addExpectedElement(14608);
+ addExpectedElement(14609);
+ addExpectedElement(14610);
+ addExpectedElement(14611);
+ addExpectedElement(14612);
+ addExpectedElement(14613);
+ addExpectedElement(14614);
+ addExpectedElement(14615);
+ addExpectedElement(14616);
+ addExpectedElement(14617);
+ addExpectedElement(14618);
+ addExpectedElement(14619);
+ addExpectedElement(14620);
+ addExpectedElement(14621);
+ addExpectedElement(14622);
+ addExpectedElement(14623);
+ addExpectedElement(14624);
+ addExpectedElement(14625);
+ addExpectedElement(14626);
+ addExpectedElement(14627);
+ addExpectedElement(14628);
+ addExpectedElement(14629);
+ addExpectedElement(14630);
+ addExpectedElement(14631);
+ addExpectedElement(14632);
+ addExpectedElement(14633);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 78, parse_org_emftext_language_java_expressions_InclusiveOrExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_InclusiveOrExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_ExclusiveOrExpression"
+ // Java.g:27705:1: parse_org_emftext_language_java_expressions_ExclusiveOrExpression returns [org.emftext.language.java.expressions.ExclusiveOrExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_AndExpression ) ( (a1= '^' (a2_0= parse_org_emftext_language_java_expressions_AndExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.ExclusiveOrExpression parse_org_emftext_language_java_expressions_ExclusiveOrExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.ExclusiveOrExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_ExclusiveOrExpression_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.AndExpression a0_0 =null;
+
+ org.emftext.language.java.expressions.AndExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 79) ) { return element; }
+
+ // Java.g:27708:2: ( (a0_0= parse_org_emftext_language_java_expressions_AndExpression ) ( (a1= '^' (a2_0= parse_org_emftext_language_java_expressions_AndExpression ) ) )* )
+ // Java.g:27709:2: (a0_0= parse_org_emftext_language_java_expressions_AndExpression ) ( (a1= '^' (a2_0= parse_org_emftext_language_java_expressions_AndExpression ) ) )*
+ {
+ // Java.g:27709:2: (a0_0= parse_org_emftext_language_java_expressions_AndExpression )
+ // Java.g:27710:3: a0_0= parse_org_emftext_language_java_expressions_AndExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AndExpression_in_parse_org_emftext_language_java_expressions_ExclusiveOrExpression18629);
+ a0_0=parse_org_emftext_language_java_expressions_AndExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createExclusiveOrExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.EXCLUSIVE_OR_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_77_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14634);
+ addExpectedElement(14635);
+ addExpectedElement(14636);
+ addExpectedElement(14637);
+ addExpectedElement(14638);
+ addExpectedElement(14639);
+ addExpectedElement(14640);
+ addExpectedElement(14641);
+ addExpectedElement(14642);
+ addExpectedElement(14643);
+ addExpectedElement(14644);
+ addExpectedElement(14645);
+ addExpectedElement(14646);
+ addExpectedElement(14647);
+ addExpectedElement(14648);
+ addExpectedElement(14649);
+ addExpectedElement(14650);
+ addExpectedElement(14651);
+ addExpectedElement(14652);
+ addExpectedElement(14653);
+ addExpectedElement(14654);
+ addExpectedElement(14655);
+ addExpectedElement(14656);
+ addExpectedElement(14657);
+ addExpectedElement(14658);
+ addExpectedElement(14659);
+ addExpectedElement(14660);
+ addExpectedElement(14661);
+ addExpectedElement(14662);
+ addExpectedElement(14663);
+ addExpectedElement(14664);
+ addExpectedElement(14665);
+ addExpectedElement(14666);
+ addExpectedElement(14667);
+ addExpectedElement(14668);
+ addExpectedElement(14669);
+ addExpectedElement(14670);
+ addExpectedElement(14671);
+ addExpectedElement(14672);
+ addExpectedElement(14673);
+ addExpectedElement(14674);
+ addExpectedElement(14675);
+ addExpectedElement(14676);
+ addExpectedElement(14677);
+ addExpectedElement(14678);
+ addExpectedElement(14679);
+ addExpectedElement(14680);
+ addExpectedElement(14681);
+ addExpectedElement(14682);
+ addExpectedElement(14683);
+ addExpectedElement(14684);
+ addExpectedElement(14685);
+ addExpectedElement(14686);
+ }
+
+ // Java.g:27787:2: ( (a1= '^' (a2_0= parse_org_emftext_language_java_expressions_AndExpression ) ) )*
+ loop199:
+ do {
+ int alt199=2;
+ int LA199_0 = input.LA(1);
+
+ if ( (LA199_0==54) ) {
+ alt199=1;
+ }
+
+
+ switch (alt199) {
+ case 1 :
+ // Java.g:27788:3: (a1= '^' (a2_0= parse_org_emftext_language_java_expressions_AndExpression ) )
+ {
+ // Java.g:27788:3: (a1= '^' (a2_0= parse_org_emftext_language_java_expressions_AndExpression ) )
+ // Java.g:27789:4: a1= '^' (a2_0= parse_org_emftext_language_java_expressions_AndExpression )
+ {
+ a1=(Token)match(input,54,FOLLOW_54_in_parse_org_emftext_language_java_expressions_ExclusiveOrExpression18656); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createExclusiveOrExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_77_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14687);
+ addExpectedElement(14688);
+ addExpectedElement(14689);
+ addExpectedElement(14690);
+ addExpectedElement(14691);
+ addExpectedElement(14692);
+ addExpectedElement(14693);
+ addExpectedElement(14694);
+ addExpectedElement(14695);
+ addExpectedElement(14696);
+ addExpectedElement(14697);
+ addExpectedElement(14698);
+ addExpectedElement(14699);
+ addExpectedElement(14700);
+ addExpectedElement(14701);
+ addExpectedElement(14702);
+ addExpectedElement(14703);
+ addExpectedElement(14704);
+ addExpectedElement(14705);
+ addExpectedElement(14706);
+ addExpectedElement(14707);
+ addExpectedElement(14708);
+ addExpectedElement(14709);
+ addExpectedElement(14710);
+ addExpectedElement(14711);
+ addExpectedElement(14712);
+ addExpectedElement(14713);
+ addExpectedElement(14714);
+ addExpectedElement(14715);
+ addExpectedElement(14716);
+ addExpectedElement(14717);
+ addExpectedElement(14718);
+ addExpectedElement(14719);
+ addExpectedElement(14720);
+ addExpectedElement(14721);
+ addExpectedElement(14722);
+ addExpectedElement(14723);
+ addExpectedElement(14724);
+ addExpectedElement(14725);
+ addExpectedElement(14726);
+ addExpectedElement(14727);
+ addExpectedElement(14728);
+ addExpectedElement(14729);
+ }
+
+ // Java.g:27845:4: (a2_0= parse_org_emftext_language_java_expressions_AndExpression )
+ // Java.g:27846:5: a2_0= parse_org_emftext_language_java_expressions_AndExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AndExpression_in_parse_org_emftext_language_java_expressions_ExclusiveOrExpression18682);
+ a2_0=parse_org_emftext_language_java_expressions_AndExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createExclusiveOrExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.EXCLUSIVE_OR_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_77_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14730);
+ addExpectedElement(14731);
+ addExpectedElement(14732);
+ addExpectedElement(14733);
+ addExpectedElement(14734);
+ addExpectedElement(14735);
+ addExpectedElement(14736);
+ addExpectedElement(14737);
+ addExpectedElement(14738);
+ addExpectedElement(14739);
+ addExpectedElement(14740);
+ addExpectedElement(14741);
+ addExpectedElement(14742);
+ addExpectedElement(14743);
+ addExpectedElement(14744);
+ addExpectedElement(14745);
+ addExpectedElement(14746);
+ addExpectedElement(14747);
+ addExpectedElement(14748);
+ addExpectedElement(14749);
+ addExpectedElement(14750);
+ addExpectedElement(14751);
+ addExpectedElement(14752);
+ addExpectedElement(14753);
+ addExpectedElement(14754);
+ addExpectedElement(14755);
+ addExpectedElement(14756);
+ addExpectedElement(14757);
+ addExpectedElement(14758);
+ addExpectedElement(14759);
+ addExpectedElement(14760);
+ addExpectedElement(14761);
+ addExpectedElement(14762);
+ addExpectedElement(14763);
+ addExpectedElement(14764);
+ addExpectedElement(14765);
+ addExpectedElement(14766);
+ addExpectedElement(14767);
+ addExpectedElement(14768);
+ addExpectedElement(14769);
+ addExpectedElement(14770);
+ addExpectedElement(14771);
+ addExpectedElement(14772);
+ addExpectedElement(14773);
+ addExpectedElement(14774);
+ addExpectedElement(14775);
+ addExpectedElement(14776);
+ addExpectedElement(14777);
+ addExpectedElement(14778);
+ addExpectedElement(14779);
+ addExpectedElement(14780);
+ addExpectedElement(14781);
+ addExpectedElement(14782);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop199;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14783);
+ addExpectedElement(14784);
+ addExpectedElement(14785);
+ addExpectedElement(14786);
+ addExpectedElement(14787);
+ addExpectedElement(14788);
+ addExpectedElement(14789);
+ addExpectedElement(14790);
+ addExpectedElement(14791);
+ addExpectedElement(14792);
+ addExpectedElement(14793);
+ addExpectedElement(14794);
+ addExpectedElement(14795);
+ addExpectedElement(14796);
+ addExpectedElement(14797);
+ addExpectedElement(14798);
+ addExpectedElement(14799);
+ addExpectedElement(14800);
+ addExpectedElement(14801);
+ addExpectedElement(14802);
+ addExpectedElement(14803);
+ addExpectedElement(14804);
+ addExpectedElement(14805);
+ addExpectedElement(14806);
+ addExpectedElement(14807);
+ addExpectedElement(14808);
+ addExpectedElement(14809);
+ addExpectedElement(14810);
+ addExpectedElement(14811);
+ addExpectedElement(14812);
+ addExpectedElement(14813);
+ addExpectedElement(14814);
+ addExpectedElement(14815);
+ addExpectedElement(14816);
+ addExpectedElement(14817);
+ addExpectedElement(14818);
+ addExpectedElement(14819);
+ addExpectedElement(14820);
+ addExpectedElement(14821);
+ addExpectedElement(14822);
+ addExpectedElement(14823);
+ addExpectedElement(14824);
+ addExpectedElement(14825);
+ addExpectedElement(14826);
+ addExpectedElement(14827);
+ addExpectedElement(14828);
+ addExpectedElement(14829);
+ addExpectedElement(14830);
+ addExpectedElement(14831);
+ addExpectedElement(14832);
+ addExpectedElement(14833);
+ addExpectedElement(14834);
+ addExpectedElement(14835);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 79, parse_org_emftext_language_java_expressions_ExclusiveOrExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_ExclusiveOrExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_AndExpression"
+ // Java.g:27984:1: parse_org_emftext_language_java_expressions_AndExpression returns [org.emftext.language.java.expressions.AndExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_EqualityExpression ) ( (a1= '&' (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.AndExpression parse_org_emftext_language_java_expressions_AndExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.AndExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_AndExpression_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.EqualityExpression a0_0 =null;
+
+ org.emftext.language.java.expressions.EqualityExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 80) ) { return element; }
+
+ // Java.g:27987:2: ( (a0_0= parse_org_emftext_language_java_expressions_EqualityExpression ) ( (a1= '&' (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression ) ) )* )
+ // Java.g:27988:2: (a0_0= parse_org_emftext_language_java_expressions_EqualityExpression ) ( (a1= '&' (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression ) ) )*
+ {
+ // Java.g:27988:2: (a0_0= parse_org_emftext_language_java_expressions_EqualityExpression )
+ // Java.g:27989:3: a0_0= parse_org_emftext_language_java_expressions_EqualityExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_EqualityExpression_in_parse_org_emftext_language_java_expressions_AndExpression18742);
+ a0_0=parse_org_emftext_language_java_expressions_EqualityExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAndExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.AND_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_78_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14836);
+ addExpectedElement(14837);
+ addExpectedElement(14838);
+ addExpectedElement(14839);
+ addExpectedElement(14840);
+ addExpectedElement(14841);
+ addExpectedElement(14842);
+ addExpectedElement(14843);
+ addExpectedElement(14844);
+ addExpectedElement(14845);
+ addExpectedElement(14846);
+ addExpectedElement(14847);
+ addExpectedElement(14848);
+ addExpectedElement(14849);
+ addExpectedElement(14850);
+ addExpectedElement(14851);
+ addExpectedElement(14852);
+ addExpectedElement(14853);
+ addExpectedElement(14854);
+ addExpectedElement(14855);
+ addExpectedElement(14856);
+ addExpectedElement(14857);
+ addExpectedElement(14858);
+ addExpectedElement(14859);
+ addExpectedElement(14860);
+ addExpectedElement(14861);
+ addExpectedElement(14862);
+ addExpectedElement(14863);
+ addExpectedElement(14864);
+ addExpectedElement(14865);
+ addExpectedElement(14866);
+ addExpectedElement(14867);
+ addExpectedElement(14868);
+ addExpectedElement(14869);
+ addExpectedElement(14870);
+ addExpectedElement(14871);
+ addExpectedElement(14872);
+ addExpectedElement(14873);
+ addExpectedElement(14874);
+ addExpectedElement(14875);
+ addExpectedElement(14876);
+ addExpectedElement(14877);
+ addExpectedElement(14878);
+ addExpectedElement(14879);
+ addExpectedElement(14880);
+ addExpectedElement(14881);
+ addExpectedElement(14882);
+ addExpectedElement(14883);
+ addExpectedElement(14884);
+ addExpectedElement(14885);
+ addExpectedElement(14886);
+ addExpectedElement(14887);
+ addExpectedElement(14888);
+ addExpectedElement(14889);
+ }
+
+ // Java.g:28067:2: ( (a1= '&' (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression ) ) )*
+ loop200:
+ do {
+ int alt200=2;
+ int LA200_0 = input.LA(1);
+
+ if ( (LA200_0==24) ) {
+ alt200=1;
+ }
+
+
+ switch (alt200) {
+ case 1 :
+ // Java.g:28068:3: (a1= '&' (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression ) )
+ {
+ // Java.g:28068:3: (a1= '&' (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression ) )
+ // Java.g:28069:4: a1= '&' (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression )
+ {
+ a1=(Token)match(input,24,FOLLOW_24_in_parse_org_emftext_language_java_expressions_AndExpression18769); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAndExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_78_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14890);
+ addExpectedElement(14891);
+ addExpectedElement(14892);
+ addExpectedElement(14893);
+ addExpectedElement(14894);
+ addExpectedElement(14895);
+ addExpectedElement(14896);
+ addExpectedElement(14897);
+ addExpectedElement(14898);
+ addExpectedElement(14899);
+ addExpectedElement(14900);
+ addExpectedElement(14901);
+ addExpectedElement(14902);
+ addExpectedElement(14903);
+ addExpectedElement(14904);
+ addExpectedElement(14905);
+ addExpectedElement(14906);
+ addExpectedElement(14907);
+ addExpectedElement(14908);
+ addExpectedElement(14909);
+ addExpectedElement(14910);
+ addExpectedElement(14911);
+ addExpectedElement(14912);
+ addExpectedElement(14913);
+ addExpectedElement(14914);
+ addExpectedElement(14915);
+ addExpectedElement(14916);
+ addExpectedElement(14917);
+ addExpectedElement(14918);
+ addExpectedElement(14919);
+ addExpectedElement(14920);
+ addExpectedElement(14921);
+ addExpectedElement(14922);
+ addExpectedElement(14923);
+ addExpectedElement(14924);
+ addExpectedElement(14925);
+ addExpectedElement(14926);
+ addExpectedElement(14927);
+ addExpectedElement(14928);
+ addExpectedElement(14929);
+ addExpectedElement(14930);
+ addExpectedElement(14931);
+ addExpectedElement(14932);
+ }
+
+ // Java.g:28125:4: (a2_0= parse_org_emftext_language_java_expressions_EqualityExpression )
+ // Java.g:28126:5: a2_0= parse_org_emftext_language_java_expressions_EqualityExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_EqualityExpression_in_parse_org_emftext_language_java_expressions_AndExpression18795);
+ a2_0=parse_org_emftext_language_java_expressions_EqualityExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAndExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.AND_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_78_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14933);
+ addExpectedElement(14934);
+ addExpectedElement(14935);
+ addExpectedElement(14936);
+ addExpectedElement(14937);
+ addExpectedElement(14938);
+ addExpectedElement(14939);
+ addExpectedElement(14940);
+ addExpectedElement(14941);
+ addExpectedElement(14942);
+ addExpectedElement(14943);
+ addExpectedElement(14944);
+ addExpectedElement(14945);
+ addExpectedElement(14946);
+ addExpectedElement(14947);
+ addExpectedElement(14948);
+ addExpectedElement(14949);
+ addExpectedElement(14950);
+ addExpectedElement(14951);
+ addExpectedElement(14952);
+ addExpectedElement(14953);
+ addExpectedElement(14954);
+ addExpectedElement(14955);
+ addExpectedElement(14956);
+ addExpectedElement(14957);
+ addExpectedElement(14958);
+ addExpectedElement(14959);
+ addExpectedElement(14960);
+ addExpectedElement(14961);
+ addExpectedElement(14962);
+ addExpectedElement(14963);
+ addExpectedElement(14964);
+ addExpectedElement(14965);
+ addExpectedElement(14966);
+ addExpectedElement(14967);
+ addExpectedElement(14968);
+ addExpectedElement(14969);
+ addExpectedElement(14970);
+ addExpectedElement(14971);
+ addExpectedElement(14972);
+ addExpectedElement(14973);
+ addExpectedElement(14974);
+ addExpectedElement(14975);
+ addExpectedElement(14976);
+ addExpectedElement(14977);
+ addExpectedElement(14978);
+ addExpectedElement(14979);
+ addExpectedElement(14980);
+ addExpectedElement(14981);
+ addExpectedElement(14982);
+ addExpectedElement(14983);
+ addExpectedElement(14984);
+ addExpectedElement(14985);
+ addExpectedElement(14986);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop200;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(14987);
+ addExpectedElement(14988);
+ addExpectedElement(14989);
+ addExpectedElement(14990);
+ addExpectedElement(14991);
+ addExpectedElement(14992);
+ addExpectedElement(14993);
+ addExpectedElement(14994);
+ addExpectedElement(14995);
+ addExpectedElement(14996);
+ addExpectedElement(14997);
+ addExpectedElement(14998);
+ addExpectedElement(14999);
+ addExpectedElement(15000);
+ addExpectedElement(15001);
+ addExpectedElement(15002);
+ addExpectedElement(15003);
+ addExpectedElement(15004);
+ addExpectedElement(15005);
+ addExpectedElement(15006);
+ addExpectedElement(15007);
+ addExpectedElement(15008);
+ addExpectedElement(15009);
+ addExpectedElement(15010);
+ addExpectedElement(15011);
+ addExpectedElement(15012);
+ addExpectedElement(15013);
+ addExpectedElement(15014);
+ addExpectedElement(15015);
+ addExpectedElement(15016);
+ addExpectedElement(15017);
+ addExpectedElement(15018);
+ addExpectedElement(15019);
+ addExpectedElement(15020);
+ addExpectedElement(15021);
+ addExpectedElement(15022);
+ addExpectedElement(15023);
+ addExpectedElement(15024);
+ addExpectedElement(15025);
+ addExpectedElement(15026);
+ addExpectedElement(15027);
+ addExpectedElement(15028);
+ addExpectedElement(15029);
+ addExpectedElement(15030);
+ addExpectedElement(15031);
+ addExpectedElement(15032);
+ addExpectedElement(15033);
+ addExpectedElement(15034);
+ addExpectedElement(15035);
+ addExpectedElement(15036);
+ addExpectedElement(15037);
+ addExpectedElement(15038);
+ addExpectedElement(15039);
+ addExpectedElement(15040);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 80, parse_org_emftext_language_java_expressions_AndExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_AndExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_EqualityExpression"
+ // Java.g:28266:1: parse_org_emftext_language_java_expressions_EqualityExpression returns [org.emftext.language.java.expressions.EqualityExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_EqualityOperator ) (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.EqualityExpression parse_org_emftext_language_java_expressions_EqualityExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.EqualityExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_EqualityExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.InstanceOfExpression a0_0 =null;
+
+ org.emftext.language.java.operators.EqualityOperator a1_0 =null;
+
+ org.emftext.language.java.expressions.InstanceOfExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 81) ) { return element; }
+
+ // Java.g:28269:2: ( (a0_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_EqualityOperator ) (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) ) )* )
+ // Java.g:28270:2: (a0_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_EqualityOperator ) (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) ) )*
+ {
+ // Java.g:28270:2: (a0_0= parse_org_emftext_language_java_expressions_InstanceOfExpression )
+ // Java.g:28271:3: a0_0= parse_org_emftext_language_java_expressions_InstanceOfExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_InstanceOfExpression_in_parse_org_emftext_language_java_expressions_EqualityExpression18855);
+ a0_0=parse_org_emftext_language_java_expressions_InstanceOfExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createEqualityExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.EQUALITY_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_79_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15041);
+ addExpectedElement(15042);
+ addExpectedElement(15043);
+ addExpectedElement(15044);
+ addExpectedElement(15045);
+ addExpectedElement(15046);
+ addExpectedElement(15047);
+ addExpectedElement(15048);
+ addExpectedElement(15049);
+ addExpectedElement(15050);
+ addExpectedElement(15051);
+ addExpectedElement(15052);
+ addExpectedElement(15053);
+ addExpectedElement(15054);
+ addExpectedElement(15055);
+ addExpectedElement(15056);
+ addExpectedElement(15057);
+ addExpectedElement(15058);
+ addExpectedElement(15059);
+ addExpectedElement(15060);
+ addExpectedElement(15061);
+ addExpectedElement(15062);
+ addExpectedElement(15063);
+ addExpectedElement(15064);
+ addExpectedElement(15065);
+ addExpectedElement(15066);
+ addExpectedElement(15067);
+ addExpectedElement(15068);
+ addExpectedElement(15069);
+ addExpectedElement(15070);
+ addExpectedElement(15071);
+ addExpectedElement(15072);
+ addExpectedElement(15073);
+ addExpectedElement(15074);
+ addExpectedElement(15075);
+ addExpectedElement(15076);
+ addExpectedElement(15077);
+ addExpectedElement(15078);
+ addExpectedElement(15079);
+ addExpectedElement(15080);
+ addExpectedElement(15081);
+ addExpectedElement(15082);
+ addExpectedElement(15083);
+ addExpectedElement(15084);
+ addExpectedElement(15085);
+ addExpectedElement(15086);
+ addExpectedElement(15087);
+ addExpectedElement(15088);
+ addExpectedElement(15089);
+ addExpectedElement(15090);
+ addExpectedElement(15091);
+ addExpectedElement(15092);
+ addExpectedElement(15093);
+ addExpectedElement(15094);
+ addExpectedElement(15095);
+ addExpectedElement(15096);
+ }
+
+ // Java.g:28351:2: ( ( (a1_0= parse_org_emftext_language_java_operators_EqualityOperator ) (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) ) )*
+ loop201:
+ do {
+ int alt201=2;
+ int LA201_0 = input.LA(1);
+
+ if ( (LA201_0==22||LA201_0==45) ) {
+ alt201=1;
+ }
+
+
+ switch (alt201) {
+ case 1 :
+ // Java.g:28352:3: ( (a1_0= parse_org_emftext_language_java_operators_EqualityOperator ) (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) )
+ {
+ // Java.g:28352:3: ( (a1_0= parse_org_emftext_language_java_operators_EqualityOperator ) (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression ) )
+ // Java.g:28353:4: (a1_0= parse_org_emftext_language_java_operators_EqualityOperator ) (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression )
+ {
+ // Java.g:28353:4: (a1_0= parse_org_emftext_language_java_operators_EqualityOperator )
+ // Java.g:28354:5: a1_0= parse_org_emftext_language_java_operators_EqualityOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_EqualityOperator_in_parse_org_emftext_language_java_expressions_EqualityExpression18888);
+ a1_0=parse_org_emftext_language_java_operators_EqualityOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createEqualityExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.EQUALITY_EXPRESSION__EQUALITY_OPERATORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_79_0_0_1_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15097);
+ addExpectedElement(15098);
+ addExpectedElement(15099);
+ addExpectedElement(15100);
+ addExpectedElement(15101);
+ addExpectedElement(15102);
+ addExpectedElement(15103);
+ addExpectedElement(15104);
+ addExpectedElement(15105);
+ addExpectedElement(15106);
+ addExpectedElement(15107);
+ addExpectedElement(15108);
+ addExpectedElement(15109);
+ addExpectedElement(15110);
+ addExpectedElement(15111);
+ addExpectedElement(15112);
+ addExpectedElement(15113);
+ addExpectedElement(15114);
+ addExpectedElement(15115);
+ addExpectedElement(15116);
+ addExpectedElement(15117);
+ addExpectedElement(15118);
+ addExpectedElement(15119);
+ addExpectedElement(15120);
+ addExpectedElement(15121);
+ addExpectedElement(15122);
+ addExpectedElement(15123);
+ addExpectedElement(15124);
+ addExpectedElement(15125);
+ addExpectedElement(15126);
+ addExpectedElement(15127);
+ addExpectedElement(15128);
+ addExpectedElement(15129);
+ addExpectedElement(15130);
+ addExpectedElement(15131);
+ addExpectedElement(15132);
+ addExpectedElement(15133);
+ addExpectedElement(15134);
+ addExpectedElement(15135);
+ addExpectedElement(15136);
+ addExpectedElement(15137);
+ addExpectedElement(15138);
+ addExpectedElement(15139);
+ }
+
+ // Java.g:28421:4: (a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression )
+ // Java.g:28422:5: a2_0= parse_org_emftext_language_java_expressions_InstanceOfExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_InstanceOfExpression_in_parse_org_emftext_language_java_expressions_EqualityExpression18922);
+ a2_0=parse_org_emftext_language_java_expressions_InstanceOfExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createEqualityExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.EQUALITY_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_79_0_0_1_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15140);
+ addExpectedElement(15141);
+ addExpectedElement(15142);
+ addExpectedElement(15143);
+ addExpectedElement(15144);
+ addExpectedElement(15145);
+ addExpectedElement(15146);
+ addExpectedElement(15147);
+ addExpectedElement(15148);
+ addExpectedElement(15149);
+ addExpectedElement(15150);
+ addExpectedElement(15151);
+ addExpectedElement(15152);
+ addExpectedElement(15153);
+ addExpectedElement(15154);
+ addExpectedElement(15155);
+ addExpectedElement(15156);
+ addExpectedElement(15157);
+ addExpectedElement(15158);
+ addExpectedElement(15159);
+ addExpectedElement(15160);
+ addExpectedElement(15161);
+ addExpectedElement(15162);
+ addExpectedElement(15163);
+ addExpectedElement(15164);
+ addExpectedElement(15165);
+ addExpectedElement(15166);
+ addExpectedElement(15167);
+ addExpectedElement(15168);
+ addExpectedElement(15169);
+ addExpectedElement(15170);
+ addExpectedElement(15171);
+ addExpectedElement(15172);
+ addExpectedElement(15173);
+ addExpectedElement(15174);
+ addExpectedElement(15175);
+ addExpectedElement(15176);
+ addExpectedElement(15177);
+ addExpectedElement(15178);
+ addExpectedElement(15179);
+ addExpectedElement(15180);
+ addExpectedElement(15181);
+ addExpectedElement(15182);
+ addExpectedElement(15183);
+ addExpectedElement(15184);
+ addExpectedElement(15185);
+ addExpectedElement(15186);
+ addExpectedElement(15187);
+ addExpectedElement(15188);
+ addExpectedElement(15189);
+ addExpectedElement(15190);
+ addExpectedElement(15191);
+ addExpectedElement(15192);
+ addExpectedElement(15193);
+ addExpectedElement(15194);
+ addExpectedElement(15195);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop201;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15196);
+ addExpectedElement(15197);
+ addExpectedElement(15198);
+ addExpectedElement(15199);
+ addExpectedElement(15200);
+ addExpectedElement(15201);
+ addExpectedElement(15202);
+ addExpectedElement(15203);
+ addExpectedElement(15204);
+ addExpectedElement(15205);
+ addExpectedElement(15206);
+ addExpectedElement(15207);
+ addExpectedElement(15208);
+ addExpectedElement(15209);
+ addExpectedElement(15210);
+ addExpectedElement(15211);
+ addExpectedElement(15212);
+ addExpectedElement(15213);
+ addExpectedElement(15214);
+ addExpectedElement(15215);
+ addExpectedElement(15216);
+ addExpectedElement(15217);
+ addExpectedElement(15218);
+ addExpectedElement(15219);
+ addExpectedElement(15220);
+ addExpectedElement(15221);
+ addExpectedElement(15222);
+ addExpectedElement(15223);
+ addExpectedElement(15224);
+ addExpectedElement(15225);
+ addExpectedElement(15226);
+ addExpectedElement(15227);
+ addExpectedElement(15228);
+ addExpectedElement(15229);
+ addExpectedElement(15230);
+ addExpectedElement(15231);
+ addExpectedElement(15232);
+ addExpectedElement(15233);
+ addExpectedElement(15234);
+ addExpectedElement(15235);
+ addExpectedElement(15236);
+ addExpectedElement(15237);
+ addExpectedElement(15238);
+ addExpectedElement(15239);
+ addExpectedElement(15240);
+ addExpectedElement(15241);
+ addExpectedElement(15242);
+ addExpectedElement(15243);
+ addExpectedElement(15244);
+ addExpectedElement(15245);
+ addExpectedElement(15246);
+ addExpectedElement(15247);
+ addExpectedElement(15248);
+ addExpectedElement(15249);
+ addExpectedElement(15250);
+ addExpectedElement(15251);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 81, parse_org_emftext_language_java_expressions_EqualityExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_EqualityExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_InstanceOfExpression"
+ // Java.g:28566:1: parse_org_emftext_language_java_expressions_InstanceOfExpression returns [org.emftext.language.java.expressions.InstanceOfExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_RelationExpression ) ( (a1= 'instanceof' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) )? ;
+ public final org.emftext.language.java.expressions.InstanceOfExpression parse_org_emftext_language_java_expressions_InstanceOfExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.InstanceOfExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_InstanceOfExpression_StartIndex = input.index();
+
+ Token a1=null;
+ org.emftext.language.java.expressions.RelationExpression a0_0 =null;
+
+ org.emftext.language.java.types.TypeReference a2_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a3_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 82) ) { return element; }
+
+ // Java.g:28569:2: ( (a0_0= parse_org_emftext_language_java_expressions_RelationExpression ) ( (a1= 'instanceof' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) )? )
+ // Java.g:28570:2: (a0_0= parse_org_emftext_language_java_expressions_RelationExpression ) ( (a1= 'instanceof' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) )?
+ {
+ // Java.g:28570:2: (a0_0= parse_org_emftext_language_java_expressions_RelationExpression )
+ // Java.g:28571:3: a0_0= parse_org_emftext_language_java_expressions_RelationExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_RelationExpression_in_parse_org_emftext_language_java_expressions_InstanceOfExpression18982);
+ a0_0=parse_org_emftext_language_java_expressions_RelationExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createInstanceOfExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.INSTANCE_OF_EXPRESSION__CHILD), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_80_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15252);
+ addExpectedElement(15253);
+ addExpectedElement(15254);
+ addExpectedElement(15255);
+ addExpectedElement(15256);
+ addExpectedElement(15257);
+ addExpectedElement(15258);
+ addExpectedElement(15259);
+ addExpectedElement(15260);
+ addExpectedElement(15261);
+ addExpectedElement(15262);
+ addExpectedElement(15263);
+ addExpectedElement(15264);
+ addExpectedElement(15265);
+ addExpectedElement(15266);
+ addExpectedElement(15267);
+ addExpectedElement(15268);
+ addExpectedElement(15269);
+ addExpectedElement(15270);
+ addExpectedElement(15271);
+ addExpectedElement(15272);
+ addExpectedElement(15273);
+ addExpectedElement(15274);
+ addExpectedElement(15275);
+ addExpectedElement(15276);
+ addExpectedElement(15277);
+ addExpectedElement(15278);
+ addExpectedElement(15279);
+ addExpectedElement(15280);
+ addExpectedElement(15281);
+ addExpectedElement(15282);
+ addExpectedElement(15283);
+ addExpectedElement(15284);
+ addExpectedElement(15285);
+ addExpectedElement(15286);
+ addExpectedElement(15287);
+ addExpectedElement(15288);
+ addExpectedElement(15289);
+ addExpectedElement(15290);
+ addExpectedElement(15291);
+ addExpectedElement(15292);
+ addExpectedElement(15293);
+ addExpectedElement(15294);
+ addExpectedElement(15295);
+ addExpectedElement(15296);
+ addExpectedElement(15297);
+ addExpectedElement(15298);
+ addExpectedElement(15299);
+ addExpectedElement(15300);
+ addExpectedElement(15301);
+ addExpectedElement(15302);
+ addExpectedElement(15303);
+ addExpectedElement(15304);
+ addExpectedElement(15305);
+ addExpectedElement(15306);
+ addExpectedElement(15307);
+ addExpectedElement(15308);
+ }
+
+ // Java.g:28652:2: ( (a1= 'instanceof' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) )?
+ int alt203=2;
+ int LA203_0 = input.LA(1);
+
+ if ( (LA203_0==79) ) {
+ alt203=1;
+ }
+ switch (alt203) {
+ case 1 :
+ // Java.g:28653:3: (a1= 'instanceof' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ {
+ // Java.g:28653:3: (a1= 'instanceof' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:28654:4: a1= 'instanceof' (a2_0= parse_org_emftext_language_java_types_TypeReference ) ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ a1=(Token)match(input,79,FOLLOW_79_in_parse_org_emftext_language_java_expressions_InstanceOfExpression19009); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createInstanceOfExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_80_0_0_1_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15309);
+ addExpectedElement(15310);
+ addExpectedElement(15311);
+ addExpectedElement(15312);
+ addExpectedElement(15313);
+ addExpectedElement(15314);
+ addExpectedElement(15315);
+ addExpectedElement(15316);
+ addExpectedElement(15317);
+ addExpectedElement(15318);
+ addExpectedElement(15319);
+ }
+
+ // Java.g:28678:4: (a2_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:28679:5: a2_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_expressions_InstanceOfExpression19035);
+ a2_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createInstanceOfExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.INSTANCE_OF_EXPRESSION__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_80_0_0_1_0_0_1, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15320);
+ addExpectedElement(15321);
+ addExpectedElement(15322);
+ addExpectedElement(15323);
+ addExpectedElement(15324);
+ addExpectedElement(15325);
+ addExpectedElement(15326);
+ addExpectedElement(15327);
+ addExpectedElement(15328);
+ addExpectedElement(15329);
+ addExpectedElement(15330);
+ addExpectedElement(15331);
+ addExpectedElement(15332);
+ addExpectedElement(15333);
+ addExpectedElement(15334);
+ addExpectedElement(15335);
+ addExpectedElement(15336);
+ addExpectedElement(15337);
+ addExpectedElement(15338);
+ addExpectedElement(15339);
+ addExpectedElement(15340);
+ addExpectedElement(15341);
+ addExpectedElement(15342);
+ addExpectedElement(15343);
+ addExpectedElement(15344);
+ addExpectedElement(15345);
+ addExpectedElement(15346);
+ addExpectedElement(15347);
+ addExpectedElement(15348);
+ addExpectedElement(15349);
+ addExpectedElement(15350);
+ addExpectedElement(15351);
+ addExpectedElement(15352);
+ addExpectedElement(15353);
+ addExpectedElement(15354);
+ addExpectedElement(15355);
+ addExpectedElement(15356);
+ addExpectedElement(15357);
+ addExpectedElement(15358);
+ addExpectedElement(15359);
+ addExpectedElement(15360);
+ addExpectedElement(15361);
+ addExpectedElement(15362);
+ addExpectedElement(15363);
+ addExpectedElement(15364);
+ addExpectedElement(15365);
+ addExpectedElement(15366);
+ addExpectedElement(15367);
+ addExpectedElement(15368);
+ addExpectedElement(15369);
+ addExpectedElement(15370);
+ addExpectedElement(15371);
+ addExpectedElement(15372);
+ addExpectedElement(15373);
+ addExpectedElement(15374);
+ addExpectedElement(15375);
+ addExpectedElement(15376);
+ }
+
+ // Java.g:28760:4: ( (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop202:
+ do {
+ int alt202=2;
+ int LA202_0 = input.LA(1);
+
+ if ( (LA202_0==49) ) {
+ alt202=1;
+ }
+
+
+ switch (alt202) {
+ case 1 :
+ // Java.g:28761:5: (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:28761:5: (a3_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:28762:6: a3_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_expressions_InstanceOfExpression19076);
+ a3_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createInstanceOfExpression();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.INSTANCE_OF_EXPRESSION__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_80_0_0_1_0_0_2, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop202;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15377);
+ addExpectedElement(15378);
+ addExpectedElement(15379);
+ addExpectedElement(15380);
+ addExpectedElement(15381);
+ addExpectedElement(15382);
+ addExpectedElement(15383);
+ addExpectedElement(15384);
+ addExpectedElement(15385);
+ addExpectedElement(15386);
+ addExpectedElement(15387);
+ addExpectedElement(15388);
+ addExpectedElement(15389);
+ addExpectedElement(15390);
+ addExpectedElement(15391);
+ addExpectedElement(15392);
+ addExpectedElement(15393);
+ addExpectedElement(15394);
+ addExpectedElement(15395);
+ addExpectedElement(15396);
+ addExpectedElement(15397);
+ addExpectedElement(15398);
+ addExpectedElement(15399);
+ addExpectedElement(15400);
+ addExpectedElement(15401);
+ addExpectedElement(15402);
+ addExpectedElement(15403);
+ addExpectedElement(15404);
+ addExpectedElement(15405);
+ addExpectedElement(15406);
+ addExpectedElement(15407);
+ addExpectedElement(15408);
+ addExpectedElement(15409);
+ addExpectedElement(15410);
+ addExpectedElement(15411);
+ addExpectedElement(15412);
+ addExpectedElement(15413);
+ addExpectedElement(15414);
+ addExpectedElement(15415);
+ addExpectedElement(15416);
+ addExpectedElement(15417);
+ addExpectedElement(15418);
+ addExpectedElement(15419);
+ addExpectedElement(15420);
+ addExpectedElement(15421);
+ addExpectedElement(15422);
+ addExpectedElement(15423);
+ addExpectedElement(15424);
+ addExpectedElement(15425);
+ addExpectedElement(15426);
+ addExpectedElement(15427);
+ addExpectedElement(15428);
+ addExpectedElement(15429);
+ addExpectedElement(15430);
+ addExpectedElement(15431);
+ addExpectedElement(15432);
+ addExpectedElement(15433);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15434);
+ addExpectedElement(15435);
+ addExpectedElement(15436);
+ addExpectedElement(15437);
+ addExpectedElement(15438);
+ addExpectedElement(15439);
+ addExpectedElement(15440);
+ addExpectedElement(15441);
+ addExpectedElement(15442);
+ addExpectedElement(15443);
+ addExpectedElement(15444);
+ addExpectedElement(15445);
+ addExpectedElement(15446);
+ addExpectedElement(15447);
+ addExpectedElement(15448);
+ addExpectedElement(15449);
+ addExpectedElement(15450);
+ addExpectedElement(15451);
+ addExpectedElement(15452);
+ addExpectedElement(15453);
+ addExpectedElement(15454);
+ addExpectedElement(15455);
+ addExpectedElement(15456);
+ addExpectedElement(15457);
+ addExpectedElement(15458);
+ addExpectedElement(15459);
+ addExpectedElement(15460);
+ addExpectedElement(15461);
+ addExpectedElement(15462);
+ addExpectedElement(15463);
+ addExpectedElement(15464);
+ addExpectedElement(15465);
+ addExpectedElement(15466);
+ addExpectedElement(15467);
+ addExpectedElement(15468);
+ addExpectedElement(15469);
+ addExpectedElement(15470);
+ addExpectedElement(15471);
+ addExpectedElement(15472);
+ addExpectedElement(15473);
+ addExpectedElement(15474);
+ addExpectedElement(15475);
+ addExpectedElement(15476);
+ addExpectedElement(15477);
+ addExpectedElement(15478);
+ addExpectedElement(15479);
+ addExpectedElement(15480);
+ addExpectedElement(15481);
+ addExpectedElement(15482);
+ addExpectedElement(15483);
+ addExpectedElement(15484);
+ addExpectedElement(15485);
+ addExpectedElement(15486);
+ addExpectedElement(15487);
+ addExpectedElement(15488);
+ addExpectedElement(15489);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 82, parse_org_emftext_language_java_expressions_InstanceOfExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_InstanceOfExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_RelationExpression"
+ // Java.g:28908:1: parse_org_emftext_language_java_expressions_RelationExpression returns [org.emftext.language.java.expressions.RelationExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_ShiftExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_RelationOperator ) (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.RelationExpression parse_org_emftext_language_java_expressions_RelationExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.RelationExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_RelationExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.ShiftExpression a0_0 =null;
+
+ org.emftext.language.java.operators.RelationOperator a1_0 =null;
+
+ org.emftext.language.java.expressions.ShiftExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 83) ) { return element; }
+
+ // Java.g:28911:2: ( (a0_0= parse_org_emftext_language_java_expressions_ShiftExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_RelationOperator ) (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression ) ) )* )
+ // Java.g:28912:2: (a0_0= parse_org_emftext_language_java_expressions_ShiftExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_RelationOperator ) (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression ) ) )*
+ {
+ // Java.g:28912:2: (a0_0= parse_org_emftext_language_java_expressions_ShiftExpression )
+ // Java.g:28913:3: a0_0= parse_org_emftext_language_java_expressions_ShiftExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ShiftExpression_in_parse_org_emftext_language_java_expressions_RelationExpression19148);
+ a0_0=parse_org_emftext_language_java_expressions_ShiftExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createRelationExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.RELATION_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_81_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15490);
+ addExpectedElement(15491);
+ addExpectedElement(15492);
+ addExpectedElement(15493);
+ addExpectedElement(15494);
+ addExpectedElement(15495);
+ addExpectedElement(15496);
+ addExpectedElement(15497);
+ addExpectedElement(15498);
+ addExpectedElement(15499);
+ addExpectedElement(15500);
+ addExpectedElement(15501);
+ addExpectedElement(15502);
+ addExpectedElement(15503);
+ addExpectedElement(15504);
+ addExpectedElement(15505);
+ addExpectedElement(15506);
+ addExpectedElement(15507);
+ addExpectedElement(15508);
+ addExpectedElement(15509);
+ addExpectedElement(15510);
+ addExpectedElement(15511);
+ addExpectedElement(15512);
+ addExpectedElement(15513);
+ addExpectedElement(15514);
+ addExpectedElement(15515);
+ addExpectedElement(15516);
+ addExpectedElement(15517);
+ addExpectedElement(15518);
+ addExpectedElement(15519);
+ addExpectedElement(15520);
+ addExpectedElement(15521);
+ addExpectedElement(15522);
+ addExpectedElement(15523);
+ addExpectedElement(15524);
+ addExpectedElement(15525);
+ addExpectedElement(15526);
+ addExpectedElement(15527);
+ addExpectedElement(15528);
+ addExpectedElement(15529);
+ addExpectedElement(15530);
+ addExpectedElement(15531);
+ addExpectedElement(15532);
+ addExpectedElement(15533);
+ addExpectedElement(15534);
+ addExpectedElement(15535);
+ addExpectedElement(15536);
+ addExpectedElement(15537);
+ addExpectedElement(15538);
+ addExpectedElement(15539);
+ addExpectedElement(15540);
+ addExpectedElement(15541);
+ addExpectedElement(15542);
+ addExpectedElement(15543);
+ addExpectedElement(15544);
+ addExpectedElement(15545);
+ addExpectedElement(15546);
+ addExpectedElement(15547);
+ addExpectedElement(15548);
+ addExpectedElement(15549);
+ addExpectedElement(15550);
+ }
+
+ // Java.g:28998:2: ( ( (a1_0= parse_org_emftext_language_java_operators_RelationOperator ) (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression ) ) )*
+ loop204:
+ do {
+ int alt204=2;
+ int LA204_0 = input.LA(1);
+
+ if ( (LA204_0==43) ) {
+ int LA204_2 = input.LA(2);
+
+ if ( (LA204_2==43) ) {
+ int LA204_4 = input.LA(3);
+
+ if ( (LA204_4==IDENTIFIER||LA204_4==47||LA204_4==58||LA204_4==60||LA204_4==63||LA204_4==68||LA204_4==74||LA204_4==80||LA204_4==82||LA204_4==91||LA204_4==102) ) {
+ alt204=1;
+ }
+
+
+ }
+ else if ( ((LA204_2 >= BOOLEAN_LITERAL && LA204_2 <= IDENTIFIER)||(LA204_2 >= OCTAL_INTEGER_LITERAL && LA204_2 <= OCTAL_LONG_LITERAL)||LA204_2==STRING_LITERAL||LA204_2==21||LA204_2==26||(LA204_2 >= 30 && LA204_2 <= 31)||(LA204_2 >= 34 && LA204_2 <= 35)||LA204_2==44||LA204_2==48||LA204_2==58||LA204_2==60||(LA204_2 >= 63 && LA204_2 <= 64)||LA204_2==68||LA204_2==74||LA204_2==80||LA204_2==82||(LA204_2 >= 84 && LA204_2 <= 85)||LA204_2==91||LA204_2==94||LA204_2==97||LA204_2==102||LA204_2==105||LA204_2==110) ) {
+ alt204=1;
+ }
+
+
+ }
+ else if ( (LA204_0==46) ) {
+ int LA204_3 = input.LA(2);
+
+ if ( ((LA204_3 >= BOOLEAN_LITERAL && LA204_3 <= IDENTIFIER)||(LA204_3 >= OCTAL_INTEGER_LITERAL && LA204_3 <= OCTAL_LONG_LITERAL)||LA204_3==STRING_LITERAL||LA204_3==21||LA204_3==26||(LA204_3 >= 30 && LA204_3 <= 31)||(LA204_3 >= 34 && LA204_3 <= 35)||(LA204_3 >= 43 && LA204_3 <= 44)||LA204_3==48||LA204_3==58||LA204_3==60||(LA204_3 >= 63 && LA204_3 <= 64)||LA204_3==68||LA204_3==74||LA204_3==80||LA204_3==82||(LA204_3 >= 84 && LA204_3 <= 85)||LA204_3==91||LA204_3==94||LA204_3==97||LA204_3==102||LA204_3==105||LA204_3==110) ) {
+ alt204=1;
+ }
+
+
+ }
+
+
+ switch (alt204) {
+ case 1 :
+ // Java.g:28999:3: ( (a1_0= parse_org_emftext_language_java_operators_RelationOperator ) (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression ) )
+ {
+ // Java.g:28999:3: ( (a1_0= parse_org_emftext_language_java_operators_RelationOperator ) (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression ) )
+ // Java.g:29000:4: (a1_0= parse_org_emftext_language_java_operators_RelationOperator ) (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression )
+ {
+ // Java.g:29000:4: (a1_0= parse_org_emftext_language_java_operators_RelationOperator )
+ // Java.g:29001:5: a1_0= parse_org_emftext_language_java_operators_RelationOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_RelationOperator_in_parse_org_emftext_language_java_expressions_RelationExpression19181);
+ a1_0=parse_org_emftext_language_java_operators_RelationOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createRelationExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.RELATION_EXPRESSION__RELATION_OPERATORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_81_0_0_1_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15551);
+ addExpectedElement(15552);
+ addExpectedElement(15553);
+ addExpectedElement(15554);
+ addExpectedElement(15555);
+ addExpectedElement(15556);
+ addExpectedElement(15557);
+ addExpectedElement(15558);
+ addExpectedElement(15559);
+ addExpectedElement(15560);
+ addExpectedElement(15561);
+ addExpectedElement(15562);
+ addExpectedElement(15563);
+ addExpectedElement(15564);
+ addExpectedElement(15565);
+ addExpectedElement(15566);
+ addExpectedElement(15567);
+ addExpectedElement(15568);
+ addExpectedElement(15569);
+ addExpectedElement(15570);
+ addExpectedElement(15571);
+ addExpectedElement(15572);
+ addExpectedElement(15573);
+ addExpectedElement(15574);
+ addExpectedElement(15575);
+ addExpectedElement(15576);
+ addExpectedElement(15577);
+ addExpectedElement(15578);
+ addExpectedElement(15579);
+ addExpectedElement(15580);
+ addExpectedElement(15581);
+ addExpectedElement(15582);
+ addExpectedElement(15583);
+ addExpectedElement(15584);
+ addExpectedElement(15585);
+ addExpectedElement(15586);
+ addExpectedElement(15587);
+ addExpectedElement(15588);
+ addExpectedElement(15589);
+ addExpectedElement(15590);
+ addExpectedElement(15591);
+ addExpectedElement(15592);
+ addExpectedElement(15593);
+ }
+
+ // Java.g:29068:4: (a2_0= parse_org_emftext_language_java_expressions_ShiftExpression )
+ // Java.g:29069:5: a2_0= parse_org_emftext_language_java_expressions_ShiftExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ShiftExpression_in_parse_org_emftext_language_java_expressions_RelationExpression19215);
+ a2_0=parse_org_emftext_language_java_expressions_ShiftExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createRelationExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.RELATION_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_81_0_0_1_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15594);
+ addExpectedElement(15595);
+ addExpectedElement(15596);
+ addExpectedElement(15597);
+ addExpectedElement(15598);
+ addExpectedElement(15599);
+ addExpectedElement(15600);
+ addExpectedElement(15601);
+ addExpectedElement(15602);
+ addExpectedElement(15603);
+ addExpectedElement(15604);
+ addExpectedElement(15605);
+ addExpectedElement(15606);
+ addExpectedElement(15607);
+ addExpectedElement(15608);
+ addExpectedElement(15609);
+ addExpectedElement(15610);
+ addExpectedElement(15611);
+ addExpectedElement(15612);
+ addExpectedElement(15613);
+ addExpectedElement(15614);
+ addExpectedElement(15615);
+ addExpectedElement(15616);
+ addExpectedElement(15617);
+ addExpectedElement(15618);
+ addExpectedElement(15619);
+ addExpectedElement(15620);
+ addExpectedElement(15621);
+ addExpectedElement(15622);
+ addExpectedElement(15623);
+ addExpectedElement(15624);
+ addExpectedElement(15625);
+ addExpectedElement(15626);
+ addExpectedElement(15627);
+ addExpectedElement(15628);
+ addExpectedElement(15629);
+ addExpectedElement(15630);
+ addExpectedElement(15631);
+ addExpectedElement(15632);
+ addExpectedElement(15633);
+ addExpectedElement(15634);
+ addExpectedElement(15635);
+ addExpectedElement(15636);
+ addExpectedElement(15637);
+ addExpectedElement(15638);
+ addExpectedElement(15639);
+ addExpectedElement(15640);
+ addExpectedElement(15641);
+ addExpectedElement(15642);
+ addExpectedElement(15643);
+ addExpectedElement(15644);
+ addExpectedElement(15645);
+ addExpectedElement(15646);
+ addExpectedElement(15647);
+ addExpectedElement(15648);
+ addExpectedElement(15649);
+ addExpectedElement(15650);
+ addExpectedElement(15651);
+ addExpectedElement(15652);
+ addExpectedElement(15653);
+ addExpectedElement(15654);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop204;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15655);
+ addExpectedElement(15656);
+ addExpectedElement(15657);
+ addExpectedElement(15658);
+ addExpectedElement(15659);
+ addExpectedElement(15660);
+ addExpectedElement(15661);
+ addExpectedElement(15662);
+ addExpectedElement(15663);
+ addExpectedElement(15664);
+ addExpectedElement(15665);
+ addExpectedElement(15666);
+ addExpectedElement(15667);
+ addExpectedElement(15668);
+ addExpectedElement(15669);
+ addExpectedElement(15670);
+ addExpectedElement(15671);
+ addExpectedElement(15672);
+ addExpectedElement(15673);
+ addExpectedElement(15674);
+ addExpectedElement(15675);
+ addExpectedElement(15676);
+ addExpectedElement(15677);
+ addExpectedElement(15678);
+ addExpectedElement(15679);
+ addExpectedElement(15680);
+ addExpectedElement(15681);
+ addExpectedElement(15682);
+ addExpectedElement(15683);
+ addExpectedElement(15684);
+ addExpectedElement(15685);
+ addExpectedElement(15686);
+ addExpectedElement(15687);
+ addExpectedElement(15688);
+ addExpectedElement(15689);
+ addExpectedElement(15690);
+ addExpectedElement(15691);
+ addExpectedElement(15692);
+ addExpectedElement(15693);
+ addExpectedElement(15694);
+ addExpectedElement(15695);
+ addExpectedElement(15696);
+ addExpectedElement(15697);
+ addExpectedElement(15698);
+ addExpectedElement(15699);
+ addExpectedElement(15700);
+ addExpectedElement(15701);
+ addExpectedElement(15702);
+ addExpectedElement(15703);
+ addExpectedElement(15704);
+ addExpectedElement(15705);
+ addExpectedElement(15706);
+ addExpectedElement(15707);
+ addExpectedElement(15708);
+ addExpectedElement(15709);
+ addExpectedElement(15710);
+ addExpectedElement(15711);
+ addExpectedElement(15712);
+ addExpectedElement(15713);
+ addExpectedElement(15714);
+ addExpectedElement(15715);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 83, parse_org_emftext_language_java_expressions_RelationExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_RelationExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_ShiftExpression"
+ // Java.g:29223:1: parse_org_emftext_language_java_expressions_ShiftExpression returns [org.emftext.language.java.expressions.ShiftExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.ShiftExpression parse_org_emftext_language_java_expressions_ShiftExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.ShiftExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_ShiftExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.AdditiveExpression a0_0 =null;
+
+ org.emftext.language.java.operators.ShiftOperator a1_0 =null;
+
+ org.emftext.language.java.expressions.AdditiveExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 84) ) { return element; }
+
+ // Java.g:29226:2: ( (a0_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ) )* )
+ // Java.g:29227:2: (a0_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ) )*
+ {
+ // Java.g:29227:2: (a0_0= parse_org_emftext_language_java_expressions_AdditiveExpression )
+ // Java.g:29228:3: a0_0= parse_org_emftext_language_java_expressions_AdditiveExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AdditiveExpression_in_parse_org_emftext_language_java_expressions_ShiftExpression19275);
+ a0_0=parse_org_emftext_language_java_expressions_AdditiveExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createShiftExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.SHIFT_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_82_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15716);
+ addExpectedElement(15717);
+ addExpectedElement(15718);
+ addExpectedElement(15719);
+ addExpectedElement(15720);
+ addExpectedElement(15721);
+ addExpectedElement(15722);
+ addExpectedElement(15723);
+ addExpectedElement(15724);
+ addExpectedElement(15725);
+ addExpectedElement(15726);
+ addExpectedElement(15727);
+ addExpectedElement(15728);
+ addExpectedElement(15729);
+ addExpectedElement(15730);
+ addExpectedElement(15731);
+ addExpectedElement(15732);
+ addExpectedElement(15733);
+ addExpectedElement(15734);
+ addExpectedElement(15735);
+ addExpectedElement(15736);
+ addExpectedElement(15737);
+ addExpectedElement(15738);
+ addExpectedElement(15739);
+ addExpectedElement(15740);
+ addExpectedElement(15741);
+ addExpectedElement(15742);
+ addExpectedElement(15743);
+ addExpectedElement(15744);
+ addExpectedElement(15745);
+ addExpectedElement(15746);
+ addExpectedElement(15747);
+ addExpectedElement(15748);
+ addExpectedElement(15749);
+ addExpectedElement(15750);
+ addExpectedElement(15751);
+ addExpectedElement(15752);
+ addExpectedElement(15753);
+ addExpectedElement(15754);
+ addExpectedElement(15755);
+ addExpectedElement(15756);
+ addExpectedElement(15757);
+ addExpectedElement(15758);
+ addExpectedElement(15759);
+ addExpectedElement(15760);
+ addExpectedElement(15761);
+ addExpectedElement(15762);
+ addExpectedElement(15763);
+ addExpectedElement(15764);
+ addExpectedElement(15765);
+ addExpectedElement(15766);
+ addExpectedElement(15767);
+ addExpectedElement(15768);
+ addExpectedElement(15769);
+ addExpectedElement(15770);
+ addExpectedElement(15771);
+ addExpectedElement(15772);
+ addExpectedElement(15773);
+ addExpectedElement(15774);
+ addExpectedElement(15775);
+ addExpectedElement(15776);
+ addExpectedElement(15777);
+ addExpectedElement(15778);
+ addExpectedElement(15779);
+ }
+
+ // Java.g:29316:2: ( ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ) )*
+ loop205:
+ do {
+ int alt205=2;
+ int LA205_0 = input.LA(1);
+
+ if ( (LA205_0==43) ) {
+ int LA205_1 = input.LA(2);
+
+ if ( (synpred206_Java()) ) {
+ alt205=1;
+ }
+
+
+ }
+ else if ( (LA205_0==46) ) {
+ int LA205_2 = input.LA(2);
+
+ if ( (synpred206_Java()) ) {
+ alt205=1;
+ }
+
+
+ }
+
+
+ switch (alt205) {
+ case 1 :
+ // Java.g:29317:3: ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) )
+ {
+ // Java.g:29317:3: ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) )
+ // Java.g:29318:4: (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression )
+ {
+ // Java.g:29318:4: (a1_0= parse_org_emftext_language_java_operators_ShiftOperator )
+ // Java.g:29319:5: a1_0= parse_org_emftext_language_java_operators_ShiftOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_ShiftOperator_in_parse_org_emftext_language_java_expressions_ShiftExpression19308);
+ a1_0=parse_org_emftext_language_java_operators_ShiftOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createShiftExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.SHIFT_EXPRESSION__SHIFT_OPERATORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_82_0_0_1_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15780);
+ addExpectedElement(15781);
+ addExpectedElement(15782);
+ addExpectedElement(15783);
+ addExpectedElement(15784);
+ addExpectedElement(15785);
+ addExpectedElement(15786);
+ addExpectedElement(15787);
+ addExpectedElement(15788);
+ addExpectedElement(15789);
+ addExpectedElement(15790);
+ addExpectedElement(15791);
+ addExpectedElement(15792);
+ addExpectedElement(15793);
+ addExpectedElement(15794);
+ addExpectedElement(15795);
+ addExpectedElement(15796);
+ addExpectedElement(15797);
+ addExpectedElement(15798);
+ addExpectedElement(15799);
+ addExpectedElement(15800);
+ addExpectedElement(15801);
+ addExpectedElement(15802);
+ addExpectedElement(15803);
+ addExpectedElement(15804);
+ addExpectedElement(15805);
+ addExpectedElement(15806);
+ addExpectedElement(15807);
+ addExpectedElement(15808);
+ addExpectedElement(15809);
+ addExpectedElement(15810);
+ addExpectedElement(15811);
+ addExpectedElement(15812);
+ addExpectedElement(15813);
+ addExpectedElement(15814);
+ addExpectedElement(15815);
+ addExpectedElement(15816);
+ addExpectedElement(15817);
+ addExpectedElement(15818);
+ addExpectedElement(15819);
+ addExpectedElement(15820);
+ addExpectedElement(15821);
+ addExpectedElement(15822);
+ }
+
+ // Java.g:29386:4: (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression )
+ // Java.g:29387:5: a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AdditiveExpression_in_parse_org_emftext_language_java_expressions_ShiftExpression19342);
+ a2_0=parse_org_emftext_language_java_expressions_AdditiveExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createShiftExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.SHIFT_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_82_0_0_1_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15823);
+ addExpectedElement(15824);
+ addExpectedElement(15825);
+ addExpectedElement(15826);
+ addExpectedElement(15827);
+ addExpectedElement(15828);
+ addExpectedElement(15829);
+ addExpectedElement(15830);
+ addExpectedElement(15831);
+ addExpectedElement(15832);
+ addExpectedElement(15833);
+ addExpectedElement(15834);
+ addExpectedElement(15835);
+ addExpectedElement(15836);
+ addExpectedElement(15837);
+ addExpectedElement(15838);
+ addExpectedElement(15839);
+ addExpectedElement(15840);
+ addExpectedElement(15841);
+ addExpectedElement(15842);
+ addExpectedElement(15843);
+ addExpectedElement(15844);
+ addExpectedElement(15845);
+ addExpectedElement(15846);
+ addExpectedElement(15847);
+ addExpectedElement(15848);
+ addExpectedElement(15849);
+ addExpectedElement(15850);
+ addExpectedElement(15851);
+ addExpectedElement(15852);
+ addExpectedElement(15853);
+ addExpectedElement(15854);
+ addExpectedElement(15855);
+ addExpectedElement(15856);
+ addExpectedElement(15857);
+ addExpectedElement(15858);
+ addExpectedElement(15859);
+ addExpectedElement(15860);
+ addExpectedElement(15861);
+ addExpectedElement(15862);
+ addExpectedElement(15863);
+ addExpectedElement(15864);
+ addExpectedElement(15865);
+ addExpectedElement(15866);
+ addExpectedElement(15867);
+ addExpectedElement(15868);
+ addExpectedElement(15869);
+ addExpectedElement(15870);
+ addExpectedElement(15871);
+ addExpectedElement(15872);
+ addExpectedElement(15873);
+ addExpectedElement(15874);
+ addExpectedElement(15875);
+ addExpectedElement(15876);
+ addExpectedElement(15877);
+ addExpectedElement(15878);
+ addExpectedElement(15879);
+ addExpectedElement(15880);
+ addExpectedElement(15881);
+ addExpectedElement(15882);
+ addExpectedElement(15883);
+ addExpectedElement(15884);
+ addExpectedElement(15885);
+ addExpectedElement(15886);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop205;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15887);
+ addExpectedElement(15888);
+ addExpectedElement(15889);
+ addExpectedElement(15890);
+ addExpectedElement(15891);
+ addExpectedElement(15892);
+ addExpectedElement(15893);
+ addExpectedElement(15894);
+ addExpectedElement(15895);
+ addExpectedElement(15896);
+ addExpectedElement(15897);
+ addExpectedElement(15898);
+ addExpectedElement(15899);
+ addExpectedElement(15900);
+ addExpectedElement(15901);
+ addExpectedElement(15902);
+ addExpectedElement(15903);
+ addExpectedElement(15904);
+ addExpectedElement(15905);
+ addExpectedElement(15906);
+ addExpectedElement(15907);
+ addExpectedElement(15908);
+ addExpectedElement(15909);
+ addExpectedElement(15910);
+ addExpectedElement(15911);
+ addExpectedElement(15912);
+ addExpectedElement(15913);
+ addExpectedElement(15914);
+ addExpectedElement(15915);
+ addExpectedElement(15916);
+ addExpectedElement(15917);
+ addExpectedElement(15918);
+ addExpectedElement(15919);
+ addExpectedElement(15920);
+ addExpectedElement(15921);
+ addExpectedElement(15922);
+ addExpectedElement(15923);
+ addExpectedElement(15924);
+ addExpectedElement(15925);
+ addExpectedElement(15926);
+ addExpectedElement(15927);
+ addExpectedElement(15928);
+ addExpectedElement(15929);
+ addExpectedElement(15930);
+ addExpectedElement(15931);
+ addExpectedElement(15932);
+ addExpectedElement(15933);
+ addExpectedElement(15934);
+ addExpectedElement(15935);
+ addExpectedElement(15936);
+ addExpectedElement(15937);
+ addExpectedElement(15938);
+ addExpectedElement(15939);
+ addExpectedElement(15940);
+ addExpectedElement(15941);
+ addExpectedElement(15942);
+ addExpectedElement(15943);
+ addExpectedElement(15944);
+ addExpectedElement(15945);
+ addExpectedElement(15946);
+ addExpectedElement(15947);
+ addExpectedElement(15948);
+ addExpectedElement(15949);
+ addExpectedElement(15950);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 84, parse_org_emftext_language_java_expressions_ShiftExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_ShiftExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_AdditiveExpression"
+ // Java.g:29547:1: parse_org_emftext_language_java_expressions_AdditiveExpression returns [org.emftext.language.java.expressions.AdditiveExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator ) (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.AdditiveExpression parse_org_emftext_language_java_expressions_AdditiveExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.AdditiveExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_AdditiveExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.MultiplicativeExpression a0_0 =null;
+
+ org.emftext.language.java.operators.AdditiveOperator a1_0 =null;
+
+ org.emftext.language.java.expressions.MultiplicativeExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 85) ) { return element; }
+
+ // Java.g:29550:2: ( (a0_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator ) (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) ) )* )
+ // Java.g:29551:2: (a0_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator ) (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) ) )*
+ {
+ // Java.g:29551:2: (a0_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression )
+ // Java.g:29552:3: a0_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_MultiplicativeExpression_in_parse_org_emftext_language_java_expressions_AdditiveExpression19402);
+ a0_0=parse_org_emftext_language_java_expressions_MultiplicativeExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAdditiveExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.ADDITIVE_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_83_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(15951);
+ addExpectedElement(15952);
+ addExpectedElement(15953);
+ addExpectedElement(15954);
+ addExpectedElement(15955);
+ addExpectedElement(15956);
+ addExpectedElement(15957);
+ addExpectedElement(15958);
+ addExpectedElement(15959);
+ addExpectedElement(15960);
+ addExpectedElement(15961);
+ addExpectedElement(15962);
+ addExpectedElement(15963);
+ addExpectedElement(15964);
+ addExpectedElement(15965);
+ addExpectedElement(15966);
+ addExpectedElement(15967);
+ addExpectedElement(15968);
+ addExpectedElement(15969);
+ addExpectedElement(15970);
+ addExpectedElement(15971);
+ addExpectedElement(15972);
+ addExpectedElement(15973);
+ addExpectedElement(15974);
+ addExpectedElement(15975);
+ addExpectedElement(15976);
+ addExpectedElement(15977);
+ addExpectedElement(15978);
+ addExpectedElement(15979);
+ addExpectedElement(15980);
+ addExpectedElement(15981);
+ addExpectedElement(15982);
+ addExpectedElement(15983);
+ addExpectedElement(15984);
+ addExpectedElement(15985);
+ addExpectedElement(15986);
+ addExpectedElement(15987);
+ addExpectedElement(15988);
+ addExpectedElement(15989);
+ addExpectedElement(15990);
+ addExpectedElement(15991);
+ addExpectedElement(15992);
+ addExpectedElement(15993);
+ addExpectedElement(15994);
+ addExpectedElement(15995);
+ addExpectedElement(15996);
+ addExpectedElement(15997);
+ addExpectedElement(15998);
+ addExpectedElement(15999);
+ addExpectedElement(16000);
+ addExpectedElement(16001);
+ addExpectedElement(16002);
+ addExpectedElement(16003);
+ addExpectedElement(16004);
+ addExpectedElement(16005);
+ addExpectedElement(16006);
+ addExpectedElement(16007);
+ addExpectedElement(16008);
+ addExpectedElement(16009);
+ addExpectedElement(16010);
+ addExpectedElement(16011);
+ addExpectedElement(16012);
+ addExpectedElement(16013);
+ addExpectedElement(16014);
+ addExpectedElement(16015);
+ addExpectedElement(16016);
+ }
+
+ // Java.g:29642:2: ( ( (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator ) (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) ) )*
+ loop206:
+ do {
+ int alt206=2;
+ int LA206_0 = input.LA(1);
+
+ if ( (LA206_0==30||LA206_0==34) ) {
+ alt206=1;
+ }
+
+
+ switch (alt206) {
+ case 1 :
+ // Java.g:29643:3: ( (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator ) (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) )
+ {
+ // Java.g:29643:3: ( (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator ) (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression ) )
+ // Java.g:29644:4: (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator ) (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression )
+ {
+ // Java.g:29644:4: (a1_0= parse_org_emftext_language_java_operators_AdditiveOperator )
+ // Java.g:29645:5: a1_0= parse_org_emftext_language_java_operators_AdditiveOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AdditiveOperator_in_parse_org_emftext_language_java_expressions_AdditiveExpression19435);
+ a1_0=parse_org_emftext_language_java_operators_AdditiveOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAdditiveExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_83_0_0_1_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16017);
+ addExpectedElement(16018);
+ addExpectedElement(16019);
+ addExpectedElement(16020);
+ addExpectedElement(16021);
+ addExpectedElement(16022);
+ addExpectedElement(16023);
+ addExpectedElement(16024);
+ addExpectedElement(16025);
+ addExpectedElement(16026);
+ addExpectedElement(16027);
+ addExpectedElement(16028);
+ addExpectedElement(16029);
+ addExpectedElement(16030);
+ addExpectedElement(16031);
+ addExpectedElement(16032);
+ addExpectedElement(16033);
+ addExpectedElement(16034);
+ addExpectedElement(16035);
+ addExpectedElement(16036);
+ addExpectedElement(16037);
+ addExpectedElement(16038);
+ addExpectedElement(16039);
+ addExpectedElement(16040);
+ addExpectedElement(16041);
+ addExpectedElement(16042);
+ addExpectedElement(16043);
+ addExpectedElement(16044);
+ addExpectedElement(16045);
+ addExpectedElement(16046);
+ addExpectedElement(16047);
+ addExpectedElement(16048);
+ addExpectedElement(16049);
+ addExpectedElement(16050);
+ addExpectedElement(16051);
+ addExpectedElement(16052);
+ addExpectedElement(16053);
+ addExpectedElement(16054);
+ addExpectedElement(16055);
+ addExpectedElement(16056);
+ addExpectedElement(16057);
+ addExpectedElement(16058);
+ addExpectedElement(16059);
+ }
+
+ // Java.g:29712:4: (a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression )
+ // Java.g:29713:5: a2_0= parse_org_emftext_language_java_expressions_MultiplicativeExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_MultiplicativeExpression_in_parse_org_emftext_language_java_expressions_AdditiveExpression19469);
+ a2_0=parse_org_emftext_language_java_expressions_MultiplicativeExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createAdditiveExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.ADDITIVE_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_83_0_0_1_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16060);
+ addExpectedElement(16061);
+ addExpectedElement(16062);
+ addExpectedElement(16063);
+ addExpectedElement(16064);
+ addExpectedElement(16065);
+ addExpectedElement(16066);
+ addExpectedElement(16067);
+ addExpectedElement(16068);
+ addExpectedElement(16069);
+ addExpectedElement(16070);
+ addExpectedElement(16071);
+ addExpectedElement(16072);
+ addExpectedElement(16073);
+ addExpectedElement(16074);
+ addExpectedElement(16075);
+ addExpectedElement(16076);
+ addExpectedElement(16077);
+ addExpectedElement(16078);
+ addExpectedElement(16079);
+ addExpectedElement(16080);
+ addExpectedElement(16081);
+ addExpectedElement(16082);
+ addExpectedElement(16083);
+ addExpectedElement(16084);
+ addExpectedElement(16085);
+ addExpectedElement(16086);
+ addExpectedElement(16087);
+ addExpectedElement(16088);
+ addExpectedElement(16089);
+ addExpectedElement(16090);
+ addExpectedElement(16091);
+ addExpectedElement(16092);
+ addExpectedElement(16093);
+ addExpectedElement(16094);
+ addExpectedElement(16095);
+ addExpectedElement(16096);
+ addExpectedElement(16097);
+ addExpectedElement(16098);
+ addExpectedElement(16099);
+ addExpectedElement(16100);
+ addExpectedElement(16101);
+ addExpectedElement(16102);
+ addExpectedElement(16103);
+ addExpectedElement(16104);
+ addExpectedElement(16105);
+ addExpectedElement(16106);
+ addExpectedElement(16107);
+ addExpectedElement(16108);
+ addExpectedElement(16109);
+ addExpectedElement(16110);
+ addExpectedElement(16111);
+ addExpectedElement(16112);
+ addExpectedElement(16113);
+ addExpectedElement(16114);
+ addExpectedElement(16115);
+ addExpectedElement(16116);
+ addExpectedElement(16117);
+ addExpectedElement(16118);
+ addExpectedElement(16119);
+ addExpectedElement(16120);
+ addExpectedElement(16121);
+ addExpectedElement(16122);
+ addExpectedElement(16123);
+ addExpectedElement(16124);
+ addExpectedElement(16125);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop206;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16126);
+ addExpectedElement(16127);
+ addExpectedElement(16128);
+ addExpectedElement(16129);
+ addExpectedElement(16130);
+ addExpectedElement(16131);
+ addExpectedElement(16132);
+ addExpectedElement(16133);
+ addExpectedElement(16134);
+ addExpectedElement(16135);
+ addExpectedElement(16136);
+ addExpectedElement(16137);
+ addExpectedElement(16138);
+ addExpectedElement(16139);
+ addExpectedElement(16140);
+ addExpectedElement(16141);
+ addExpectedElement(16142);
+ addExpectedElement(16143);
+ addExpectedElement(16144);
+ addExpectedElement(16145);
+ addExpectedElement(16146);
+ addExpectedElement(16147);
+ addExpectedElement(16148);
+ addExpectedElement(16149);
+ addExpectedElement(16150);
+ addExpectedElement(16151);
+ addExpectedElement(16152);
+ addExpectedElement(16153);
+ addExpectedElement(16154);
+ addExpectedElement(16155);
+ addExpectedElement(16156);
+ addExpectedElement(16157);
+ addExpectedElement(16158);
+ addExpectedElement(16159);
+ addExpectedElement(16160);
+ addExpectedElement(16161);
+ addExpectedElement(16162);
+ addExpectedElement(16163);
+ addExpectedElement(16164);
+ addExpectedElement(16165);
+ addExpectedElement(16166);
+ addExpectedElement(16167);
+ addExpectedElement(16168);
+ addExpectedElement(16169);
+ addExpectedElement(16170);
+ addExpectedElement(16171);
+ addExpectedElement(16172);
+ addExpectedElement(16173);
+ addExpectedElement(16174);
+ addExpectedElement(16175);
+ addExpectedElement(16176);
+ addExpectedElement(16177);
+ addExpectedElement(16178);
+ addExpectedElement(16179);
+ addExpectedElement(16180);
+ addExpectedElement(16181);
+ addExpectedElement(16182);
+ addExpectedElement(16183);
+ addExpectedElement(16184);
+ addExpectedElement(16185);
+ addExpectedElement(16186);
+ addExpectedElement(16187);
+ addExpectedElement(16188);
+ addExpectedElement(16189);
+ addExpectedElement(16190);
+ addExpectedElement(16191);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 85, parse_org_emftext_language_java_expressions_AdditiveExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_AdditiveExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_MultiplicativeExpression"
+ // Java.g:29877:1: parse_org_emftext_language_java_expressions_MultiplicativeExpression returns [org.emftext.language.java.expressions.MultiplicativeExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator ) (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ) )* ;
+ public final org.emftext.language.java.expressions.MultiplicativeExpression parse_org_emftext_language_java_expressions_MultiplicativeExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.MultiplicativeExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_MultiplicativeExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.UnaryExpression a0_0 =null;
+
+ org.emftext.language.java.operators.MultiplicativeOperator a1_0 =null;
+
+ org.emftext.language.java.expressions.UnaryExpression a2_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 86) ) { return element; }
+
+ // Java.g:29880:2: ( (a0_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator ) (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ) )* )
+ // Java.g:29881:2: (a0_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ( ( (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator ) (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ) )*
+ {
+ // Java.g:29881:2: (a0_0= parse_org_emftext_language_java_expressions_UnaryExpression )
+ // Java.g:29882:3: a0_0= parse_org_emftext_language_java_expressions_UnaryExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_UnaryExpression_in_parse_org_emftext_language_java_expressions_MultiplicativeExpression19529);
+ a0_0=parse_org_emftext_language_java_expressions_UnaryExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createMultiplicativeExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.MULTIPLICATIVE_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_84_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16192);
+ addExpectedElement(16193);
+ addExpectedElement(16194);
+ addExpectedElement(16195);
+ addExpectedElement(16196);
+ addExpectedElement(16197);
+ addExpectedElement(16198);
+ addExpectedElement(16199);
+ addExpectedElement(16200);
+ addExpectedElement(16201);
+ addExpectedElement(16202);
+ addExpectedElement(16203);
+ addExpectedElement(16204);
+ addExpectedElement(16205);
+ addExpectedElement(16206);
+ addExpectedElement(16207);
+ addExpectedElement(16208);
+ addExpectedElement(16209);
+ addExpectedElement(16210);
+ addExpectedElement(16211);
+ addExpectedElement(16212);
+ addExpectedElement(16213);
+ addExpectedElement(16214);
+ addExpectedElement(16215);
+ addExpectedElement(16216);
+ addExpectedElement(16217);
+ addExpectedElement(16218);
+ addExpectedElement(16219);
+ addExpectedElement(16220);
+ addExpectedElement(16221);
+ addExpectedElement(16222);
+ addExpectedElement(16223);
+ addExpectedElement(16224);
+ addExpectedElement(16225);
+ addExpectedElement(16226);
+ addExpectedElement(16227);
+ addExpectedElement(16228);
+ addExpectedElement(16229);
+ addExpectedElement(16230);
+ addExpectedElement(16231);
+ addExpectedElement(16232);
+ addExpectedElement(16233);
+ addExpectedElement(16234);
+ addExpectedElement(16235);
+ addExpectedElement(16236);
+ addExpectedElement(16237);
+ addExpectedElement(16238);
+ addExpectedElement(16239);
+ addExpectedElement(16240);
+ addExpectedElement(16241);
+ addExpectedElement(16242);
+ addExpectedElement(16243);
+ addExpectedElement(16244);
+ addExpectedElement(16245);
+ addExpectedElement(16246);
+ addExpectedElement(16247);
+ addExpectedElement(16248);
+ addExpectedElement(16249);
+ addExpectedElement(16250);
+ addExpectedElement(16251);
+ addExpectedElement(16252);
+ addExpectedElement(16253);
+ addExpectedElement(16254);
+ addExpectedElement(16255);
+ addExpectedElement(16256);
+ addExpectedElement(16257);
+ addExpectedElement(16258);
+ addExpectedElement(16259);
+ addExpectedElement(16260);
+ }
+
+ // Java.g:29975:2: ( ( (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator ) (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ) )*
+ loop207:
+ do {
+ int alt207=2;
+ int LA207_0 = input.LA(1);
+
+ if ( (LA207_0==28||LA207_0==39||LA207_0==51) ) {
+ alt207=1;
+ }
+
+
+ switch (alt207) {
+ case 1 :
+ // Java.g:29976:3: ( (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator ) (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression ) )
+ {
+ // Java.g:29976:3: ( (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator ) (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression ) )
+ // Java.g:29977:4: (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator ) (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression )
+ {
+ // Java.g:29977:4: (a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator )
+ // Java.g:29978:5: a1_0= parse_org_emftext_language_java_operators_MultiplicativeOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_MultiplicativeOperator_in_parse_org_emftext_language_java_expressions_MultiplicativeExpression19562);
+ a1_0=parse_org_emftext_language_java_operators_MultiplicativeOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createMultiplicativeExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_84_0_0_1_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16261);
+ addExpectedElement(16262);
+ addExpectedElement(16263);
+ addExpectedElement(16264);
+ addExpectedElement(16265);
+ addExpectedElement(16266);
+ addExpectedElement(16267);
+ addExpectedElement(16268);
+ addExpectedElement(16269);
+ addExpectedElement(16270);
+ addExpectedElement(16271);
+ addExpectedElement(16272);
+ addExpectedElement(16273);
+ addExpectedElement(16274);
+ addExpectedElement(16275);
+ addExpectedElement(16276);
+ addExpectedElement(16277);
+ addExpectedElement(16278);
+ addExpectedElement(16279);
+ addExpectedElement(16280);
+ addExpectedElement(16281);
+ addExpectedElement(16282);
+ addExpectedElement(16283);
+ addExpectedElement(16284);
+ addExpectedElement(16285);
+ addExpectedElement(16286);
+ addExpectedElement(16287);
+ addExpectedElement(16288);
+ addExpectedElement(16289);
+ addExpectedElement(16290);
+ addExpectedElement(16291);
+ addExpectedElement(16292);
+ addExpectedElement(16293);
+ addExpectedElement(16294);
+ addExpectedElement(16295);
+ addExpectedElement(16296);
+ addExpectedElement(16297);
+ addExpectedElement(16298);
+ addExpectedElement(16299);
+ addExpectedElement(16300);
+ addExpectedElement(16301);
+ addExpectedElement(16302);
+ addExpectedElement(16303);
+ }
+
+ // Java.g:30045:4: (a2_0= parse_org_emftext_language_java_expressions_UnaryExpression )
+ // Java.g:30046:5: a2_0= parse_org_emftext_language_java_expressions_UnaryExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_UnaryExpression_in_parse_org_emftext_language_java_expressions_MultiplicativeExpression19596);
+ a2_0=parse_org_emftext_language_java_expressions_UnaryExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createMultiplicativeExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.MULTIPLICATIVE_EXPRESSION__CHILDREN, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_84_0_0_1_0_0_3, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16304);
+ addExpectedElement(16305);
+ addExpectedElement(16306);
+ addExpectedElement(16307);
+ addExpectedElement(16308);
+ addExpectedElement(16309);
+ addExpectedElement(16310);
+ addExpectedElement(16311);
+ addExpectedElement(16312);
+ addExpectedElement(16313);
+ addExpectedElement(16314);
+ addExpectedElement(16315);
+ addExpectedElement(16316);
+ addExpectedElement(16317);
+ addExpectedElement(16318);
+ addExpectedElement(16319);
+ addExpectedElement(16320);
+ addExpectedElement(16321);
+ addExpectedElement(16322);
+ addExpectedElement(16323);
+ addExpectedElement(16324);
+ addExpectedElement(16325);
+ addExpectedElement(16326);
+ addExpectedElement(16327);
+ addExpectedElement(16328);
+ addExpectedElement(16329);
+ addExpectedElement(16330);
+ addExpectedElement(16331);
+ addExpectedElement(16332);
+ addExpectedElement(16333);
+ addExpectedElement(16334);
+ addExpectedElement(16335);
+ addExpectedElement(16336);
+ addExpectedElement(16337);
+ addExpectedElement(16338);
+ addExpectedElement(16339);
+ addExpectedElement(16340);
+ addExpectedElement(16341);
+ addExpectedElement(16342);
+ addExpectedElement(16343);
+ addExpectedElement(16344);
+ addExpectedElement(16345);
+ addExpectedElement(16346);
+ addExpectedElement(16347);
+ addExpectedElement(16348);
+ addExpectedElement(16349);
+ addExpectedElement(16350);
+ addExpectedElement(16351);
+ addExpectedElement(16352);
+ addExpectedElement(16353);
+ addExpectedElement(16354);
+ addExpectedElement(16355);
+ addExpectedElement(16356);
+ addExpectedElement(16357);
+ addExpectedElement(16358);
+ addExpectedElement(16359);
+ addExpectedElement(16360);
+ addExpectedElement(16361);
+ addExpectedElement(16362);
+ addExpectedElement(16363);
+ addExpectedElement(16364);
+ addExpectedElement(16365);
+ addExpectedElement(16366);
+ addExpectedElement(16367);
+ addExpectedElement(16368);
+ addExpectedElement(16369);
+ addExpectedElement(16370);
+ addExpectedElement(16371);
+ addExpectedElement(16372);
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop207;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16373);
+ addExpectedElement(16374);
+ addExpectedElement(16375);
+ addExpectedElement(16376);
+ addExpectedElement(16377);
+ addExpectedElement(16378);
+ addExpectedElement(16379);
+ addExpectedElement(16380);
+ addExpectedElement(16381);
+ addExpectedElement(16382);
+ addExpectedElement(16383);
+ addExpectedElement(16384);
+ addExpectedElement(16385);
+ addExpectedElement(16386);
+ addExpectedElement(16387);
+ addExpectedElement(16388);
+ addExpectedElement(16389);
+ addExpectedElement(16390);
+ addExpectedElement(16391);
+ addExpectedElement(16392);
+ addExpectedElement(16393);
+ addExpectedElement(16394);
+ addExpectedElement(16395);
+ addExpectedElement(16396);
+ addExpectedElement(16397);
+ addExpectedElement(16398);
+ addExpectedElement(16399);
+ addExpectedElement(16400);
+ addExpectedElement(16401);
+ addExpectedElement(16402);
+ addExpectedElement(16403);
+ addExpectedElement(16404);
+ addExpectedElement(16405);
+ addExpectedElement(16406);
+ addExpectedElement(16407);
+ addExpectedElement(16408);
+ addExpectedElement(16409);
+ addExpectedElement(16410);
+ addExpectedElement(16411);
+ addExpectedElement(16412);
+ addExpectedElement(16413);
+ addExpectedElement(16414);
+ addExpectedElement(16415);
+ addExpectedElement(16416);
+ addExpectedElement(16417);
+ addExpectedElement(16418);
+ addExpectedElement(16419);
+ addExpectedElement(16420);
+ addExpectedElement(16421);
+ addExpectedElement(16422);
+ addExpectedElement(16423);
+ addExpectedElement(16424);
+ addExpectedElement(16425);
+ addExpectedElement(16426);
+ addExpectedElement(16427);
+ addExpectedElement(16428);
+ addExpectedElement(16429);
+ addExpectedElement(16430);
+ addExpectedElement(16431);
+ addExpectedElement(16432);
+ addExpectedElement(16433);
+ addExpectedElement(16434);
+ addExpectedElement(16435);
+ addExpectedElement(16436);
+ addExpectedElement(16437);
+ addExpectedElement(16438);
+ addExpectedElement(16439);
+ addExpectedElement(16440);
+ addExpectedElement(16441);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 86, parse_org_emftext_language_java_expressions_MultiplicativeExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_MultiplicativeExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_UnaryExpression"
+ // Java.g:30216:1: parse_org_emftext_language_java_expressions_UnaryExpression returns [org.emftext.language.java.expressions.UnaryExpression element = null] : ( (a0_0= parse_org_emftext_language_java_operators_UnaryOperator ) )* (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpression ) ;
+ public final org.emftext.language.java.expressions.UnaryExpression parse_org_emftext_language_java_expressions_UnaryExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.UnaryExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_UnaryExpression_StartIndex = input.index();
+
+ org.emftext.language.java.operators.UnaryOperator a0_0 =null;
+
+ org.emftext.language.java.expressions.UnaryModificationExpression a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 87) ) { return element; }
+
+ // Java.g:30219:2: ( ( (a0_0= parse_org_emftext_language_java_operators_UnaryOperator ) )* (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpression ) )
+ // Java.g:30220:2: ( (a0_0= parse_org_emftext_language_java_operators_UnaryOperator ) )* (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpression )
+ {
+ // Java.g:30220:2: ( (a0_0= parse_org_emftext_language_java_operators_UnaryOperator ) )*
+ loop208:
+ do {
+ int alt208=2;
+ int LA208_0 = input.LA(1);
+
+ if ( (LA208_0==21||LA208_0==30||LA208_0==34||LA208_0==110) ) {
+ alt208=1;
+ }
+
+
+ switch (alt208) {
+ case 1 :
+ // Java.g:30221:3: (a0_0= parse_org_emftext_language_java_operators_UnaryOperator )
+ {
+ // Java.g:30221:3: (a0_0= parse_org_emftext_language_java_operators_UnaryOperator )
+ // Java.g:30222:4: a0_0= parse_org_emftext_language_java_operators_UnaryOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_UnaryOperator_in_parse_org_emftext_language_java_expressions_UnaryExpression19661);
+ a0_0=parse_org_emftext_language_java_operators_UnaryOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createUnaryExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.UNARY_EXPRESSION__OPERATORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_85_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop208;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16442);
+ addExpectedElement(16443);
+ addExpectedElement(16444);
+ addExpectedElement(16445);
+ addExpectedElement(16446);
+ addExpectedElement(16447);
+ addExpectedElement(16448);
+ addExpectedElement(16449);
+ addExpectedElement(16450);
+ addExpectedElement(16451);
+ addExpectedElement(16452);
+ addExpectedElement(16453);
+ addExpectedElement(16454);
+ addExpectedElement(16455);
+ addExpectedElement(16456);
+ addExpectedElement(16457);
+ addExpectedElement(16458);
+ addExpectedElement(16459);
+ addExpectedElement(16460);
+ addExpectedElement(16461);
+ addExpectedElement(16462);
+ addExpectedElement(16463);
+ addExpectedElement(16464);
+ addExpectedElement(16465);
+ addExpectedElement(16466);
+ addExpectedElement(16467);
+ addExpectedElement(16468);
+ addExpectedElement(16469);
+ addExpectedElement(16470);
+ addExpectedElement(16471);
+ addExpectedElement(16472);
+ addExpectedElement(16473);
+ addExpectedElement(16474);
+ addExpectedElement(16475);
+ addExpectedElement(16476);
+ addExpectedElement(16477);
+ addExpectedElement(16478);
+ addExpectedElement(16479);
+ addExpectedElement(16480);
+ addExpectedElement(16481);
+ addExpectedElement(16482);
+ addExpectedElement(16483);
+ addExpectedElement(16484);
+ }
+
+ // Java.g:30290:2: (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpression )
+ // Java.g:30291:3: a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_UnaryModificationExpression_in_parse_org_emftext_language_java_expressions_UnaryExpression19691);
+ a1_0=parse_org_emftext_language_java_expressions_UnaryModificationExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createUnaryExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.UNARY_EXPRESSION__CHILD), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_85_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16485);
+ addExpectedElement(16486);
+ addExpectedElement(16487);
+ addExpectedElement(16488);
+ addExpectedElement(16489);
+ addExpectedElement(16490);
+ addExpectedElement(16491);
+ addExpectedElement(16492);
+ addExpectedElement(16493);
+ addExpectedElement(16494);
+ addExpectedElement(16495);
+ addExpectedElement(16496);
+ addExpectedElement(16497);
+ addExpectedElement(16498);
+ addExpectedElement(16499);
+ addExpectedElement(16500);
+ addExpectedElement(16501);
+ addExpectedElement(16502);
+ addExpectedElement(16503);
+ addExpectedElement(16504);
+ addExpectedElement(16505);
+ addExpectedElement(16506);
+ addExpectedElement(16507);
+ addExpectedElement(16508);
+ addExpectedElement(16509);
+ addExpectedElement(16510);
+ addExpectedElement(16511);
+ addExpectedElement(16512);
+ addExpectedElement(16513);
+ addExpectedElement(16514);
+ addExpectedElement(16515);
+ addExpectedElement(16516);
+ addExpectedElement(16517);
+ addExpectedElement(16518);
+ addExpectedElement(16519);
+ addExpectedElement(16520);
+ addExpectedElement(16521);
+ addExpectedElement(16522);
+ addExpectedElement(16523);
+ addExpectedElement(16524);
+ addExpectedElement(16525);
+ addExpectedElement(16526);
+ addExpectedElement(16527);
+ addExpectedElement(16528);
+ addExpectedElement(16529);
+ addExpectedElement(16530);
+ addExpectedElement(16531);
+ addExpectedElement(16532);
+ addExpectedElement(16533);
+ addExpectedElement(16534);
+ addExpectedElement(16535);
+ addExpectedElement(16536);
+ addExpectedElement(16537);
+ addExpectedElement(16538);
+ addExpectedElement(16539);
+ addExpectedElement(16540);
+ addExpectedElement(16541);
+ addExpectedElement(16542);
+ addExpectedElement(16543);
+ addExpectedElement(16544);
+ addExpectedElement(16545);
+ addExpectedElement(16546);
+ addExpectedElement(16547);
+ addExpectedElement(16548);
+ addExpectedElement(16549);
+ addExpectedElement(16550);
+ addExpectedElement(16551);
+ addExpectedElement(16552);
+ addExpectedElement(16553);
+ addExpectedElement(16554);
+ addExpectedElement(16555);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 87, parse_org_emftext_language_java_expressions_UnaryExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_UnaryExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression"
+ // Java.g:30388:1: parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression returns [org.emftext.language.java.expressions.SuffixUnaryModificationExpression element = null] : (a0_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild ) ( ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )? ;
+ public final org.emftext.language.java.expressions.SuffixUnaryModificationExpression parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.SuffixUnaryModificationExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.UnaryModificationExpressionChild a0_0 =null;
+
+ org.emftext.language.java.operators.UnaryModificationOperator a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 88) ) { return element; }
+
+ // Java.g:30391:2: ( (a0_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild ) ( ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )? )
+ // Java.g:30392:2: (a0_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild ) ( ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )?
+ {
+ // Java.g:30392:2: (a0_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild )
+ // Java.g:30393:3: a0_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild_in_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression19728);
+ a0_0=parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createSuffixUnaryModificationExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.SUFFIX_UNARY_MODIFICATION_EXPRESSION__CHILD), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_86_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16556);
+ addExpectedElement(16557);
+ addExpectedElement(16558);
+ addExpectedElement(16559);
+ addExpectedElement(16560);
+ addExpectedElement(16561);
+ addExpectedElement(16562);
+ addExpectedElement(16563);
+ addExpectedElement(16564);
+ addExpectedElement(16565);
+ addExpectedElement(16566);
+ addExpectedElement(16567);
+ addExpectedElement(16568);
+ addExpectedElement(16569);
+ addExpectedElement(16570);
+ addExpectedElement(16571);
+ addExpectedElement(16572);
+ addExpectedElement(16573);
+ addExpectedElement(16574);
+ addExpectedElement(16575);
+ addExpectedElement(16576);
+ addExpectedElement(16577);
+ addExpectedElement(16578);
+ addExpectedElement(16579);
+ addExpectedElement(16580);
+ addExpectedElement(16581);
+ addExpectedElement(16582);
+ addExpectedElement(16583);
+ addExpectedElement(16584);
+ addExpectedElement(16585);
+ addExpectedElement(16586);
+ addExpectedElement(16587);
+ addExpectedElement(16588);
+ addExpectedElement(16589);
+ addExpectedElement(16590);
+ addExpectedElement(16591);
+ addExpectedElement(16592);
+ addExpectedElement(16593);
+ addExpectedElement(16594);
+ addExpectedElement(16595);
+ addExpectedElement(16596);
+ addExpectedElement(16597);
+ addExpectedElement(16598);
+ addExpectedElement(16599);
+ addExpectedElement(16600);
+ addExpectedElement(16601);
+ addExpectedElement(16602);
+ addExpectedElement(16603);
+ addExpectedElement(16604);
+ addExpectedElement(16605);
+ addExpectedElement(16606);
+ addExpectedElement(16607);
+ addExpectedElement(16608);
+ addExpectedElement(16609);
+ addExpectedElement(16610);
+ addExpectedElement(16611);
+ addExpectedElement(16612);
+ addExpectedElement(16613);
+ addExpectedElement(16614);
+ addExpectedElement(16615);
+ addExpectedElement(16616);
+ addExpectedElement(16617);
+ addExpectedElement(16618);
+ addExpectedElement(16619);
+ addExpectedElement(16620);
+ addExpectedElement(16621);
+ addExpectedElement(16622);
+ addExpectedElement(16623);
+ addExpectedElement(16624);
+ addExpectedElement(16625);
+ addExpectedElement(16626);
+ }
+
+ // Java.g:30488:2: ( ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )?
+ int alt209=2;
+ int LA209_0 = input.LA(1);
+
+ if ( (LA209_0==31) ) {
+ int LA209_1 = input.LA(2);
+
+ if ( (synpred210_Java()) ) {
+ alt209=1;
+ }
+ }
+ else if ( (LA209_0==35) ) {
+ int LA209_2 = input.LA(2);
+
+ if ( (synpred210_Java()) ) {
+ alt209=1;
+ }
+ }
+ switch (alt209) {
+ case 1 :
+ // Java.g:30489:3: ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) )
+ {
+ // Java.g:30489:3: ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) )
+ // Java.g:30490:4: (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator )
+ {
+ // Java.g:30490:4: (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator )
+ // Java.g:30491:5: a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_UnaryModificationOperator_in_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression19761);
+ a1_0=parse_org_emftext_language_java_operators_UnaryModificationOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createSuffixUnaryModificationExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.SUFFIX_UNARY_MODIFICATION_EXPRESSION__OPERATOR), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_86_0_0_1_0_0_0, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16627);
+ addExpectedElement(16628);
+ addExpectedElement(16629);
+ addExpectedElement(16630);
+ addExpectedElement(16631);
+ addExpectedElement(16632);
+ addExpectedElement(16633);
+ addExpectedElement(16634);
+ addExpectedElement(16635);
+ addExpectedElement(16636);
+ addExpectedElement(16637);
+ addExpectedElement(16638);
+ addExpectedElement(16639);
+ addExpectedElement(16640);
+ addExpectedElement(16641);
+ addExpectedElement(16642);
+ addExpectedElement(16643);
+ addExpectedElement(16644);
+ addExpectedElement(16645);
+ addExpectedElement(16646);
+ addExpectedElement(16647);
+ addExpectedElement(16648);
+ addExpectedElement(16649);
+ addExpectedElement(16650);
+ addExpectedElement(16651);
+ addExpectedElement(16652);
+ addExpectedElement(16653);
+ addExpectedElement(16654);
+ addExpectedElement(16655);
+ addExpectedElement(16656);
+ addExpectedElement(16657);
+ addExpectedElement(16658);
+ addExpectedElement(16659);
+ addExpectedElement(16660);
+ addExpectedElement(16661);
+ addExpectedElement(16662);
+ addExpectedElement(16663);
+ addExpectedElement(16664);
+ addExpectedElement(16665);
+ addExpectedElement(16666);
+ addExpectedElement(16667);
+ addExpectedElement(16668);
+ addExpectedElement(16669);
+ addExpectedElement(16670);
+ addExpectedElement(16671);
+ addExpectedElement(16672);
+ addExpectedElement(16673);
+ addExpectedElement(16674);
+ addExpectedElement(16675);
+ addExpectedElement(16676);
+ addExpectedElement(16677);
+ addExpectedElement(16678);
+ addExpectedElement(16679);
+ addExpectedElement(16680);
+ addExpectedElement(16681);
+ addExpectedElement(16682);
+ addExpectedElement(16683);
+ addExpectedElement(16684);
+ addExpectedElement(16685);
+ addExpectedElement(16686);
+ addExpectedElement(16687);
+ addExpectedElement(16688);
+ addExpectedElement(16689);
+ addExpectedElement(16690);
+ addExpectedElement(16691);
+ addExpectedElement(16692);
+ addExpectedElement(16693);
+ addExpectedElement(16694);
+ addExpectedElement(16695);
+ addExpectedElement(16696);
+ addExpectedElement(16697);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16698);
+ addExpectedElement(16699);
+ addExpectedElement(16700);
+ addExpectedElement(16701);
+ addExpectedElement(16702);
+ addExpectedElement(16703);
+ addExpectedElement(16704);
+ addExpectedElement(16705);
+ addExpectedElement(16706);
+ addExpectedElement(16707);
+ addExpectedElement(16708);
+ addExpectedElement(16709);
+ addExpectedElement(16710);
+ addExpectedElement(16711);
+ addExpectedElement(16712);
+ addExpectedElement(16713);
+ addExpectedElement(16714);
+ addExpectedElement(16715);
+ addExpectedElement(16716);
+ addExpectedElement(16717);
+ addExpectedElement(16718);
+ addExpectedElement(16719);
+ addExpectedElement(16720);
+ addExpectedElement(16721);
+ addExpectedElement(16722);
+ addExpectedElement(16723);
+ addExpectedElement(16724);
+ addExpectedElement(16725);
+ addExpectedElement(16726);
+ addExpectedElement(16727);
+ addExpectedElement(16728);
+ addExpectedElement(16729);
+ addExpectedElement(16730);
+ addExpectedElement(16731);
+ addExpectedElement(16732);
+ addExpectedElement(16733);
+ addExpectedElement(16734);
+ addExpectedElement(16735);
+ addExpectedElement(16736);
+ addExpectedElement(16737);
+ addExpectedElement(16738);
+ addExpectedElement(16739);
+ addExpectedElement(16740);
+ addExpectedElement(16741);
+ addExpectedElement(16742);
+ addExpectedElement(16743);
+ addExpectedElement(16744);
+ addExpectedElement(16745);
+ addExpectedElement(16746);
+ addExpectedElement(16747);
+ addExpectedElement(16748);
+ addExpectedElement(16749);
+ addExpectedElement(16750);
+ addExpectedElement(16751);
+ addExpectedElement(16752);
+ addExpectedElement(16753);
+ addExpectedElement(16754);
+ addExpectedElement(16755);
+ addExpectedElement(16756);
+ addExpectedElement(16757);
+ addExpectedElement(16758);
+ addExpectedElement(16759);
+ addExpectedElement(16760);
+ addExpectedElement(16761);
+ addExpectedElement(16762);
+ addExpectedElement(16763);
+ addExpectedElement(16764);
+ addExpectedElement(16765);
+ addExpectedElement(16766);
+ addExpectedElement(16767);
+ addExpectedElement(16768);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 88, parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression"
+ // Java.g:30665:1: parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression returns [org.emftext.language.java.expressions.PrefixUnaryModificationExpression element = null] : ( ( (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )? (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild ) ;
+ public final org.emftext.language.java.expressions.PrefixUnaryModificationExpression parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.PrefixUnaryModificationExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression_StartIndex = input.index();
+
+ org.emftext.language.java.operators.UnaryModificationOperator a0_0 =null;
+
+ org.emftext.language.java.expressions.UnaryModificationExpressionChild a1_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 89) ) { return element; }
+
+ // Java.g:30668:2: ( ( ( (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )? (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild ) )
+ // Java.g:30669:2: ( ( (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )? (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild )
+ {
+ // Java.g:30669:2: ( ( (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )?
+ int alt210=2;
+ int LA210_0 = input.LA(1);
+
+ if ( (LA210_0==31||LA210_0==35) ) {
+ alt210=1;
+ }
+ switch (alt210) {
+ case 1 :
+ // Java.g:30670:3: ( (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) )
+ {
+ // Java.g:30670:3: ( (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) )
+ // Java.g:30671:4: (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator )
+ {
+ // Java.g:30671:4: (a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator )
+ // Java.g:30672:5: a0_0= parse_org_emftext_language_java_operators_UnaryModificationOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_UnaryModificationOperator_in_parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression19832);
+ a0_0=parse_org_emftext_language_java_operators_UnaryModificationOperator();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createPrefixUnaryModificationExpression();
+ startIncompleteElement(element);
+ }
+ if (a0_0 != null) {
+ if (a0_0 != null) {
+ Object value = a0_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.PREFIX_UNARY_MODIFICATION_EXPRESSION__OPERATOR), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_87_0_0_0_0_0_0, a0_0, true);
+ copyLocalizationInfos(a0_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16769);
+ addExpectedElement(16770);
+ addExpectedElement(16771);
+ addExpectedElement(16772);
+ addExpectedElement(16773);
+ addExpectedElement(16774);
+ addExpectedElement(16775);
+ addExpectedElement(16776);
+ addExpectedElement(16777);
+ addExpectedElement(16778);
+ addExpectedElement(16779);
+ addExpectedElement(16780);
+ addExpectedElement(16781);
+ addExpectedElement(16782);
+ addExpectedElement(16783);
+ addExpectedElement(16784);
+ addExpectedElement(16785);
+ addExpectedElement(16786);
+ addExpectedElement(16787);
+ addExpectedElement(16788);
+ addExpectedElement(16789);
+ addExpectedElement(16790);
+ addExpectedElement(16791);
+ addExpectedElement(16792);
+ addExpectedElement(16793);
+ addExpectedElement(16794);
+ addExpectedElement(16795);
+ addExpectedElement(16796);
+ addExpectedElement(16797);
+ addExpectedElement(16798);
+ addExpectedElement(16799);
+ addExpectedElement(16800);
+ addExpectedElement(16801);
+ addExpectedElement(16802);
+ addExpectedElement(16803);
+ addExpectedElement(16804);
+ addExpectedElement(16805);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16806);
+ addExpectedElement(16807);
+ addExpectedElement(16808);
+ addExpectedElement(16809);
+ addExpectedElement(16810);
+ addExpectedElement(16811);
+ addExpectedElement(16812);
+ addExpectedElement(16813);
+ addExpectedElement(16814);
+ addExpectedElement(16815);
+ addExpectedElement(16816);
+ addExpectedElement(16817);
+ addExpectedElement(16818);
+ addExpectedElement(16819);
+ addExpectedElement(16820);
+ addExpectedElement(16821);
+ addExpectedElement(16822);
+ addExpectedElement(16823);
+ addExpectedElement(16824);
+ addExpectedElement(16825);
+ addExpectedElement(16826);
+ addExpectedElement(16827);
+ addExpectedElement(16828);
+ addExpectedElement(16829);
+ addExpectedElement(16830);
+ addExpectedElement(16831);
+ addExpectedElement(16832);
+ addExpectedElement(16833);
+ addExpectedElement(16834);
+ addExpectedElement(16835);
+ addExpectedElement(16836);
+ addExpectedElement(16837);
+ addExpectedElement(16838);
+ addExpectedElement(16839);
+ addExpectedElement(16840);
+ addExpectedElement(16841);
+ addExpectedElement(16842);
+ }
+
+ // Java.g:30776:2: (a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild )
+ // Java.g:30777:3: a1_0= parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild_in_parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression19877);
+ a1_0=parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createPrefixUnaryModificationExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.PREFIX_UNARY_MODIFICATION_EXPRESSION__CHILD), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_87_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16843);
+ addExpectedElement(16844);
+ addExpectedElement(16845);
+ addExpectedElement(16846);
+ addExpectedElement(16847);
+ addExpectedElement(16848);
+ addExpectedElement(16849);
+ addExpectedElement(16850);
+ addExpectedElement(16851);
+ addExpectedElement(16852);
+ addExpectedElement(16853);
+ addExpectedElement(16854);
+ addExpectedElement(16855);
+ addExpectedElement(16856);
+ addExpectedElement(16857);
+ addExpectedElement(16858);
+ addExpectedElement(16859);
+ addExpectedElement(16860);
+ addExpectedElement(16861);
+ addExpectedElement(16862);
+ addExpectedElement(16863);
+ addExpectedElement(16864);
+ addExpectedElement(16865);
+ addExpectedElement(16866);
+ addExpectedElement(16867);
+ addExpectedElement(16868);
+ addExpectedElement(16869);
+ addExpectedElement(16870);
+ addExpectedElement(16871);
+ addExpectedElement(16872);
+ addExpectedElement(16873);
+ addExpectedElement(16874);
+ addExpectedElement(16875);
+ addExpectedElement(16876);
+ addExpectedElement(16877);
+ addExpectedElement(16878);
+ addExpectedElement(16879);
+ addExpectedElement(16880);
+ addExpectedElement(16881);
+ addExpectedElement(16882);
+ addExpectedElement(16883);
+ addExpectedElement(16884);
+ addExpectedElement(16885);
+ addExpectedElement(16886);
+ addExpectedElement(16887);
+ addExpectedElement(16888);
+ addExpectedElement(16889);
+ addExpectedElement(16890);
+ addExpectedElement(16891);
+ addExpectedElement(16892);
+ addExpectedElement(16893);
+ addExpectedElement(16894);
+ addExpectedElement(16895);
+ addExpectedElement(16896);
+ addExpectedElement(16897);
+ addExpectedElement(16898);
+ addExpectedElement(16899);
+ addExpectedElement(16900);
+ addExpectedElement(16901);
+ addExpectedElement(16902);
+ addExpectedElement(16903);
+ addExpectedElement(16904);
+ addExpectedElement(16905);
+ addExpectedElement(16906);
+ addExpectedElement(16907);
+ addExpectedElement(16908);
+ addExpectedElement(16909);
+ addExpectedElement(16910);
+ addExpectedElement(16911);
+ addExpectedElement(16912);
+ addExpectedElement(16913);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 89, parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_CastExpression"
+ // Java.g:30874:1: parse_org_emftext_language_java_expressions_CastExpression returns [org.emftext.language.java.expressions.CastExpression element = null] : a0= '(' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* a3= ')' (a4_0= parse_org_emftext_language_java_expressions_UnaryExpression ) ;
+ public final org.emftext.language.java.expressions.CastExpression parse_org_emftext_language_java_expressions_CastExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.CastExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_CastExpression_StartIndex = input.index();
+
+ Token a0=null;
+ Token a3=null;
+ org.emftext.language.java.types.TypeReference a1_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a2_0 =null;
+
+ org.emftext.language.java.expressions.UnaryExpression a4_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 90) ) { return element; }
+
+ // Java.g:30877:2: (a0= '(' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* a3= ')' (a4_0= parse_org_emftext_language_java_expressions_UnaryExpression ) )
+ // Java.g:30878:2: a0= '(' (a1_0= parse_org_emftext_language_java_types_TypeReference ) ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* a3= ')' (a4_0= parse_org_emftext_language_java_expressions_UnaryExpression )
+ {
+ a0=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_expressions_CastExpression19910); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createCastExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_88_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16914);
+ addExpectedElement(16915);
+ addExpectedElement(16916);
+ addExpectedElement(16917);
+ addExpectedElement(16918);
+ addExpectedElement(16919);
+ addExpectedElement(16920);
+ addExpectedElement(16921);
+ addExpectedElement(16922);
+ addExpectedElement(16923);
+ addExpectedElement(16924);
+ }
+
+ // Java.g:30902:2: (a1_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:30903:3: a1_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_expressions_CastExpression19928);
+ a1_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createCastExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CAST_EXPRESSION__TYPE_REFERENCE), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_88_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16925);
+ addExpectedElement(16926);
+ }
+
+ // Java.g:30929:2: ( (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop211:
+ do {
+ int alt211=2;
+ int LA211_0 = input.LA(1);
+
+ if ( (LA211_0==49) ) {
+ alt211=1;
+ }
+
+
+ switch (alt211) {
+ case 1 :
+ // Java.g:30930:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:30930:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:30931:4: a2_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_expressions_CastExpression19955);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createCastExpression();
+ startIncompleteElement(element);
+ }
+ if (a2_0 != null) {
+ if (a2_0 != null) {
+ Object value = a2_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.CAST_EXPRESSION__ARRAY_DIMENSIONS_BEFORE, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_88_0_0_2, a2_0, true);
+ copyLocalizationInfos(a2_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop211;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16927);
+ addExpectedElement(16928);
+ }
+
+ a3=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_expressions_CastExpression19981); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createCastExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_88_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16929);
+ addExpectedElement(16930);
+ addExpectedElement(16931);
+ addExpectedElement(16932);
+ addExpectedElement(16933);
+ addExpectedElement(16934);
+ addExpectedElement(16935);
+ addExpectedElement(16936);
+ addExpectedElement(16937);
+ addExpectedElement(16938);
+ addExpectedElement(16939);
+ addExpectedElement(16940);
+ addExpectedElement(16941);
+ addExpectedElement(16942);
+ addExpectedElement(16943);
+ addExpectedElement(16944);
+ addExpectedElement(16945);
+ addExpectedElement(16946);
+ addExpectedElement(16947);
+ addExpectedElement(16948);
+ addExpectedElement(16949);
+ addExpectedElement(16950);
+ addExpectedElement(16951);
+ addExpectedElement(16952);
+ addExpectedElement(16953);
+ addExpectedElement(16954);
+ addExpectedElement(16955);
+ addExpectedElement(16956);
+ addExpectedElement(16957);
+ addExpectedElement(16958);
+ addExpectedElement(16959);
+ addExpectedElement(16960);
+ addExpectedElement(16961);
+ addExpectedElement(16962);
+ addExpectedElement(16963);
+ addExpectedElement(16964);
+ addExpectedElement(16965);
+ addExpectedElement(16966);
+ addExpectedElement(16967);
+ addExpectedElement(16968);
+ addExpectedElement(16969);
+ addExpectedElement(16970);
+ addExpectedElement(16971);
+ }
+
+ // Java.g:31014:2: (a4_0= parse_org_emftext_language_java_expressions_UnaryExpression )
+ // Java.g:31015:3: a4_0= parse_org_emftext_language_java_expressions_UnaryExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_UnaryExpression_in_parse_org_emftext_language_java_expressions_CastExpression19999);
+ a4_0=parse_org_emftext_language_java_expressions_UnaryExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createCastExpression();
+ startIncompleteElement(element);
+ }
+ if (a4_0 != null) {
+ if (a4_0 != null) {
+ Object value = a4_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.CAST_EXPRESSION__CHILD), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_88_0_0_5, a4_0, true);
+ copyLocalizationInfos(a4_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(16972);
+ addExpectedElement(16973);
+ addExpectedElement(16974);
+ addExpectedElement(16975);
+ addExpectedElement(16976);
+ addExpectedElement(16977);
+ addExpectedElement(16978);
+ addExpectedElement(16979);
+ addExpectedElement(16980);
+ addExpectedElement(16981);
+ addExpectedElement(16982);
+ addExpectedElement(16983);
+ addExpectedElement(16984);
+ addExpectedElement(16985);
+ addExpectedElement(16986);
+ addExpectedElement(16987);
+ addExpectedElement(16988);
+ addExpectedElement(16989);
+ addExpectedElement(16990);
+ addExpectedElement(16991);
+ addExpectedElement(16992);
+ addExpectedElement(16993);
+ addExpectedElement(16994);
+ addExpectedElement(16995);
+ addExpectedElement(16996);
+ addExpectedElement(16997);
+ addExpectedElement(16998);
+ addExpectedElement(16999);
+ addExpectedElement(17000);
+ addExpectedElement(17001);
+ addExpectedElement(17002);
+ addExpectedElement(17003);
+ addExpectedElement(17004);
+ addExpectedElement(17005);
+ addExpectedElement(17006);
+ addExpectedElement(17007);
+ addExpectedElement(17008);
+ addExpectedElement(17009);
+ addExpectedElement(17010);
+ addExpectedElement(17011);
+ addExpectedElement(17012);
+ addExpectedElement(17013);
+ addExpectedElement(17014);
+ addExpectedElement(17015);
+ addExpectedElement(17016);
+ addExpectedElement(17017);
+ addExpectedElement(17018);
+ addExpectedElement(17019);
+ addExpectedElement(17020);
+ addExpectedElement(17021);
+ addExpectedElement(17022);
+ addExpectedElement(17023);
+ addExpectedElement(17024);
+ addExpectedElement(17025);
+ addExpectedElement(17026);
+ addExpectedElement(17027);
+ addExpectedElement(17028);
+ addExpectedElement(17029);
+ addExpectedElement(17030);
+ addExpectedElement(17031);
+ addExpectedElement(17032);
+ addExpectedElement(17033);
+ addExpectedElement(17034);
+ addExpectedElement(17035);
+ addExpectedElement(17036);
+ addExpectedElement(17037);
+ addExpectedElement(17038);
+ addExpectedElement(17039);
+ addExpectedElement(17040);
+ addExpectedElement(17041);
+ addExpectedElement(17042);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 90, parse_org_emftext_language_java_expressions_CastExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_CastExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_NestedExpression"
+ // Java.g:31112:1: parse_org_emftext_language_java_expressions_NestedExpression returns [org.emftext.language.java.expressions.NestedExpression element = null] : a0= '(' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ')' ( (a3_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a4= '.' (a5_0= parse_org_emftext_language_java_references_Reference ) ) )? ;
+ public final org.emftext.language.java.expressions.NestedExpression parse_org_emftext_language_java_expressions_NestedExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.NestedExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_NestedExpression_StartIndex = input.index();
+
+ Token a0=null;
+ Token a2=null;
+ Token a4=null;
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+ org.emftext.language.java.arrays.ArraySelector a3_0 =null;
+
+ org.emftext.language.java.references.Reference a5_0 =null;
+
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 91) ) { return element; }
+
+ // Java.g:31115:2: (a0= '(' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ')' ( (a3_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a4= '.' (a5_0= parse_org_emftext_language_java_references_Reference ) ) )? )
+ // Java.g:31116:2: a0= '(' (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression ) a2= ')' ( (a3_0= parse_org_emftext_language_java_arrays_ArraySelector ) )* ( (a4= '.' (a5_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ {
+ a0=(Token)match(input,26,FOLLOW_26_in_parse_org_emftext_language_java_expressions_NestedExpression20032); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createNestedExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_89_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17043);
+ addExpectedElement(17044);
+ addExpectedElement(17045);
+ addExpectedElement(17046);
+ addExpectedElement(17047);
+ addExpectedElement(17048);
+ addExpectedElement(17049);
+ addExpectedElement(17050);
+ addExpectedElement(17051);
+ addExpectedElement(17052);
+ addExpectedElement(17053);
+ addExpectedElement(17054);
+ addExpectedElement(17055);
+ addExpectedElement(17056);
+ addExpectedElement(17057);
+ addExpectedElement(17058);
+ addExpectedElement(17059);
+ addExpectedElement(17060);
+ addExpectedElement(17061);
+ addExpectedElement(17062);
+ addExpectedElement(17063);
+ addExpectedElement(17064);
+ addExpectedElement(17065);
+ addExpectedElement(17066);
+ addExpectedElement(17067);
+ addExpectedElement(17068);
+ addExpectedElement(17069);
+ addExpectedElement(17070);
+ addExpectedElement(17071);
+ addExpectedElement(17072);
+ addExpectedElement(17073);
+ addExpectedElement(17074);
+ addExpectedElement(17075);
+ addExpectedElement(17076);
+ addExpectedElement(17077);
+ addExpectedElement(17078);
+ addExpectedElement(17079);
+ addExpectedElement(17080);
+ addExpectedElement(17081);
+ addExpectedElement(17082);
+ addExpectedElement(17083);
+ addExpectedElement(17084);
+ addExpectedElement(17085);
+ }
+
+ // Java.g:31172:2: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:31173:3: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_NestedExpression20050);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createNestedExpression();
+ startIncompleteElement(element);
+ }
+ if (a1_0 != null) {
+ if (a1_0 != null) {
+ Object value = a1_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.NESTED_EXPRESSION__EXPRESSION), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_89_0_0_1, a1_0, true);
+ copyLocalizationInfos(a1_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17086);
+ }
+
+ a2=(Token)match(input,27,FOLLOW_27_in_parse_org_emftext_language_java_expressions_NestedExpression20068); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createNestedExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_89_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17087);
+ addExpectedElement(17088);
+ addExpectedElement(17089);
+ addExpectedElement(17090);
+ addExpectedElement(17091);
+ addExpectedElement(17092);
+ addExpectedElement(17093);
+ addExpectedElement(17094);
+ addExpectedElement(17095);
+ addExpectedElement(17096);
+ addExpectedElement(17097);
+ addExpectedElement(17098);
+ addExpectedElement(17099);
+ addExpectedElement(17100);
+ addExpectedElement(17101);
+ addExpectedElement(17102);
+ addExpectedElement(17103);
+ addExpectedElement(17104);
+ addExpectedElement(17105);
+ addExpectedElement(17106);
+ addExpectedElement(17107);
+ addExpectedElement(17108);
+ addExpectedElement(17109);
+ addExpectedElement(17110);
+ addExpectedElement(17111);
+ addExpectedElement(17112);
+ addExpectedElement(17113);
+ addExpectedElement(17114);
+ addExpectedElement(17115);
+ addExpectedElement(17116);
+ addExpectedElement(17117);
+ addExpectedElement(17118);
+ addExpectedElement(17119);
+ addExpectedElement(17120);
+ addExpectedElement(17121);
+ addExpectedElement(17122);
+ addExpectedElement(17123);
+ addExpectedElement(17124);
+ addExpectedElement(17125);
+ addExpectedElement(17126);
+ addExpectedElement(17127);
+ addExpectedElement(17128);
+ addExpectedElement(17129);
+ addExpectedElement(17130);
+ addExpectedElement(17131);
+ addExpectedElement(17132);
+ addExpectedElement(17133);
+ addExpectedElement(17134);
+ addExpectedElement(17135);
+ addExpectedElement(17136);
+ addExpectedElement(17137);
+ addExpectedElement(17138);
+ addExpectedElement(17139);
+ addExpectedElement(17140);
+ addExpectedElement(17141);
+ addExpectedElement(17142);
+ addExpectedElement(17143);
+ addExpectedElement(17144);
+ addExpectedElement(17145);
+ addExpectedElement(17146);
+ addExpectedElement(17147);
+ addExpectedElement(17148);
+ addExpectedElement(17149);
+ addExpectedElement(17150);
+ addExpectedElement(17151);
+ addExpectedElement(17152);
+ }
+
+ // Java.g:31277:2: ( (a3_0= parse_org_emftext_language_java_arrays_ArraySelector ) )*
+ loop212:
+ do {
+ int alt212=2;
+ int LA212_0 = input.LA(1);
+
+ if ( (LA212_0==49) ) {
+ alt212=1;
+ }
+
+
+ switch (alt212) {
+ case 1 :
+ // Java.g:31278:3: (a3_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ {
+ // Java.g:31278:3: (a3_0= parse_org_emftext_language_java_arrays_ArraySelector )
+ // Java.g:31279:4: a3_0= parse_org_emftext_language_java_arrays_ArraySelector
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_expressions_NestedExpression20091);
+ a3_0=parse_org_emftext_language_java_arrays_ArraySelector();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createNestedExpression();
+ startIncompleteElement(element);
+ }
+ if (a3_0 != null) {
+ if (a3_0 != null) {
+ Object value = a3_0;
+ addObjectToList(element, org.emftext.language.java.expressions.ExpressionsPackage.NESTED_EXPRESSION__ARRAY_SELECTORS, value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_89_0_0_3, a3_0, true);
+ copyLocalizationInfos(a3_0, element);
+ }
+ }
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop212;
+ }
+ } while (true);
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17153);
+ addExpectedElement(17154);
+ addExpectedElement(17155);
+ addExpectedElement(17156);
+ addExpectedElement(17157);
+ addExpectedElement(17158);
+ addExpectedElement(17159);
+ addExpectedElement(17160);
+ addExpectedElement(17161);
+ addExpectedElement(17162);
+ addExpectedElement(17163);
+ addExpectedElement(17164);
+ addExpectedElement(17165);
+ addExpectedElement(17166);
+ addExpectedElement(17167);
+ addExpectedElement(17168);
+ addExpectedElement(17169);
+ addExpectedElement(17170);
+ addExpectedElement(17171);
+ addExpectedElement(17172);
+ addExpectedElement(17173);
+ addExpectedElement(17174);
+ addExpectedElement(17175);
+ addExpectedElement(17176);
+ addExpectedElement(17177);
+ addExpectedElement(17178);
+ addExpectedElement(17179);
+ addExpectedElement(17180);
+ addExpectedElement(17181);
+ addExpectedElement(17182);
+ addExpectedElement(17183);
+ addExpectedElement(17184);
+ addExpectedElement(17185);
+ addExpectedElement(17186);
+ addExpectedElement(17187);
+ addExpectedElement(17188);
+ addExpectedElement(17189);
+ addExpectedElement(17190);
+ addExpectedElement(17191);
+ addExpectedElement(17192);
+ addExpectedElement(17193);
+ addExpectedElement(17194);
+ addExpectedElement(17195);
+ addExpectedElement(17196);
+ addExpectedElement(17197);
+ addExpectedElement(17198);
+ addExpectedElement(17199);
+ addExpectedElement(17200);
+ addExpectedElement(17201);
+ addExpectedElement(17202);
+ addExpectedElement(17203);
+ addExpectedElement(17204);
+ addExpectedElement(17205);
+ addExpectedElement(17206);
+ addExpectedElement(17207);
+ addExpectedElement(17208);
+ addExpectedElement(17209);
+ addExpectedElement(17210);
+ addExpectedElement(17211);
+ addExpectedElement(17212);
+ addExpectedElement(17213);
+ addExpectedElement(17214);
+ addExpectedElement(17215);
+ addExpectedElement(17216);
+ addExpectedElement(17217);
+ addExpectedElement(17218);
+ }
+
+ // Java.g:31370:2: ( (a4= '.' (a5_0= parse_org_emftext_language_java_references_Reference ) ) )?
+ int alt213=2;
+ int LA213_0 = input.LA(1);
+
+ if ( (LA213_0==37) ) {
+ alt213=1;
+ }
+ switch (alt213) {
+ case 1 :
+ // Java.g:31371:3: (a4= '.' (a5_0= parse_org_emftext_language_java_references_Reference ) )
+ {
+ // Java.g:31371:3: (a4= '.' (a5_0= parse_org_emftext_language_java_references_Reference ) )
+ // Java.g:31372:4: a4= '.' (a5_0= parse_org_emftext_language_java_references_Reference )
+ {
+ a4=(Token)match(input,37,FOLLOW_37_in_parse_org_emftext_language_java_expressions_NestedExpression20126); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createNestedExpression();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_89_0_0_4_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a4, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17219);
+ addExpectedElement(17220);
+ addExpectedElement(17221);
+ addExpectedElement(17222);
+ addExpectedElement(17223);
+ addExpectedElement(17224);
+ addExpectedElement(17225);
+ addExpectedElement(17226);
+ addExpectedElement(17227);
+ addExpectedElement(17228);
+ addExpectedElement(17229);
+ addExpectedElement(17230);
+ addExpectedElement(17231);
+ addExpectedElement(17232);
+ addExpectedElement(17233);
+ addExpectedElement(17234);
+ addExpectedElement(17235);
+ addExpectedElement(17236);
+ addExpectedElement(17237);
+ addExpectedElement(17238);
+ addExpectedElement(17239);
+ addExpectedElement(17240);
+ addExpectedElement(17241);
+ }
+
+ // Java.g:31408:4: (a5_0= parse_org_emftext_language_java_references_Reference )
+ // Java.g:31409:5: a5_0= parse_org_emftext_language_java_references_Reference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_expressions_NestedExpression20152);
+ a5_0=parse_org_emftext_language_java_references_Reference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.expressions.ExpressionsFactory.eINSTANCE.createNestedExpression();
+ startIncompleteElement(element);
+ }
+ if (a5_0 != null) {
+ if (a5_0 != null) {
+ Object value = a5_0;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.expressions.ExpressionsPackage.NESTED_EXPRESSION__NEXT), value);
+ completedElement(value, true);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_89_0_0_4_0_0_1, a5_0, true);
+ copyLocalizationInfos(a5_0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17242);
+ addExpectedElement(17243);
+ addExpectedElement(17244);
+ addExpectedElement(17245);
+ addExpectedElement(17246);
+ addExpectedElement(17247);
+ addExpectedElement(17248);
+ addExpectedElement(17249);
+ addExpectedElement(17250);
+ addExpectedElement(17251);
+ addExpectedElement(17252);
+ addExpectedElement(17253);
+ addExpectedElement(17254);
+ addExpectedElement(17255);
+ addExpectedElement(17256);
+ addExpectedElement(17257);
+ addExpectedElement(17258);
+ addExpectedElement(17259);
+ addExpectedElement(17260);
+ addExpectedElement(17261);
+ addExpectedElement(17262);
+ addExpectedElement(17263);
+ addExpectedElement(17264);
+ addExpectedElement(17265);
+ addExpectedElement(17266);
+ addExpectedElement(17267);
+ addExpectedElement(17268);
+ addExpectedElement(17269);
+ addExpectedElement(17270);
+ addExpectedElement(17271);
+ addExpectedElement(17272);
+ addExpectedElement(17273);
+ addExpectedElement(17274);
+ addExpectedElement(17275);
+ addExpectedElement(17276);
+ addExpectedElement(17277);
+ addExpectedElement(17278);
+ addExpectedElement(17279);
+ addExpectedElement(17280);
+ addExpectedElement(17281);
+ addExpectedElement(17282);
+ addExpectedElement(17283);
+ addExpectedElement(17284);
+ addExpectedElement(17285);
+ addExpectedElement(17286);
+ addExpectedElement(17287);
+ addExpectedElement(17288);
+ addExpectedElement(17289);
+ addExpectedElement(17290);
+ addExpectedElement(17291);
+ addExpectedElement(17292);
+ addExpectedElement(17293);
+ addExpectedElement(17294);
+ addExpectedElement(17295);
+ addExpectedElement(17296);
+ addExpectedElement(17297);
+ addExpectedElement(17298);
+ addExpectedElement(17299);
+ addExpectedElement(17300);
+ addExpectedElement(17301);
+ addExpectedElement(17302);
+ addExpectedElement(17303);
+ addExpectedElement(17304);
+ addExpectedElement(17305);
+ }
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17306);
+ addExpectedElement(17307);
+ addExpectedElement(17308);
+ addExpectedElement(17309);
+ addExpectedElement(17310);
+ addExpectedElement(17311);
+ addExpectedElement(17312);
+ addExpectedElement(17313);
+ addExpectedElement(17314);
+ addExpectedElement(17315);
+ addExpectedElement(17316);
+ addExpectedElement(17317);
+ addExpectedElement(17318);
+ addExpectedElement(17319);
+ addExpectedElement(17320);
+ addExpectedElement(17321);
+ addExpectedElement(17322);
+ addExpectedElement(17323);
+ addExpectedElement(17324);
+ addExpectedElement(17325);
+ addExpectedElement(17326);
+ addExpectedElement(17327);
+ addExpectedElement(17328);
+ addExpectedElement(17329);
+ addExpectedElement(17330);
+ addExpectedElement(17331);
+ addExpectedElement(17332);
+ addExpectedElement(17333);
+ addExpectedElement(17334);
+ addExpectedElement(17335);
+ addExpectedElement(17336);
+ addExpectedElement(17337);
+ addExpectedElement(17338);
+ addExpectedElement(17339);
+ addExpectedElement(17340);
+ addExpectedElement(17341);
+ addExpectedElement(17342);
+ addExpectedElement(17343);
+ addExpectedElement(17344);
+ addExpectedElement(17345);
+ addExpectedElement(17346);
+ addExpectedElement(17347);
+ addExpectedElement(17348);
+ addExpectedElement(17349);
+ addExpectedElement(17350);
+ addExpectedElement(17351);
+ addExpectedElement(17352);
+ addExpectedElement(17353);
+ addExpectedElement(17354);
+ addExpectedElement(17355);
+ addExpectedElement(17356);
+ addExpectedElement(17357);
+ addExpectedElement(17358);
+ addExpectedElement(17359);
+ addExpectedElement(17360);
+ addExpectedElement(17361);
+ addExpectedElement(17362);
+ addExpectedElement(17363);
+ addExpectedElement(17364);
+ addExpectedElement(17365);
+ addExpectedElement(17366);
+ addExpectedElement(17367);
+ addExpectedElement(17368);
+ addExpectedElement(17369);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 91, parse_org_emftext_language_java_expressions_NestedExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_NestedExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Assignment"
+ // Java.g:31569:1: parse_org_emftext_language_java_operators_Assignment returns [org.emftext.language.java.operators.Assignment element = null] : a0= '=' ;
+ public final org.emftext.language.java.operators.Assignment parse_org_emftext_language_java_operators_Assignment() throws RecognitionException {
+ org.emftext.language.java.operators.Assignment element = null;
+
+ int parse_org_emftext_language_java_operators_Assignment_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 92) ) { return element; }
+
+ // Java.g:31572:2: (a0= '=' )
+ // Java.g:31573:2: a0= '='
+ {
+ a0=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_operators_Assignment20208); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignment();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_90_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17370);
+ addExpectedElement(17371);
+ addExpectedElement(17372);
+ addExpectedElement(17373);
+ addExpectedElement(17374);
+ addExpectedElement(17375);
+ addExpectedElement(17376);
+ addExpectedElement(17377);
+ addExpectedElement(17378);
+ addExpectedElement(17379);
+ addExpectedElement(17380);
+ addExpectedElement(17381);
+ addExpectedElement(17382);
+ addExpectedElement(17383);
+ addExpectedElement(17384);
+ addExpectedElement(17385);
+ addExpectedElement(17386);
+ addExpectedElement(17387);
+ addExpectedElement(17388);
+ addExpectedElement(17389);
+ addExpectedElement(17390);
+ addExpectedElement(17391);
+ addExpectedElement(17392);
+ addExpectedElement(17393);
+ addExpectedElement(17394);
+ addExpectedElement(17395);
+ addExpectedElement(17396);
+ addExpectedElement(17397);
+ addExpectedElement(17398);
+ addExpectedElement(17399);
+ addExpectedElement(17400);
+ addExpectedElement(17401);
+ addExpectedElement(17402);
+ addExpectedElement(17403);
+ addExpectedElement(17404);
+ addExpectedElement(17405);
+ addExpectedElement(17406);
+ addExpectedElement(17407);
+ addExpectedElement(17408);
+ addExpectedElement(17409);
+ addExpectedElement(17410);
+ addExpectedElement(17411);
+ addExpectedElement(17412);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 92, parse_org_emftext_language_java_operators_Assignment_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Assignment"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentPlus"
+ // Java.g:31631:1: parse_org_emftext_language_java_operators_AssignmentPlus returns [org.emftext.language.java.operators.AssignmentPlus element = null] : a0= '+=' ;
+ public final org.emftext.language.java.operators.AssignmentPlus parse_org_emftext_language_java_operators_AssignmentPlus() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentPlus element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentPlus_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 93) ) { return element; }
+
+ // Java.g:31634:2: (a0= '+=' )
+ // Java.g:31635:2: a0= '+='
+ {
+ a0=(Token)match(input,32,FOLLOW_32_in_parse_org_emftext_language_java_operators_AssignmentPlus20237); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentPlus();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_91_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17413);
+ addExpectedElement(17414);
+ addExpectedElement(17415);
+ addExpectedElement(17416);
+ addExpectedElement(17417);
+ addExpectedElement(17418);
+ addExpectedElement(17419);
+ addExpectedElement(17420);
+ addExpectedElement(17421);
+ addExpectedElement(17422);
+ addExpectedElement(17423);
+ addExpectedElement(17424);
+ addExpectedElement(17425);
+ addExpectedElement(17426);
+ addExpectedElement(17427);
+ addExpectedElement(17428);
+ addExpectedElement(17429);
+ addExpectedElement(17430);
+ addExpectedElement(17431);
+ addExpectedElement(17432);
+ addExpectedElement(17433);
+ addExpectedElement(17434);
+ addExpectedElement(17435);
+ addExpectedElement(17436);
+ addExpectedElement(17437);
+ addExpectedElement(17438);
+ addExpectedElement(17439);
+ addExpectedElement(17440);
+ addExpectedElement(17441);
+ addExpectedElement(17442);
+ addExpectedElement(17443);
+ addExpectedElement(17444);
+ addExpectedElement(17445);
+ addExpectedElement(17446);
+ addExpectedElement(17447);
+ addExpectedElement(17448);
+ addExpectedElement(17449);
+ addExpectedElement(17450);
+ addExpectedElement(17451);
+ addExpectedElement(17452);
+ addExpectedElement(17453);
+ addExpectedElement(17454);
+ addExpectedElement(17455);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 93, parse_org_emftext_language_java_operators_AssignmentPlus_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentPlus"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentMinus"
+ // Java.g:31693:1: parse_org_emftext_language_java_operators_AssignmentMinus returns [org.emftext.language.java.operators.AssignmentMinus element = null] : a0= '-=' ;
+ public final org.emftext.language.java.operators.AssignmentMinus parse_org_emftext_language_java_operators_AssignmentMinus() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentMinus element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentMinus_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 94) ) { return element; }
+
+ // Java.g:31696:2: (a0= '-=' )
+ // Java.g:31697:2: a0= '-='
+ {
+ a0=(Token)match(input,36,FOLLOW_36_in_parse_org_emftext_language_java_operators_AssignmentMinus20266); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentMinus();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_92_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17456);
+ addExpectedElement(17457);
+ addExpectedElement(17458);
+ addExpectedElement(17459);
+ addExpectedElement(17460);
+ addExpectedElement(17461);
+ addExpectedElement(17462);
+ addExpectedElement(17463);
+ addExpectedElement(17464);
+ addExpectedElement(17465);
+ addExpectedElement(17466);
+ addExpectedElement(17467);
+ addExpectedElement(17468);
+ addExpectedElement(17469);
+ addExpectedElement(17470);
+ addExpectedElement(17471);
+ addExpectedElement(17472);
+ addExpectedElement(17473);
+ addExpectedElement(17474);
+ addExpectedElement(17475);
+ addExpectedElement(17476);
+ addExpectedElement(17477);
+ addExpectedElement(17478);
+ addExpectedElement(17479);
+ addExpectedElement(17480);
+ addExpectedElement(17481);
+ addExpectedElement(17482);
+ addExpectedElement(17483);
+ addExpectedElement(17484);
+ addExpectedElement(17485);
+ addExpectedElement(17486);
+ addExpectedElement(17487);
+ addExpectedElement(17488);
+ addExpectedElement(17489);
+ addExpectedElement(17490);
+ addExpectedElement(17491);
+ addExpectedElement(17492);
+ addExpectedElement(17493);
+ addExpectedElement(17494);
+ addExpectedElement(17495);
+ addExpectedElement(17496);
+ addExpectedElement(17497);
+ addExpectedElement(17498);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 94, parse_org_emftext_language_java_operators_AssignmentMinus_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentMinus"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentMultiplication"
+ // Java.g:31755:1: parse_org_emftext_language_java_operators_AssignmentMultiplication returns [org.emftext.language.java.operators.AssignmentMultiplication element = null] : a0= '*=' ;
+ public final org.emftext.language.java.operators.AssignmentMultiplication parse_org_emftext_language_java_operators_AssignmentMultiplication() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentMultiplication element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentMultiplication_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 95) ) { return element; }
+
+ // Java.g:31758:2: (a0= '*=' )
+ // Java.g:31759:2: a0= '*='
+ {
+ a0=(Token)match(input,29,FOLLOW_29_in_parse_org_emftext_language_java_operators_AssignmentMultiplication20295); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentMultiplication();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_93_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17499);
+ addExpectedElement(17500);
+ addExpectedElement(17501);
+ addExpectedElement(17502);
+ addExpectedElement(17503);
+ addExpectedElement(17504);
+ addExpectedElement(17505);
+ addExpectedElement(17506);
+ addExpectedElement(17507);
+ addExpectedElement(17508);
+ addExpectedElement(17509);
+ addExpectedElement(17510);
+ addExpectedElement(17511);
+ addExpectedElement(17512);
+ addExpectedElement(17513);
+ addExpectedElement(17514);
+ addExpectedElement(17515);
+ addExpectedElement(17516);
+ addExpectedElement(17517);
+ addExpectedElement(17518);
+ addExpectedElement(17519);
+ addExpectedElement(17520);
+ addExpectedElement(17521);
+ addExpectedElement(17522);
+ addExpectedElement(17523);
+ addExpectedElement(17524);
+ addExpectedElement(17525);
+ addExpectedElement(17526);
+ addExpectedElement(17527);
+ addExpectedElement(17528);
+ addExpectedElement(17529);
+ addExpectedElement(17530);
+ addExpectedElement(17531);
+ addExpectedElement(17532);
+ addExpectedElement(17533);
+ addExpectedElement(17534);
+ addExpectedElement(17535);
+ addExpectedElement(17536);
+ addExpectedElement(17537);
+ addExpectedElement(17538);
+ addExpectedElement(17539);
+ addExpectedElement(17540);
+ addExpectedElement(17541);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 95, parse_org_emftext_language_java_operators_AssignmentMultiplication_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentMultiplication"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentDivision"
+ // Java.g:31817:1: parse_org_emftext_language_java_operators_AssignmentDivision returns [org.emftext.language.java.operators.AssignmentDivision element = null] : a0= '/=' ;
+ public final org.emftext.language.java.operators.AssignmentDivision parse_org_emftext_language_java_operators_AssignmentDivision() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentDivision element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentDivision_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 96) ) { return element; }
+
+ // Java.g:31820:2: (a0= '/=' )
+ // Java.g:31821:2: a0= '/='
+ {
+ a0=(Token)match(input,40,FOLLOW_40_in_parse_org_emftext_language_java_operators_AssignmentDivision20324); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentDivision();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_94_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17542);
+ addExpectedElement(17543);
+ addExpectedElement(17544);
+ addExpectedElement(17545);
+ addExpectedElement(17546);
+ addExpectedElement(17547);
+ addExpectedElement(17548);
+ addExpectedElement(17549);
+ addExpectedElement(17550);
+ addExpectedElement(17551);
+ addExpectedElement(17552);
+ addExpectedElement(17553);
+ addExpectedElement(17554);
+ addExpectedElement(17555);
+ addExpectedElement(17556);
+ addExpectedElement(17557);
+ addExpectedElement(17558);
+ addExpectedElement(17559);
+ addExpectedElement(17560);
+ addExpectedElement(17561);
+ addExpectedElement(17562);
+ addExpectedElement(17563);
+ addExpectedElement(17564);
+ addExpectedElement(17565);
+ addExpectedElement(17566);
+ addExpectedElement(17567);
+ addExpectedElement(17568);
+ addExpectedElement(17569);
+ addExpectedElement(17570);
+ addExpectedElement(17571);
+ addExpectedElement(17572);
+ addExpectedElement(17573);
+ addExpectedElement(17574);
+ addExpectedElement(17575);
+ addExpectedElement(17576);
+ addExpectedElement(17577);
+ addExpectedElement(17578);
+ addExpectedElement(17579);
+ addExpectedElement(17580);
+ addExpectedElement(17581);
+ addExpectedElement(17582);
+ addExpectedElement(17583);
+ addExpectedElement(17584);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 96, parse_org_emftext_language_java_operators_AssignmentDivision_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentDivision"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentAnd"
+ // Java.g:31879:1: parse_org_emftext_language_java_operators_AssignmentAnd returns [org.emftext.language.java.operators.AssignmentAnd element = null] : a0= '&=' ;
+ public final org.emftext.language.java.operators.AssignmentAnd parse_org_emftext_language_java_operators_AssignmentAnd() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentAnd element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentAnd_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 97) ) { return element; }
+
+ // Java.g:31882:2: (a0= '&=' )
+ // Java.g:31883:2: a0= '&='
+ {
+ a0=(Token)match(input,25,FOLLOW_25_in_parse_org_emftext_language_java_operators_AssignmentAnd20353); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentAnd();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_95_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17585);
+ addExpectedElement(17586);
+ addExpectedElement(17587);
+ addExpectedElement(17588);
+ addExpectedElement(17589);
+ addExpectedElement(17590);
+ addExpectedElement(17591);
+ addExpectedElement(17592);
+ addExpectedElement(17593);
+ addExpectedElement(17594);
+ addExpectedElement(17595);
+ addExpectedElement(17596);
+ addExpectedElement(17597);
+ addExpectedElement(17598);
+ addExpectedElement(17599);
+ addExpectedElement(17600);
+ addExpectedElement(17601);
+ addExpectedElement(17602);
+ addExpectedElement(17603);
+ addExpectedElement(17604);
+ addExpectedElement(17605);
+ addExpectedElement(17606);
+ addExpectedElement(17607);
+ addExpectedElement(17608);
+ addExpectedElement(17609);
+ addExpectedElement(17610);
+ addExpectedElement(17611);
+ addExpectedElement(17612);
+ addExpectedElement(17613);
+ addExpectedElement(17614);
+ addExpectedElement(17615);
+ addExpectedElement(17616);
+ addExpectedElement(17617);
+ addExpectedElement(17618);
+ addExpectedElement(17619);
+ addExpectedElement(17620);
+ addExpectedElement(17621);
+ addExpectedElement(17622);
+ addExpectedElement(17623);
+ addExpectedElement(17624);
+ addExpectedElement(17625);
+ addExpectedElement(17626);
+ addExpectedElement(17627);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 97, parse_org_emftext_language_java_operators_AssignmentAnd_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentAnd"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentOr"
+ // Java.g:31941:1: parse_org_emftext_language_java_operators_AssignmentOr returns [org.emftext.language.java.operators.AssignmentOr element = null] : a0= '|=' ;
+ public final org.emftext.language.java.operators.AssignmentOr parse_org_emftext_language_java_operators_AssignmentOr() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentOr element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentOr_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 98) ) { return element; }
+
+ // Java.g:31944:2: (a0= '|=' )
+ // Java.g:31945:2: a0= '|='
+ {
+ a0=(Token)match(input,107,FOLLOW_107_in_parse_org_emftext_language_java_operators_AssignmentOr20382); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentOr();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_96_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17628);
+ addExpectedElement(17629);
+ addExpectedElement(17630);
+ addExpectedElement(17631);
+ addExpectedElement(17632);
+ addExpectedElement(17633);
+ addExpectedElement(17634);
+ addExpectedElement(17635);
+ addExpectedElement(17636);
+ addExpectedElement(17637);
+ addExpectedElement(17638);
+ addExpectedElement(17639);
+ addExpectedElement(17640);
+ addExpectedElement(17641);
+ addExpectedElement(17642);
+ addExpectedElement(17643);
+ addExpectedElement(17644);
+ addExpectedElement(17645);
+ addExpectedElement(17646);
+ addExpectedElement(17647);
+ addExpectedElement(17648);
+ addExpectedElement(17649);
+ addExpectedElement(17650);
+ addExpectedElement(17651);
+ addExpectedElement(17652);
+ addExpectedElement(17653);
+ addExpectedElement(17654);
+ addExpectedElement(17655);
+ addExpectedElement(17656);
+ addExpectedElement(17657);
+ addExpectedElement(17658);
+ addExpectedElement(17659);
+ addExpectedElement(17660);
+ addExpectedElement(17661);
+ addExpectedElement(17662);
+ addExpectedElement(17663);
+ addExpectedElement(17664);
+ addExpectedElement(17665);
+ addExpectedElement(17666);
+ addExpectedElement(17667);
+ addExpectedElement(17668);
+ addExpectedElement(17669);
+ addExpectedElement(17670);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 98, parse_org_emftext_language_java_operators_AssignmentOr_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentOr"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentExclusiveOr"
+ // Java.g:32003:1: parse_org_emftext_language_java_operators_AssignmentExclusiveOr returns [org.emftext.language.java.operators.AssignmentExclusiveOr element = null] : a0= '^=' ;
+ public final org.emftext.language.java.operators.AssignmentExclusiveOr parse_org_emftext_language_java_operators_AssignmentExclusiveOr() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentExclusiveOr element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentExclusiveOr_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 99) ) { return element; }
+
+ // Java.g:32006:2: (a0= '^=' )
+ // Java.g:32007:2: a0= '^='
+ {
+ a0=(Token)match(input,55,FOLLOW_55_in_parse_org_emftext_language_java_operators_AssignmentExclusiveOr20411); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentExclusiveOr();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_97_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17671);
+ addExpectedElement(17672);
+ addExpectedElement(17673);
+ addExpectedElement(17674);
+ addExpectedElement(17675);
+ addExpectedElement(17676);
+ addExpectedElement(17677);
+ addExpectedElement(17678);
+ addExpectedElement(17679);
+ addExpectedElement(17680);
+ addExpectedElement(17681);
+ addExpectedElement(17682);
+ addExpectedElement(17683);
+ addExpectedElement(17684);
+ addExpectedElement(17685);
+ addExpectedElement(17686);
+ addExpectedElement(17687);
+ addExpectedElement(17688);
+ addExpectedElement(17689);
+ addExpectedElement(17690);
+ addExpectedElement(17691);
+ addExpectedElement(17692);
+ addExpectedElement(17693);
+ addExpectedElement(17694);
+ addExpectedElement(17695);
+ addExpectedElement(17696);
+ addExpectedElement(17697);
+ addExpectedElement(17698);
+ addExpectedElement(17699);
+ addExpectedElement(17700);
+ addExpectedElement(17701);
+ addExpectedElement(17702);
+ addExpectedElement(17703);
+ addExpectedElement(17704);
+ addExpectedElement(17705);
+ addExpectedElement(17706);
+ addExpectedElement(17707);
+ addExpectedElement(17708);
+ addExpectedElement(17709);
+ addExpectedElement(17710);
+ addExpectedElement(17711);
+ addExpectedElement(17712);
+ addExpectedElement(17713);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 99, parse_org_emftext_language_java_operators_AssignmentExclusiveOr_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentExclusiveOr"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentModulo"
+ // Java.g:32065:1: parse_org_emftext_language_java_operators_AssignmentModulo returns [org.emftext.language.java.operators.AssignmentModulo element = null] : a0= '\\u0025=' ;
+ public final org.emftext.language.java.operators.AssignmentModulo parse_org_emftext_language_java_operators_AssignmentModulo() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentModulo element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentModulo_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 100) ) { return element; }
+
+ // Java.g:32068:2: (a0= '\\u0025=' )
+ // Java.g:32069:2: a0= '\\u0025='
+ {
+ a0=(Token)match(input,52,FOLLOW_52_in_parse_org_emftext_language_java_operators_AssignmentModulo20440); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentModulo();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_98_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17714);
+ addExpectedElement(17715);
+ addExpectedElement(17716);
+ addExpectedElement(17717);
+ addExpectedElement(17718);
+ addExpectedElement(17719);
+ addExpectedElement(17720);
+ addExpectedElement(17721);
+ addExpectedElement(17722);
+ addExpectedElement(17723);
+ addExpectedElement(17724);
+ addExpectedElement(17725);
+ addExpectedElement(17726);
+ addExpectedElement(17727);
+ addExpectedElement(17728);
+ addExpectedElement(17729);
+ addExpectedElement(17730);
+ addExpectedElement(17731);
+ addExpectedElement(17732);
+ addExpectedElement(17733);
+ addExpectedElement(17734);
+ addExpectedElement(17735);
+ addExpectedElement(17736);
+ addExpectedElement(17737);
+ addExpectedElement(17738);
+ addExpectedElement(17739);
+ addExpectedElement(17740);
+ addExpectedElement(17741);
+ addExpectedElement(17742);
+ addExpectedElement(17743);
+ addExpectedElement(17744);
+ addExpectedElement(17745);
+ addExpectedElement(17746);
+ addExpectedElement(17747);
+ addExpectedElement(17748);
+ addExpectedElement(17749);
+ addExpectedElement(17750);
+ addExpectedElement(17751);
+ addExpectedElement(17752);
+ addExpectedElement(17753);
+ addExpectedElement(17754);
+ addExpectedElement(17755);
+ addExpectedElement(17756);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 100, parse_org_emftext_language_java_operators_AssignmentModulo_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentModulo"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentLeftShift"
+ // Java.g:32127:1: parse_org_emftext_language_java_operators_AssignmentLeftShift returns [org.emftext.language.java.operators.AssignmentLeftShift element = null] : a0= '<' a1= '<' a2= '=' ;
+ public final org.emftext.language.java.operators.AssignmentLeftShift parse_org_emftext_language_java_operators_AssignmentLeftShift() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentLeftShift element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentLeftShift_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 101) ) { return element; }
+
+ // Java.g:32130:2: (a0= '<' a1= '<' a2= '=' )
+ // Java.g:32131:2: a0= '<' a1= '<' a2= '='
+ {
+ a0=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_operators_AssignmentLeftShift20469); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentLeftShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_99_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17757);
+ }
+
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_operators_AssignmentLeftShift20483); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentLeftShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_99_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17758);
+ }
+
+ a2=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_operators_AssignmentLeftShift20497); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentLeftShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_99_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17759);
+ addExpectedElement(17760);
+ addExpectedElement(17761);
+ addExpectedElement(17762);
+ addExpectedElement(17763);
+ addExpectedElement(17764);
+ addExpectedElement(17765);
+ addExpectedElement(17766);
+ addExpectedElement(17767);
+ addExpectedElement(17768);
+ addExpectedElement(17769);
+ addExpectedElement(17770);
+ addExpectedElement(17771);
+ addExpectedElement(17772);
+ addExpectedElement(17773);
+ addExpectedElement(17774);
+ addExpectedElement(17775);
+ addExpectedElement(17776);
+ addExpectedElement(17777);
+ addExpectedElement(17778);
+ addExpectedElement(17779);
+ addExpectedElement(17780);
+ addExpectedElement(17781);
+ addExpectedElement(17782);
+ addExpectedElement(17783);
+ addExpectedElement(17784);
+ addExpectedElement(17785);
+ addExpectedElement(17786);
+ addExpectedElement(17787);
+ addExpectedElement(17788);
+ addExpectedElement(17789);
+ addExpectedElement(17790);
+ addExpectedElement(17791);
+ addExpectedElement(17792);
+ addExpectedElement(17793);
+ addExpectedElement(17794);
+ addExpectedElement(17795);
+ addExpectedElement(17796);
+ addExpectedElement(17797);
+ addExpectedElement(17798);
+ addExpectedElement(17799);
+ addExpectedElement(17800);
+ addExpectedElement(17801);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 101, parse_org_emftext_language_java_operators_AssignmentLeftShift_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentLeftShift"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentRightShift"
+ // Java.g:32217:1: parse_org_emftext_language_java_operators_AssignmentRightShift returns [org.emftext.language.java.operators.AssignmentRightShift element = null] : a0= '>' a1= '>' a2= '=' ;
+ public final org.emftext.language.java.operators.AssignmentRightShift parse_org_emftext_language_java_operators_AssignmentRightShift() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentRightShift element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentRightShift_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 102) ) { return element; }
+
+ // Java.g:32220:2: (a0= '>' a1= '>' a2= '=' )
+ // Java.g:32221:2: a0= '>' a1= '>' a2= '='
+ {
+ a0=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentRightShift20526); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_100_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17802);
+ }
+
+ a1=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentRightShift20540); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_100_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17803);
+ }
+
+ a2=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_operators_AssignmentRightShift20554); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_100_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17804);
+ addExpectedElement(17805);
+ addExpectedElement(17806);
+ addExpectedElement(17807);
+ addExpectedElement(17808);
+ addExpectedElement(17809);
+ addExpectedElement(17810);
+ addExpectedElement(17811);
+ addExpectedElement(17812);
+ addExpectedElement(17813);
+ addExpectedElement(17814);
+ addExpectedElement(17815);
+ addExpectedElement(17816);
+ addExpectedElement(17817);
+ addExpectedElement(17818);
+ addExpectedElement(17819);
+ addExpectedElement(17820);
+ addExpectedElement(17821);
+ addExpectedElement(17822);
+ addExpectedElement(17823);
+ addExpectedElement(17824);
+ addExpectedElement(17825);
+ addExpectedElement(17826);
+ addExpectedElement(17827);
+ addExpectedElement(17828);
+ addExpectedElement(17829);
+ addExpectedElement(17830);
+ addExpectedElement(17831);
+ addExpectedElement(17832);
+ addExpectedElement(17833);
+ addExpectedElement(17834);
+ addExpectedElement(17835);
+ addExpectedElement(17836);
+ addExpectedElement(17837);
+ addExpectedElement(17838);
+ addExpectedElement(17839);
+ addExpectedElement(17840);
+ addExpectedElement(17841);
+ addExpectedElement(17842);
+ addExpectedElement(17843);
+ addExpectedElement(17844);
+ addExpectedElement(17845);
+ addExpectedElement(17846);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 102, parse_org_emftext_language_java_operators_AssignmentRightShift_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentRightShift"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift"
+ // Java.g:32307:1: parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift returns [org.emftext.language.java.operators.AssignmentUnsignedRightShift element = null] : a0= '>' a1= '>' a2= '>' a3= '=' ;
+ public final org.emftext.language.java.operators.AssignmentUnsignedRightShift parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentUnsignedRightShift element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+ Token a3=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 103) ) { return element; }
+
+ // Java.g:32310:2: (a0= '>' a1= '>' a2= '>' a3= '=' )
+ // Java.g:32311:2: a0= '>' a1= '>' a2= '>' a3= '='
+ {
+ a0=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20583); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentUnsignedRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_101_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17847);
+ }
+
+ a1=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20597); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentUnsignedRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_101_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17848);
+ }
+
+ a2=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20611); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentUnsignedRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_101_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17849);
+ }
+
+ a3=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20625); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAssignmentUnsignedRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_101_0_0_3, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a3, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17850);
+ addExpectedElement(17851);
+ addExpectedElement(17852);
+ addExpectedElement(17853);
+ addExpectedElement(17854);
+ addExpectedElement(17855);
+ addExpectedElement(17856);
+ addExpectedElement(17857);
+ addExpectedElement(17858);
+ addExpectedElement(17859);
+ addExpectedElement(17860);
+ addExpectedElement(17861);
+ addExpectedElement(17862);
+ addExpectedElement(17863);
+ addExpectedElement(17864);
+ addExpectedElement(17865);
+ addExpectedElement(17866);
+ addExpectedElement(17867);
+ addExpectedElement(17868);
+ addExpectedElement(17869);
+ addExpectedElement(17870);
+ addExpectedElement(17871);
+ addExpectedElement(17872);
+ addExpectedElement(17873);
+ addExpectedElement(17874);
+ addExpectedElement(17875);
+ addExpectedElement(17876);
+ addExpectedElement(17877);
+ addExpectedElement(17878);
+ addExpectedElement(17879);
+ addExpectedElement(17880);
+ addExpectedElement(17881);
+ addExpectedElement(17882);
+ addExpectedElement(17883);
+ addExpectedElement(17884);
+ addExpectedElement(17885);
+ addExpectedElement(17886);
+ addExpectedElement(17887);
+ addExpectedElement(17888);
+ addExpectedElement(17889);
+ addExpectedElement(17890);
+ addExpectedElement(17891);
+ addExpectedElement(17892);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 103, parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Addition"
+ // Java.g:32411:1: parse_org_emftext_language_java_operators_Addition returns [org.emftext.language.java.operators.Addition element = null] : a0= '+' ;
+ public final org.emftext.language.java.operators.Addition parse_org_emftext_language_java_operators_Addition() throws RecognitionException {
+ org.emftext.language.java.operators.Addition element = null;
+
+ int parse_org_emftext_language_java_operators_Addition_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 104) ) { return element; }
+
+ // Java.g:32414:2: (a0= '+' )
+ // Java.g:32415:2: a0= '+'
+ {
+ a0=(Token)match(input,30,FOLLOW_30_in_parse_org_emftext_language_java_operators_Addition20654); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createAddition();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_102_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17893);
+ addExpectedElement(17894);
+ addExpectedElement(17895);
+ addExpectedElement(17896);
+ addExpectedElement(17897);
+ addExpectedElement(17898);
+ addExpectedElement(17899);
+ addExpectedElement(17900);
+ addExpectedElement(17901);
+ addExpectedElement(17902);
+ addExpectedElement(17903);
+ addExpectedElement(17904);
+ addExpectedElement(17905);
+ addExpectedElement(17906);
+ addExpectedElement(17907);
+ addExpectedElement(17908);
+ addExpectedElement(17909);
+ addExpectedElement(17910);
+ addExpectedElement(17911);
+ addExpectedElement(17912);
+ addExpectedElement(17913);
+ addExpectedElement(17914);
+ addExpectedElement(17915);
+ addExpectedElement(17916);
+ addExpectedElement(17917);
+ addExpectedElement(17918);
+ addExpectedElement(17919);
+ addExpectedElement(17920);
+ addExpectedElement(17921);
+ addExpectedElement(17922);
+ addExpectedElement(17923);
+ addExpectedElement(17924);
+ addExpectedElement(17925);
+ addExpectedElement(17926);
+ addExpectedElement(17927);
+ addExpectedElement(17928);
+ addExpectedElement(17929);
+ addExpectedElement(17930);
+ addExpectedElement(17931);
+ addExpectedElement(17932);
+ addExpectedElement(17933);
+ addExpectedElement(17934);
+ addExpectedElement(17935);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 104, parse_org_emftext_language_java_operators_Addition_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Addition"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Subtraction"
+ // Java.g:32473:1: parse_org_emftext_language_java_operators_Subtraction returns [org.emftext.language.java.operators.Subtraction element = null] : a0= '-' ;
+ public final org.emftext.language.java.operators.Subtraction parse_org_emftext_language_java_operators_Subtraction() throws RecognitionException {
+ org.emftext.language.java.operators.Subtraction element = null;
+
+ int parse_org_emftext_language_java_operators_Subtraction_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 105) ) { return element; }
+
+ // Java.g:32476:2: (a0= '-' )
+ // Java.g:32477:2: a0= '-'
+ {
+ a0=(Token)match(input,34,FOLLOW_34_in_parse_org_emftext_language_java_operators_Subtraction20683); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createSubtraction();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_103_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17936);
+ addExpectedElement(17937);
+ addExpectedElement(17938);
+ addExpectedElement(17939);
+ addExpectedElement(17940);
+ addExpectedElement(17941);
+ addExpectedElement(17942);
+ addExpectedElement(17943);
+ addExpectedElement(17944);
+ addExpectedElement(17945);
+ addExpectedElement(17946);
+ addExpectedElement(17947);
+ addExpectedElement(17948);
+ addExpectedElement(17949);
+ addExpectedElement(17950);
+ addExpectedElement(17951);
+ addExpectedElement(17952);
+ addExpectedElement(17953);
+ addExpectedElement(17954);
+ addExpectedElement(17955);
+ addExpectedElement(17956);
+ addExpectedElement(17957);
+ addExpectedElement(17958);
+ addExpectedElement(17959);
+ addExpectedElement(17960);
+ addExpectedElement(17961);
+ addExpectedElement(17962);
+ addExpectedElement(17963);
+ addExpectedElement(17964);
+ addExpectedElement(17965);
+ addExpectedElement(17966);
+ addExpectedElement(17967);
+ addExpectedElement(17968);
+ addExpectedElement(17969);
+ addExpectedElement(17970);
+ addExpectedElement(17971);
+ addExpectedElement(17972);
+ addExpectedElement(17973);
+ addExpectedElement(17974);
+ addExpectedElement(17975);
+ addExpectedElement(17976);
+ addExpectedElement(17977);
+ addExpectedElement(17978);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 105, parse_org_emftext_language_java_operators_Subtraction_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Subtraction"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Multiplication"
+ // Java.g:32535:1: parse_org_emftext_language_java_operators_Multiplication returns [org.emftext.language.java.operators.Multiplication element = null] : a0= '*' ;
+ public final org.emftext.language.java.operators.Multiplication parse_org_emftext_language_java_operators_Multiplication() throws RecognitionException {
+ org.emftext.language.java.operators.Multiplication element = null;
+
+ int parse_org_emftext_language_java_operators_Multiplication_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 106) ) { return element; }
+
+ // Java.g:32538:2: (a0= '*' )
+ // Java.g:32539:2: a0= '*'
+ {
+ a0=(Token)match(input,28,FOLLOW_28_in_parse_org_emftext_language_java_operators_Multiplication20712); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createMultiplication();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_104_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(17979);
+ addExpectedElement(17980);
+ addExpectedElement(17981);
+ addExpectedElement(17982);
+ addExpectedElement(17983);
+ addExpectedElement(17984);
+ addExpectedElement(17985);
+ addExpectedElement(17986);
+ addExpectedElement(17987);
+ addExpectedElement(17988);
+ addExpectedElement(17989);
+ addExpectedElement(17990);
+ addExpectedElement(17991);
+ addExpectedElement(17992);
+ addExpectedElement(17993);
+ addExpectedElement(17994);
+ addExpectedElement(17995);
+ addExpectedElement(17996);
+ addExpectedElement(17997);
+ addExpectedElement(17998);
+ addExpectedElement(17999);
+ addExpectedElement(18000);
+ addExpectedElement(18001);
+ addExpectedElement(18002);
+ addExpectedElement(18003);
+ addExpectedElement(18004);
+ addExpectedElement(18005);
+ addExpectedElement(18006);
+ addExpectedElement(18007);
+ addExpectedElement(18008);
+ addExpectedElement(18009);
+ addExpectedElement(18010);
+ addExpectedElement(18011);
+ addExpectedElement(18012);
+ addExpectedElement(18013);
+ addExpectedElement(18014);
+ addExpectedElement(18015);
+ addExpectedElement(18016);
+ addExpectedElement(18017);
+ addExpectedElement(18018);
+ addExpectedElement(18019);
+ addExpectedElement(18020);
+ addExpectedElement(18021);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 106, parse_org_emftext_language_java_operators_Multiplication_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Multiplication"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Division"
+ // Java.g:32597:1: parse_org_emftext_language_java_operators_Division returns [org.emftext.language.java.operators.Division element = null] : a0= '/' ;
+ public final org.emftext.language.java.operators.Division parse_org_emftext_language_java_operators_Division() throws RecognitionException {
+ org.emftext.language.java.operators.Division element = null;
+
+ int parse_org_emftext_language_java_operators_Division_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 107) ) { return element; }
+
+ // Java.g:32600:2: (a0= '/' )
+ // Java.g:32601:2: a0= '/'
+ {
+ a0=(Token)match(input,39,FOLLOW_39_in_parse_org_emftext_language_java_operators_Division20741); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createDivision();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_105_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18022);
+ addExpectedElement(18023);
+ addExpectedElement(18024);
+ addExpectedElement(18025);
+ addExpectedElement(18026);
+ addExpectedElement(18027);
+ addExpectedElement(18028);
+ addExpectedElement(18029);
+ addExpectedElement(18030);
+ addExpectedElement(18031);
+ addExpectedElement(18032);
+ addExpectedElement(18033);
+ addExpectedElement(18034);
+ addExpectedElement(18035);
+ addExpectedElement(18036);
+ addExpectedElement(18037);
+ addExpectedElement(18038);
+ addExpectedElement(18039);
+ addExpectedElement(18040);
+ addExpectedElement(18041);
+ addExpectedElement(18042);
+ addExpectedElement(18043);
+ addExpectedElement(18044);
+ addExpectedElement(18045);
+ addExpectedElement(18046);
+ addExpectedElement(18047);
+ addExpectedElement(18048);
+ addExpectedElement(18049);
+ addExpectedElement(18050);
+ addExpectedElement(18051);
+ addExpectedElement(18052);
+ addExpectedElement(18053);
+ addExpectedElement(18054);
+ addExpectedElement(18055);
+ addExpectedElement(18056);
+ addExpectedElement(18057);
+ addExpectedElement(18058);
+ addExpectedElement(18059);
+ addExpectedElement(18060);
+ addExpectedElement(18061);
+ addExpectedElement(18062);
+ addExpectedElement(18063);
+ addExpectedElement(18064);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 107, parse_org_emftext_language_java_operators_Division_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Division"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Remainder"
+ // Java.g:32659:1: parse_org_emftext_language_java_operators_Remainder returns [org.emftext.language.java.operators.Remainder element = null] : a0= '\\u0025' ;
+ public final org.emftext.language.java.operators.Remainder parse_org_emftext_language_java_operators_Remainder() throws RecognitionException {
+ org.emftext.language.java.operators.Remainder element = null;
+
+ int parse_org_emftext_language_java_operators_Remainder_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 108) ) { return element; }
+
+ // Java.g:32662:2: (a0= '\\u0025' )
+ // Java.g:32663:2: a0= '\\u0025'
+ {
+ a0=(Token)match(input,51,FOLLOW_51_in_parse_org_emftext_language_java_operators_Remainder20770); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createRemainder();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_106_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18065);
+ addExpectedElement(18066);
+ addExpectedElement(18067);
+ addExpectedElement(18068);
+ addExpectedElement(18069);
+ addExpectedElement(18070);
+ addExpectedElement(18071);
+ addExpectedElement(18072);
+ addExpectedElement(18073);
+ addExpectedElement(18074);
+ addExpectedElement(18075);
+ addExpectedElement(18076);
+ addExpectedElement(18077);
+ addExpectedElement(18078);
+ addExpectedElement(18079);
+ addExpectedElement(18080);
+ addExpectedElement(18081);
+ addExpectedElement(18082);
+ addExpectedElement(18083);
+ addExpectedElement(18084);
+ addExpectedElement(18085);
+ addExpectedElement(18086);
+ addExpectedElement(18087);
+ addExpectedElement(18088);
+ addExpectedElement(18089);
+ addExpectedElement(18090);
+ addExpectedElement(18091);
+ addExpectedElement(18092);
+ addExpectedElement(18093);
+ addExpectedElement(18094);
+ addExpectedElement(18095);
+ addExpectedElement(18096);
+ addExpectedElement(18097);
+ addExpectedElement(18098);
+ addExpectedElement(18099);
+ addExpectedElement(18100);
+ addExpectedElement(18101);
+ addExpectedElement(18102);
+ addExpectedElement(18103);
+ addExpectedElement(18104);
+ addExpectedElement(18105);
+ addExpectedElement(18106);
+ addExpectedElement(18107);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 108, parse_org_emftext_language_java_operators_Remainder_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Remainder"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_LessThan"
+ // Java.g:32721:1: parse_org_emftext_language_java_operators_LessThan returns [org.emftext.language.java.operators.LessThan element = null] : a0= '<' ;
+ public final org.emftext.language.java.operators.LessThan parse_org_emftext_language_java_operators_LessThan() throws RecognitionException {
+ org.emftext.language.java.operators.LessThan element = null;
+
+ int parse_org_emftext_language_java_operators_LessThan_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 109) ) { return element; }
+
+ // Java.g:32724:2: (a0= '<' )
+ // Java.g:32725:2: a0= '<'
+ {
+ a0=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_operators_LessThan20799); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createLessThan();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_107_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18108);
+ addExpectedElement(18109);
+ addExpectedElement(18110);
+ addExpectedElement(18111);
+ addExpectedElement(18112);
+ addExpectedElement(18113);
+ addExpectedElement(18114);
+ addExpectedElement(18115);
+ addExpectedElement(18116);
+ addExpectedElement(18117);
+ addExpectedElement(18118);
+ addExpectedElement(18119);
+ addExpectedElement(18120);
+ addExpectedElement(18121);
+ addExpectedElement(18122);
+ addExpectedElement(18123);
+ addExpectedElement(18124);
+ addExpectedElement(18125);
+ addExpectedElement(18126);
+ addExpectedElement(18127);
+ addExpectedElement(18128);
+ addExpectedElement(18129);
+ addExpectedElement(18130);
+ addExpectedElement(18131);
+ addExpectedElement(18132);
+ addExpectedElement(18133);
+ addExpectedElement(18134);
+ addExpectedElement(18135);
+ addExpectedElement(18136);
+ addExpectedElement(18137);
+ addExpectedElement(18138);
+ addExpectedElement(18139);
+ addExpectedElement(18140);
+ addExpectedElement(18141);
+ addExpectedElement(18142);
+ addExpectedElement(18143);
+ addExpectedElement(18144);
+ addExpectedElement(18145);
+ addExpectedElement(18146);
+ addExpectedElement(18147);
+ addExpectedElement(18148);
+ addExpectedElement(18149);
+ addExpectedElement(18150);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 109, parse_org_emftext_language_java_operators_LessThan_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_LessThan"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_LessThanOrEqual"
+ // Java.g:32783:1: parse_org_emftext_language_java_operators_LessThanOrEqual returns [org.emftext.language.java.operators.LessThanOrEqual element = null] : a0= '<' a1= '=' ;
+ public final org.emftext.language.java.operators.LessThanOrEqual parse_org_emftext_language_java_operators_LessThanOrEqual() throws RecognitionException {
+ org.emftext.language.java.operators.LessThanOrEqual element = null;
+
+ int parse_org_emftext_language_java_operators_LessThanOrEqual_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 110) ) { return element; }
+
+ // Java.g:32786:2: (a0= '<' a1= '=' )
+ // Java.g:32787:2: a0= '<' a1= '='
+ {
+ a0=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_operators_LessThanOrEqual20828); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createLessThanOrEqual();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_108_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18151);
+ }
+
+ a1=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_operators_LessThanOrEqual20842); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createLessThanOrEqual();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_108_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18152);
+ addExpectedElement(18153);
+ addExpectedElement(18154);
+ addExpectedElement(18155);
+ addExpectedElement(18156);
+ addExpectedElement(18157);
+ addExpectedElement(18158);
+ addExpectedElement(18159);
+ addExpectedElement(18160);
+ addExpectedElement(18161);
+ addExpectedElement(18162);
+ addExpectedElement(18163);
+ addExpectedElement(18164);
+ addExpectedElement(18165);
+ addExpectedElement(18166);
+ addExpectedElement(18167);
+ addExpectedElement(18168);
+ addExpectedElement(18169);
+ addExpectedElement(18170);
+ addExpectedElement(18171);
+ addExpectedElement(18172);
+ addExpectedElement(18173);
+ addExpectedElement(18174);
+ addExpectedElement(18175);
+ addExpectedElement(18176);
+ addExpectedElement(18177);
+ addExpectedElement(18178);
+ addExpectedElement(18179);
+ addExpectedElement(18180);
+ addExpectedElement(18181);
+ addExpectedElement(18182);
+ addExpectedElement(18183);
+ addExpectedElement(18184);
+ addExpectedElement(18185);
+ addExpectedElement(18186);
+ addExpectedElement(18187);
+ addExpectedElement(18188);
+ addExpectedElement(18189);
+ addExpectedElement(18190);
+ addExpectedElement(18191);
+ addExpectedElement(18192);
+ addExpectedElement(18193);
+ addExpectedElement(18194);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 110, parse_org_emftext_language_java_operators_LessThanOrEqual_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_LessThanOrEqual"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_GreaterThan"
+ // Java.g:32859:1: parse_org_emftext_language_java_operators_GreaterThan returns [org.emftext.language.java.operators.GreaterThan element = null] : a0= '>' ;
+ public final org.emftext.language.java.operators.GreaterThan parse_org_emftext_language_java_operators_GreaterThan() throws RecognitionException {
+ org.emftext.language.java.operators.GreaterThan element = null;
+
+ int parse_org_emftext_language_java_operators_GreaterThan_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 111) ) { return element; }
+
+ // Java.g:32862:2: (a0= '>' )
+ // Java.g:32863:2: a0= '>'
+ {
+ a0=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_GreaterThan20871); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createGreaterThan();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_109_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18195);
+ addExpectedElement(18196);
+ addExpectedElement(18197);
+ addExpectedElement(18198);
+ addExpectedElement(18199);
+ addExpectedElement(18200);
+ addExpectedElement(18201);
+ addExpectedElement(18202);
+ addExpectedElement(18203);
+ addExpectedElement(18204);
+ addExpectedElement(18205);
+ addExpectedElement(18206);
+ addExpectedElement(18207);
+ addExpectedElement(18208);
+ addExpectedElement(18209);
+ addExpectedElement(18210);
+ addExpectedElement(18211);
+ addExpectedElement(18212);
+ addExpectedElement(18213);
+ addExpectedElement(18214);
+ addExpectedElement(18215);
+ addExpectedElement(18216);
+ addExpectedElement(18217);
+ addExpectedElement(18218);
+ addExpectedElement(18219);
+ addExpectedElement(18220);
+ addExpectedElement(18221);
+ addExpectedElement(18222);
+ addExpectedElement(18223);
+ addExpectedElement(18224);
+ addExpectedElement(18225);
+ addExpectedElement(18226);
+ addExpectedElement(18227);
+ addExpectedElement(18228);
+ addExpectedElement(18229);
+ addExpectedElement(18230);
+ addExpectedElement(18231);
+ addExpectedElement(18232);
+ addExpectedElement(18233);
+ addExpectedElement(18234);
+ addExpectedElement(18235);
+ addExpectedElement(18236);
+ addExpectedElement(18237);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 111, parse_org_emftext_language_java_operators_GreaterThan_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_GreaterThan"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_GreaterThanOrEqual"
+ // Java.g:32921:1: parse_org_emftext_language_java_operators_GreaterThanOrEqual returns [org.emftext.language.java.operators.GreaterThanOrEqual element = null] : a0= '>' a1= '=' ;
+ public final org.emftext.language.java.operators.GreaterThanOrEqual parse_org_emftext_language_java_operators_GreaterThanOrEqual() throws RecognitionException {
+ org.emftext.language.java.operators.GreaterThanOrEqual element = null;
+
+ int parse_org_emftext_language_java_operators_GreaterThanOrEqual_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 112) ) { return element; }
+
+ // Java.g:32924:2: (a0= '>' a1= '=' )
+ // Java.g:32925:2: a0= '>' a1= '='
+ {
+ a0=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_GreaterThanOrEqual20900); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createGreaterThanOrEqual();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_110_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18238);
+ }
+
+ a1=(Token)match(input,44,FOLLOW_44_in_parse_org_emftext_language_java_operators_GreaterThanOrEqual20914); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createGreaterThanOrEqual();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_110_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18239);
+ addExpectedElement(18240);
+ addExpectedElement(18241);
+ addExpectedElement(18242);
+ addExpectedElement(18243);
+ addExpectedElement(18244);
+ addExpectedElement(18245);
+ addExpectedElement(18246);
+ addExpectedElement(18247);
+ addExpectedElement(18248);
+ addExpectedElement(18249);
+ addExpectedElement(18250);
+ addExpectedElement(18251);
+ addExpectedElement(18252);
+ addExpectedElement(18253);
+ addExpectedElement(18254);
+ addExpectedElement(18255);
+ addExpectedElement(18256);
+ addExpectedElement(18257);
+ addExpectedElement(18258);
+ addExpectedElement(18259);
+ addExpectedElement(18260);
+ addExpectedElement(18261);
+ addExpectedElement(18262);
+ addExpectedElement(18263);
+ addExpectedElement(18264);
+ addExpectedElement(18265);
+ addExpectedElement(18266);
+ addExpectedElement(18267);
+ addExpectedElement(18268);
+ addExpectedElement(18269);
+ addExpectedElement(18270);
+ addExpectedElement(18271);
+ addExpectedElement(18272);
+ addExpectedElement(18273);
+ addExpectedElement(18274);
+ addExpectedElement(18275);
+ addExpectedElement(18276);
+ addExpectedElement(18277);
+ addExpectedElement(18278);
+ addExpectedElement(18279);
+ addExpectedElement(18280);
+ addExpectedElement(18281);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 112, parse_org_emftext_language_java_operators_GreaterThanOrEqual_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_GreaterThanOrEqual"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_LeftShift"
+ // Java.g:32997:1: parse_org_emftext_language_java_operators_LeftShift returns [org.emftext.language.java.operators.LeftShift element = null] : a0= '<' a1= '<' ;
+ public final org.emftext.language.java.operators.LeftShift parse_org_emftext_language_java_operators_LeftShift() throws RecognitionException {
+ org.emftext.language.java.operators.LeftShift element = null;
+
+ int parse_org_emftext_language_java_operators_LeftShift_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 113) ) { return element; }
+
+ // Java.g:33000:2: (a0= '<' a1= '<' )
+ // Java.g:33001:2: a0= '<' a1= '<'
+ {
+ a0=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_operators_LeftShift20943); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createLeftShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_111_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18282);
+ }
+
+ a1=(Token)match(input,43,FOLLOW_43_in_parse_org_emftext_language_java_operators_LeftShift20957); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createLeftShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_111_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18283);
+ addExpectedElement(18284);
+ addExpectedElement(18285);
+ addExpectedElement(18286);
+ addExpectedElement(18287);
+ addExpectedElement(18288);
+ addExpectedElement(18289);
+ addExpectedElement(18290);
+ addExpectedElement(18291);
+ addExpectedElement(18292);
+ addExpectedElement(18293);
+ addExpectedElement(18294);
+ addExpectedElement(18295);
+ addExpectedElement(18296);
+ addExpectedElement(18297);
+ addExpectedElement(18298);
+ addExpectedElement(18299);
+ addExpectedElement(18300);
+ addExpectedElement(18301);
+ addExpectedElement(18302);
+ addExpectedElement(18303);
+ addExpectedElement(18304);
+ addExpectedElement(18305);
+ addExpectedElement(18306);
+ addExpectedElement(18307);
+ addExpectedElement(18308);
+ addExpectedElement(18309);
+ addExpectedElement(18310);
+ addExpectedElement(18311);
+ addExpectedElement(18312);
+ addExpectedElement(18313);
+ addExpectedElement(18314);
+ addExpectedElement(18315);
+ addExpectedElement(18316);
+ addExpectedElement(18317);
+ addExpectedElement(18318);
+ addExpectedElement(18319);
+ addExpectedElement(18320);
+ addExpectedElement(18321);
+ addExpectedElement(18322);
+ addExpectedElement(18323);
+ addExpectedElement(18324);
+ addExpectedElement(18325);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 113, parse_org_emftext_language_java_operators_LeftShift_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_LeftShift"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_RightShift"
+ // Java.g:33073:1: parse_org_emftext_language_java_operators_RightShift returns [org.emftext.language.java.operators.RightShift element = null] : a0= '>' a1= '>' ;
+ public final org.emftext.language.java.operators.RightShift parse_org_emftext_language_java_operators_RightShift() throws RecognitionException {
+ org.emftext.language.java.operators.RightShift element = null;
+
+ int parse_org_emftext_language_java_operators_RightShift_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 114) ) { return element; }
+
+ // Java.g:33076:2: (a0= '>' a1= '>' )
+ // Java.g:33077:2: a0= '>' a1= '>'
+ {
+ a0=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_RightShift20986); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_112_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18326);
+ }
+
+ a1=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_RightShift21000); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_112_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18327);
+ addExpectedElement(18328);
+ addExpectedElement(18329);
+ addExpectedElement(18330);
+ addExpectedElement(18331);
+ addExpectedElement(18332);
+ addExpectedElement(18333);
+ addExpectedElement(18334);
+ addExpectedElement(18335);
+ addExpectedElement(18336);
+ addExpectedElement(18337);
+ addExpectedElement(18338);
+ addExpectedElement(18339);
+ addExpectedElement(18340);
+ addExpectedElement(18341);
+ addExpectedElement(18342);
+ addExpectedElement(18343);
+ addExpectedElement(18344);
+ addExpectedElement(18345);
+ addExpectedElement(18346);
+ addExpectedElement(18347);
+ addExpectedElement(18348);
+ addExpectedElement(18349);
+ addExpectedElement(18350);
+ addExpectedElement(18351);
+ addExpectedElement(18352);
+ addExpectedElement(18353);
+ addExpectedElement(18354);
+ addExpectedElement(18355);
+ addExpectedElement(18356);
+ addExpectedElement(18357);
+ addExpectedElement(18358);
+ addExpectedElement(18359);
+ addExpectedElement(18360);
+ addExpectedElement(18361);
+ addExpectedElement(18362);
+ addExpectedElement(18363);
+ addExpectedElement(18364);
+ addExpectedElement(18365);
+ addExpectedElement(18366);
+ addExpectedElement(18367);
+ addExpectedElement(18368);
+ addExpectedElement(18369);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 114, parse_org_emftext_language_java_operators_RightShift_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_RightShift"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_UnsignedRightShift"
+ // Java.g:33149:1: parse_org_emftext_language_java_operators_UnsignedRightShift returns [org.emftext.language.java.operators.UnsignedRightShift element = null] : a0= '>' a1= '>' a2= '>' ;
+ public final org.emftext.language.java.operators.UnsignedRightShift parse_org_emftext_language_java_operators_UnsignedRightShift() throws RecognitionException {
+ org.emftext.language.java.operators.UnsignedRightShift element = null;
+
+ int parse_org_emftext_language_java_operators_UnsignedRightShift_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+ Token a2=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 115) ) { return element; }
+
+ // Java.g:33152:2: (a0= '>' a1= '>' a2= '>' )
+ // Java.g:33153:2: a0= '>' a1= '>' a2= '>'
+ {
+ a0=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_UnsignedRightShift21029); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createUnsignedRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_113_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18370);
+ }
+
+ a1=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_UnsignedRightShift21043); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createUnsignedRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_113_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18371);
+ }
+
+ a2=(Token)match(input,46,FOLLOW_46_in_parse_org_emftext_language_java_operators_UnsignedRightShift21057); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createUnsignedRightShift();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_113_0_0_2, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a2, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18372);
+ addExpectedElement(18373);
+ addExpectedElement(18374);
+ addExpectedElement(18375);
+ addExpectedElement(18376);
+ addExpectedElement(18377);
+ addExpectedElement(18378);
+ addExpectedElement(18379);
+ addExpectedElement(18380);
+ addExpectedElement(18381);
+ addExpectedElement(18382);
+ addExpectedElement(18383);
+ addExpectedElement(18384);
+ addExpectedElement(18385);
+ addExpectedElement(18386);
+ addExpectedElement(18387);
+ addExpectedElement(18388);
+ addExpectedElement(18389);
+ addExpectedElement(18390);
+ addExpectedElement(18391);
+ addExpectedElement(18392);
+ addExpectedElement(18393);
+ addExpectedElement(18394);
+ addExpectedElement(18395);
+ addExpectedElement(18396);
+ addExpectedElement(18397);
+ addExpectedElement(18398);
+ addExpectedElement(18399);
+ addExpectedElement(18400);
+ addExpectedElement(18401);
+ addExpectedElement(18402);
+ addExpectedElement(18403);
+ addExpectedElement(18404);
+ addExpectedElement(18405);
+ addExpectedElement(18406);
+ addExpectedElement(18407);
+ addExpectedElement(18408);
+ addExpectedElement(18409);
+ addExpectedElement(18410);
+ addExpectedElement(18411);
+ addExpectedElement(18412);
+ addExpectedElement(18413);
+ addExpectedElement(18414);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 115, parse_org_emftext_language_java_operators_UnsignedRightShift_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_UnsignedRightShift"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Equal"
+ // Java.g:33239:1: parse_org_emftext_language_java_operators_Equal returns [org.emftext.language.java.operators.Equal element = null] : a0= '==' ;
+ public final org.emftext.language.java.operators.Equal parse_org_emftext_language_java_operators_Equal() throws RecognitionException {
+ org.emftext.language.java.operators.Equal element = null;
+
+ int parse_org_emftext_language_java_operators_Equal_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 116) ) { return element; }
+
+ // Java.g:33242:2: (a0= '==' )
+ // Java.g:33243:2: a0= '=='
+ {
+ a0=(Token)match(input,45,FOLLOW_45_in_parse_org_emftext_language_java_operators_Equal21086); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createEqual();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_114_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18415);
+ addExpectedElement(18416);
+ addExpectedElement(18417);
+ addExpectedElement(18418);
+ addExpectedElement(18419);
+ addExpectedElement(18420);
+ addExpectedElement(18421);
+ addExpectedElement(18422);
+ addExpectedElement(18423);
+ addExpectedElement(18424);
+ addExpectedElement(18425);
+ addExpectedElement(18426);
+ addExpectedElement(18427);
+ addExpectedElement(18428);
+ addExpectedElement(18429);
+ addExpectedElement(18430);
+ addExpectedElement(18431);
+ addExpectedElement(18432);
+ addExpectedElement(18433);
+ addExpectedElement(18434);
+ addExpectedElement(18435);
+ addExpectedElement(18436);
+ addExpectedElement(18437);
+ addExpectedElement(18438);
+ addExpectedElement(18439);
+ addExpectedElement(18440);
+ addExpectedElement(18441);
+ addExpectedElement(18442);
+ addExpectedElement(18443);
+ addExpectedElement(18444);
+ addExpectedElement(18445);
+ addExpectedElement(18446);
+ addExpectedElement(18447);
+ addExpectedElement(18448);
+ addExpectedElement(18449);
+ addExpectedElement(18450);
+ addExpectedElement(18451);
+ addExpectedElement(18452);
+ addExpectedElement(18453);
+ addExpectedElement(18454);
+ addExpectedElement(18455);
+ addExpectedElement(18456);
+ addExpectedElement(18457);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 116, parse_org_emftext_language_java_operators_Equal_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Equal"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_NotEqual"
+ // Java.g:33301:1: parse_org_emftext_language_java_operators_NotEqual returns [org.emftext.language.java.operators.NotEqual element = null] : a0= '!=' ;
+ public final org.emftext.language.java.operators.NotEqual parse_org_emftext_language_java_operators_NotEqual() throws RecognitionException {
+ org.emftext.language.java.operators.NotEqual element = null;
+
+ int parse_org_emftext_language_java_operators_NotEqual_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 117) ) { return element; }
+
+ // Java.g:33304:2: (a0= '!=' )
+ // Java.g:33305:2: a0= '!='
+ {
+ a0=(Token)match(input,22,FOLLOW_22_in_parse_org_emftext_language_java_operators_NotEqual21115); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createNotEqual();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_115_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18458);
+ addExpectedElement(18459);
+ addExpectedElement(18460);
+ addExpectedElement(18461);
+ addExpectedElement(18462);
+ addExpectedElement(18463);
+ addExpectedElement(18464);
+ addExpectedElement(18465);
+ addExpectedElement(18466);
+ addExpectedElement(18467);
+ addExpectedElement(18468);
+ addExpectedElement(18469);
+ addExpectedElement(18470);
+ addExpectedElement(18471);
+ addExpectedElement(18472);
+ addExpectedElement(18473);
+ addExpectedElement(18474);
+ addExpectedElement(18475);
+ addExpectedElement(18476);
+ addExpectedElement(18477);
+ addExpectedElement(18478);
+ addExpectedElement(18479);
+ addExpectedElement(18480);
+ addExpectedElement(18481);
+ addExpectedElement(18482);
+ addExpectedElement(18483);
+ addExpectedElement(18484);
+ addExpectedElement(18485);
+ addExpectedElement(18486);
+ addExpectedElement(18487);
+ addExpectedElement(18488);
+ addExpectedElement(18489);
+ addExpectedElement(18490);
+ addExpectedElement(18491);
+ addExpectedElement(18492);
+ addExpectedElement(18493);
+ addExpectedElement(18494);
+ addExpectedElement(18495);
+ addExpectedElement(18496);
+ addExpectedElement(18497);
+ addExpectedElement(18498);
+ addExpectedElement(18499);
+ addExpectedElement(18500);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 117, parse_org_emftext_language_java_operators_NotEqual_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_NotEqual"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_PlusPlus"
+ // Java.g:33363:1: parse_org_emftext_language_java_operators_PlusPlus returns [org.emftext.language.java.operators.PlusPlus element = null] : a0= '++' ;
+ public final org.emftext.language.java.operators.PlusPlus parse_org_emftext_language_java_operators_PlusPlus() throws RecognitionException {
+ org.emftext.language.java.operators.PlusPlus element = null;
+
+ int parse_org_emftext_language_java_operators_PlusPlus_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 118) ) { return element; }
+
+ // Java.g:33366:2: (a0= '++' )
+ // Java.g:33367:2: a0= '++'
+ {
+ a0=(Token)match(input,31,FOLLOW_31_in_parse_org_emftext_language_java_operators_PlusPlus21144); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createPlusPlus();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_116_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18501);
+ addExpectedElement(18502);
+ addExpectedElement(18503);
+ addExpectedElement(18504);
+ addExpectedElement(18505);
+ addExpectedElement(18506);
+ addExpectedElement(18507);
+ addExpectedElement(18508);
+ addExpectedElement(18509);
+ addExpectedElement(18510);
+ addExpectedElement(18511);
+ addExpectedElement(18512);
+ addExpectedElement(18513);
+ addExpectedElement(18514);
+ addExpectedElement(18515);
+ addExpectedElement(18516);
+ addExpectedElement(18517);
+ addExpectedElement(18518);
+ addExpectedElement(18519);
+ addExpectedElement(18520);
+ addExpectedElement(18521);
+ addExpectedElement(18522);
+ addExpectedElement(18523);
+ addExpectedElement(18524);
+ addExpectedElement(18525);
+ addExpectedElement(18526);
+ addExpectedElement(18527);
+ addExpectedElement(18528);
+ addExpectedElement(18529);
+ addExpectedElement(18530);
+ addExpectedElement(18531);
+ addExpectedElement(18532);
+ addExpectedElement(18533);
+ addExpectedElement(18534);
+ addExpectedElement(18535);
+ addExpectedElement(18536);
+ addExpectedElement(18537);
+ addExpectedElement(18538);
+ addExpectedElement(18539);
+ addExpectedElement(18540);
+ addExpectedElement(18541);
+ addExpectedElement(18542);
+ addExpectedElement(18543);
+ addExpectedElement(18544);
+ addExpectedElement(18545);
+ addExpectedElement(18546);
+ addExpectedElement(18547);
+ addExpectedElement(18548);
+ addExpectedElement(18549);
+ addExpectedElement(18550);
+ addExpectedElement(18551);
+ addExpectedElement(18552);
+ addExpectedElement(18553);
+ addExpectedElement(18554);
+ addExpectedElement(18555);
+ addExpectedElement(18556);
+ addExpectedElement(18557);
+ addExpectedElement(18558);
+ addExpectedElement(18559);
+ addExpectedElement(18560);
+ addExpectedElement(18561);
+ addExpectedElement(18562);
+ addExpectedElement(18563);
+ addExpectedElement(18564);
+ addExpectedElement(18565);
+ addExpectedElement(18566);
+ addExpectedElement(18567);
+ addExpectedElement(18568);
+ addExpectedElement(18569);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 118, parse_org_emftext_language_java_operators_PlusPlus_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_PlusPlus"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_MinusMinus"
+ // Java.g:33451:1: parse_org_emftext_language_java_operators_MinusMinus returns [org.emftext.language.java.operators.MinusMinus element = null] : a0= '--' ;
+ public final org.emftext.language.java.operators.MinusMinus parse_org_emftext_language_java_operators_MinusMinus() throws RecognitionException {
+ org.emftext.language.java.operators.MinusMinus element = null;
+
+ int parse_org_emftext_language_java_operators_MinusMinus_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 119) ) { return element; }
+
+ // Java.g:33454:2: (a0= '--' )
+ // Java.g:33455:2: a0= '--'
+ {
+ a0=(Token)match(input,35,FOLLOW_35_in_parse_org_emftext_language_java_operators_MinusMinus21173); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createMinusMinus();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_117_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18570);
+ addExpectedElement(18571);
+ addExpectedElement(18572);
+ addExpectedElement(18573);
+ addExpectedElement(18574);
+ addExpectedElement(18575);
+ addExpectedElement(18576);
+ addExpectedElement(18577);
+ addExpectedElement(18578);
+ addExpectedElement(18579);
+ addExpectedElement(18580);
+ addExpectedElement(18581);
+ addExpectedElement(18582);
+ addExpectedElement(18583);
+ addExpectedElement(18584);
+ addExpectedElement(18585);
+ addExpectedElement(18586);
+ addExpectedElement(18587);
+ addExpectedElement(18588);
+ addExpectedElement(18589);
+ addExpectedElement(18590);
+ addExpectedElement(18591);
+ addExpectedElement(18592);
+ addExpectedElement(18593);
+ addExpectedElement(18594);
+ addExpectedElement(18595);
+ addExpectedElement(18596);
+ addExpectedElement(18597);
+ addExpectedElement(18598);
+ addExpectedElement(18599);
+ addExpectedElement(18600);
+ addExpectedElement(18601);
+ addExpectedElement(18602);
+ addExpectedElement(18603);
+ addExpectedElement(18604);
+ addExpectedElement(18605);
+ addExpectedElement(18606);
+ addExpectedElement(18607);
+ addExpectedElement(18608);
+ addExpectedElement(18609);
+ addExpectedElement(18610);
+ addExpectedElement(18611);
+ addExpectedElement(18612);
+ addExpectedElement(18613);
+ addExpectedElement(18614);
+ addExpectedElement(18615);
+ addExpectedElement(18616);
+ addExpectedElement(18617);
+ addExpectedElement(18618);
+ addExpectedElement(18619);
+ addExpectedElement(18620);
+ addExpectedElement(18621);
+ addExpectedElement(18622);
+ addExpectedElement(18623);
+ addExpectedElement(18624);
+ addExpectedElement(18625);
+ addExpectedElement(18626);
+ addExpectedElement(18627);
+ addExpectedElement(18628);
+ addExpectedElement(18629);
+ addExpectedElement(18630);
+ addExpectedElement(18631);
+ addExpectedElement(18632);
+ addExpectedElement(18633);
+ addExpectedElement(18634);
+ addExpectedElement(18635);
+ addExpectedElement(18636);
+ addExpectedElement(18637);
+ addExpectedElement(18638);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 119, parse_org_emftext_language_java_operators_MinusMinus_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_MinusMinus"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Complement"
+ // Java.g:33539:1: parse_org_emftext_language_java_operators_Complement returns [org.emftext.language.java.operators.Complement element = null] : a0= '~' ;
+ public final org.emftext.language.java.operators.Complement parse_org_emftext_language_java_operators_Complement() throws RecognitionException {
+ org.emftext.language.java.operators.Complement element = null;
+
+ int parse_org_emftext_language_java_operators_Complement_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 120) ) { return element; }
+
+ // Java.g:33542:2: (a0= '~' )
+ // Java.g:33543:2: a0= '~'
+ {
+ a0=(Token)match(input,110,FOLLOW_110_in_parse_org_emftext_language_java_operators_Complement21202); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createComplement();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_118_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18639);
+ addExpectedElement(18640);
+ addExpectedElement(18641);
+ addExpectedElement(18642);
+ addExpectedElement(18643);
+ addExpectedElement(18644);
+ addExpectedElement(18645);
+ addExpectedElement(18646);
+ addExpectedElement(18647);
+ addExpectedElement(18648);
+ addExpectedElement(18649);
+ addExpectedElement(18650);
+ addExpectedElement(18651);
+ addExpectedElement(18652);
+ addExpectedElement(18653);
+ addExpectedElement(18654);
+ addExpectedElement(18655);
+ addExpectedElement(18656);
+ addExpectedElement(18657);
+ addExpectedElement(18658);
+ addExpectedElement(18659);
+ addExpectedElement(18660);
+ addExpectedElement(18661);
+ addExpectedElement(18662);
+ addExpectedElement(18663);
+ addExpectedElement(18664);
+ addExpectedElement(18665);
+ addExpectedElement(18666);
+ addExpectedElement(18667);
+ addExpectedElement(18668);
+ addExpectedElement(18669);
+ addExpectedElement(18670);
+ addExpectedElement(18671);
+ addExpectedElement(18672);
+ addExpectedElement(18673);
+ addExpectedElement(18674);
+ addExpectedElement(18675);
+ addExpectedElement(18676);
+ addExpectedElement(18677);
+ addExpectedElement(18678);
+ addExpectedElement(18679);
+ addExpectedElement(18680);
+ addExpectedElement(18681);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 120, parse_org_emftext_language_java_operators_Complement_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Complement"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_Negate"
+ // Java.g:33601:1: parse_org_emftext_language_java_operators_Negate returns [org.emftext.language.java.operators.Negate element = null] : a0= '!' ;
+ public final org.emftext.language.java.operators.Negate parse_org_emftext_language_java_operators_Negate() throws RecognitionException {
+ org.emftext.language.java.operators.Negate element = null;
+
+ int parse_org_emftext_language_java_operators_Negate_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 121) ) { return element; }
+
+ // Java.g:33604:2: (a0= '!' )
+ // Java.g:33605:2: a0= '!'
+ {
+ a0=(Token)match(input,21,FOLLOW_21_in_parse_org_emftext_language_java_operators_Negate21231); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.operators.OperatorsFactory.eINSTANCE.createNegate();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_119_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18682);
+ addExpectedElement(18683);
+ addExpectedElement(18684);
+ addExpectedElement(18685);
+ addExpectedElement(18686);
+ addExpectedElement(18687);
+ addExpectedElement(18688);
+ addExpectedElement(18689);
+ addExpectedElement(18690);
+ addExpectedElement(18691);
+ addExpectedElement(18692);
+ addExpectedElement(18693);
+ addExpectedElement(18694);
+ addExpectedElement(18695);
+ addExpectedElement(18696);
+ addExpectedElement(18697);
+ addExpectedElement(18698);
+ addExpectedElement(18699);
+ addExpectedElement(18700);
+ addExpectedElement(18701);
+ addExpectedElement(18702);
+ addExpectedElement(18703);
+ addExpectedElement(18704);
+ addExpectedElement(18705);
+ addExpectedElement(18706);
+ addExpectedElement(18707);
+ addExpectedElement(18708);
+ addExpectedElement(18709);
+ addExpectedElement(18710);
+ addExpectedElement(18711);
+ addExpectedElement(18712);
+ addExpectedElement(18713);
+ addExpectedElement(18714);
+ addExpectedElement(18715);
+ addExpectedElement(18716);
+ addExpectedElement(18717);
+ addExpectedElement(18718);
+ addExpectedElement(18719);
+ addExpectedElement(18720);
+ addExpectedElement(18721);
+ addExpectedElement(18722);
+ addExpectedElement(18723);
+ addExpectedElement(18724);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 121, parse_org_emftext_language_java_operators_Negate_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_Negate"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_arrays_ArrayDimension"
+ // Java.g:33663:1: parse_org_emftext_language_java_arrays_ArrayDimension returns [org.emftext.language.java.arrays.ArrayDimension element = null] : (a0= '[' a1= ']' ) ;
+ public final org.emftext.language.java.arrays.ArrayDimension parse_org_emftext_language_java_arrays_ArrayDimension() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayDimension element = null;
+
+ int parse_org_emftext_language_java_arrays_ArrayDimension_StartIndex = input.index();
+
+ Token a0=null;
+ Token a1=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 122) ) { return element; }
+
+ // Java.g:33666:2: ( (a0= '[' a1= ']' ) )
+ // Java.g:33667:2: (a0= '[' a1= ']' )
+ {
+ // Java.g:33667:2: (a0= '[' a1= ']' )
+ // Java.g:33668:3: a0= '[' a1= ']'
+ {
+ a0=(Token)match(input,49,FOLLOW_49_in_parse_org_emftext_language_java_arrays_ArrayDimension21264); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayDimension();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_120_0_0_0_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18725);
+ }
+
+ a1=(Token)match(input,53,FOLLOW_53_in_parse_org_emftext_language_java_arrays_ArrayDimension21281); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.arrays.ArraysFactory.eINSTANCE.createArrayDimension();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_120_0_0_0_0_0_1, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a1, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18726);
+ addExpectedElement(18727);
+ addExpectedElement(18728);
+ addExpectedElement(18729);
+ addExpectedElement(18730);
+ addExpectedElement(18731);
+ addExpectedElement(18732);
+ addExpectedElement(18733);
+ addExpectedElement(18734);
+ addExpectedElement(18735);
+ addExpectedElement(18736);
+ addExpectedElement(18737);
+ addExpectedElement(18738);
+ addExpectedElement(18739);
+ addExpectedElement(18740);
+ addExpectedElement(18741);
+ addExpectedElement(18742);
+ addExpectedElement(18743);
+ addExpectedElement(18744);
+ addExpectedElement(18745);
+ addExpectedElement(18746);
+ addExpectedElement(18747);
+ addExpectedElement(18748);
+ addExpectedElement(18749);
+ addExpectedElement(18750);
+ addExpectedElement(18751);
+ addExpectedElement(18752);
+ addExpectedElement(18753);
+ addExpectedElement(18754);
+ addExpectedElement(18755);
+ addExpectedElement(18756);
+ addExpectedElement(18757);
+ addExpectedElement(18758);
+ addExpectedElement(18759);
+ addExpectedElement(18760);
+ addExpectedElement(18761);
+ addExpectedElement(18762);
+ addExpectedElement(18763);
+ addExpectedElement(18764);
+ addExpectedElement(18765);
+ addExpectedElement(18766);
+ addExpectedElement(18767);
+ addExpectedElement(18768);
+ addExpectedElement(18769);
+ addExpectedElement(18770);
+ addExpectedElement(18771);
+ addExpectedElement(18772);
+ addExpectedElement(18773);
+ addExpectedElement(18774);
+ addExpectedElement(18775);
+ addExpectedElement(18776);
+ addExpectedElement(18777);
+ addExpectedElement(18778);
+ addExpectedElement(18779);
+ addExpectedElement(18780);
+ addExpectedElement(18781);
+ addExpectedElement(18782);
+ addExpectedElement(18783);
+ addExpectedElement(18784);
+ addExpectedElement(18785);
+ addExpectedElement(18786);
+ addExpectedElement(18787);
+ addExpectedElement(18788);
+ addExpectedElement(18789);
+ addExpectedElement(18790);
+ addExpectedElement(18791);
+ addExpectedElement(18792);
+ addExpectedElement(18793);
+ addExpectedElement(18794);
+ addExpectedElement(18795);
+ addExpectedElement(18796);
+ addExpectedElement(18797);
+ addExpectedElement(18798);
+ addExpectedElement(18799);
+ addExpectedElement(18800);
+ addExpectedElement(18801);
+ addExpectedElement(18802);
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18803);
+ addExpectedElement(18804);
+ addExpectedElement(18805);
+ addExpectedElement(18806);
+ addExpectedElement(18807);
+ addExpectedElement(18808);
+ addExpectedElement(18809);
+ addExpectedElement(18810);
+ addExpectedElement(18811);
+ addExpectedElement(18812);
+ addExpectedElement(18813);
+ addExpectedElement(18814);
+ addExpectedElement(18815);
+ addExpectedElement(18816);
+ addExpectedElement(18817);
+ addExpectedElement(18818);
+ addExpectedElement(18819);
+ addExpectedElement(18820);
+ addExpectedElement(18821);
+ addExpectedElement(18822);
+ addExpectedElement(18823);
+ addExpectedElement(18824);
+ addExpectedElement(18825);
+ addExpectedElement(18826);
+ addExpectedElement(18827);
+ addExpectedElement(18828);
+ addExpectedElement(18829);
+ addExpectedElement(18830);
+ addExpectedElement(18831);
+ addExpectedElement(18832);
+ addExpectedElement(18833);
+ addExpectedElement(18834);
+ addExpectedElement(18835);
+ addExpectedElement(18836);
+ addExpectedElement(18837);
+ addExpectedElement(18838);
+ addExpectedElement(18839);
+ addExpectedElement(18840);
+ addExpectedElement(18841);
+ addExpectedElement(18842);
+ addExpectedElement(18843);
+ addExpectedElement(18844);
+ addExpectedElement(18845);
+ addExpectedElement(18846);
+ addExpectedElement(18847);
+ addExpectedElement(18848);
+ addExpectedElement(18849);
+ addExpectedElement(18850);
+ addExpectedElement(18851);
+ addExpectedElement(18852);
+ addExpectedElement(18853);
+ addExpectedElement(18854);
+ addExpectedElement(18855);
+ addExpectedElement(18856);
+ addExpectedElement(18857);
+ addExpectedElement(18858);
+ addExpectedElement(18859);
+ addExpectedElement(18860);
+ addExpectedElement(18861);
+ addExpectedElement(18862);
+ addExpectedElement(18863);
+ addExpectedElement(18864);
+ addExpectedElement(18865);
+ addExpectedElement(18866);
+ addExpectedElement(18867);
+ addExpectedElement(18868);
+ addExpectedElement(18869);
+ addExpectedElement(18870);
+ addExpectedElement(18871);
+ addExpectedElement(18872);
+ addExpectedElement(18873);
+ addExpectedElement(18874);
+ addExpectedElement(18875);
+ addExpectedElement(18876);
+ addExpectedElement(18877);
+ addExpectedElement(18878);
+ addExpectedElement(18879);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 122, parse_org_emftext_language_java_arrays_ArrayDimension_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_arrays_ArrayDimension"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_NullLiteral"
+ // Java.g:33856:1: parse_org_emftext_language_java_literals_NullLiteral returns [org.emftext.language.java.literals.NullLiteral element = null] : a0= 'null' ;
+ public final org.emftext.language.java.literals.NullLiteral parse_org_emftext_language_java_literals_NullLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.NullLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_NullLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 123) ) { return element; }
+
+ // Java.g:33859:2: (a0= 'null' )
+ // Java.g:33860:2: a0= 'null'
+ {
+ a0=(Token)match(input,85,FOLLOW_85_in_parse_org_emftext_language_java_literals_NullLiteral21320); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createNullLiteral();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_121_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18880);
+ addExpectedElement(18881);
+ addExpectedElement(18882);
+ addExpectedElement(18883);
+ addExpectedElement(18884);
+ addExpectedElement(18885);
+ addExpectedElement(18886);
+ addExpectedElement(18887);
+ addExpectedElement(18888);
+ addExpectedElement(18889);
+ addExpectedElement(18890);
+ addExpectedElement(18891);
+ addExpectedElement(18892);
+ addExpectedElement(18893);
+ addExpectedElement(18894);
+ addExpectedElement(18895);
+ addExpectedElement(18896);
+ addExpectedElement(18897);
+ addExpectedElement(18898);
+ addExpectedElement(18899);
+ addExpectedElement(18900);
+ addExpectedElement(18901);
+ addExpectedElement(18902);
+ addExpectedElement(18903);
+ addExpectedElement(18904);
+ addExpectedElement(18905);
+ addExpectedElement(18906);
+ addExpectedElement(18907);
+ addExpectedElement(18908);
+ addExpectedElement(18909);
+ addExpectedElement(18910);
+ addExpectedElement(18911);
+ addExpectedElement(18912);
+ addExpectedElement(18913);
+ addExpectedElement(18914);
+ addExpectedElement(18915);
+ addExpectedElement(18916);
+ addExpectedElement(18917);
+ addExpectedElement(18918);
+ addExpectedElement(18919);
+ addExpectedElement(18920);
+ addExpectedElement(18921);
+ addExpectedElement(18922);
+ addExpectedElement(18923);
+ addExpectedElement(18924);
+ addExpectedElement(18925);
+ addExpectedElement(18926);
+ addExpectedElement(18927);
+ addExpectedElement(18928);
+ addExpectedElement(18929);
+ addExpectedElement(18930);
+ addExpectedElement(18931);
+ addExpectedElement(18932);
+ addExpectedElement(18933);
+ addExpectedElement(18934);
+ addExpectedElement(18935);
+ addExpectedElement(18936);
+ addExpectedElement(18937);
+ addExpectedElement(18938);
+ addExpectedElement(18939);
+ addExpectedElement(18940);
+ addExpectedElement(18941);
+ addExpectedElement(18942);
+ addExpectedElement(18943);
+ addExpectedElement(18944);
+ addExpectedElement(18945);
+ addExpectedElement(18946);
+ addExpectedElement(18947);
+ addExpectedElement(18948);
+ addExpectedElement(18949);
+ addExpectedElement(18950);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 123, parse_org_emftext_language_java_literals_NullLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_NullLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Public"
+ // Java.g:33946:1: parse_org_emftext_language_java_modifiers_Public returns [org.emftext.language.java.modifiers.Public element = null] : a0= 'public' ;
+ public final org.emftext.language.java.modifiers.Public parse_org_emftext_language_java_modifiers_Public() throws RecognitionException {
+ org.emftext.language.java.modifiers.Public element = null;
+
+ int parse_org_emftext_language_java_modifiers_Public_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 124) ) { return element; }
+
+ // Java.g:33949:2: (a0= 'public' )
+ // Java.g:33950:2: a0= 'public'
+ {
+ a0=(Token)match(input,89,FOLLOW_89_in_parse_org_emftext_language_java_modifiers_Public21349); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createPublic();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_122_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18951);
+ addExpectedElement(18952);
+ addExpectedElement(18953);
+ addExpectedElement(18954);
+ addExpectedElement(18955);
+ addExpectedElement(18956);
+ addExpectedElement(18957);
+ addExpectedElement(18958);
+ addExpectedElement(18959);
+ addExpectedElement(18960);
+ addExpectedElement(18961);
+ addExpectedElement(18962);
+ addExpectedElement(18963);
+ addExpectedElement(18964);
+ addExpectedElement(18965);
+ addExpectedElement(18966);
+ addExpectedElement(18967);
+ addExpectedElement(18968);
+ addExpectedElement(18969);
+ addExpectedElement(18970);
+ addExpectedElement(18971);
+ addExpectedElement(18972);
+ addExpectedElement(18973);
+ addExpectedElement(18974);
+ addExpectedElement(18975);
+ addExpectedElement(18976);
+ addExpectedElement(18977);
+ addExpectedElement(18978);
+ addExpectedElement(18979);
+ addExpectedElement(18980);
+ addExpectedElement(18981);
+ addExpectedElement(18982);
+ addExpectedElement(18983);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 124, parse_org_emftext_language_java_modifiers_Public_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Public"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Abstract"
+ // Java.g:33998:1: parse_org_emftext_language_java_modifiers_Abstract returns [org.emftext.language.java.modifiers.Abstract element = null] : a0= 'abstract' ;
+ public final org.emftext.language.java.modifiers.Abstract parse_org_emftext_language_java_modifiers_Abstract() throws RecognitionException {
+ org.emftext.language.java.modifiers.Abstract element = null;
+
+ int parse_org_emftext_language_java_modifiers_Abstract_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 125) ) { return element; }
+
+ // Java.g:34001:2: (a0= 'abstract' )
+ // Java.g:34002:2: a0= 'abstract'
+ {
+ a0=(Token)match(input,56,FOLLOW_56_in_parse_org_emftext_language_java_modifiers_Abstract21378); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createAbstract();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_123_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(18984);
+ addExpectedElement(18985);
+ addExpectedElement(18986);
+ addExpectedElement(18987);
+ addExpectedElement(18988);
+ addExpectedElement(18989);
+ addExpectedElement(18990);
+ addExpectedElement(18991);
+ addExpectedElement(18992);
+ addExpectedElement(18993);
+ addExpectedElement(18994);
+ addExpectedElement(18995);
+ addExpectedElement(18996);
+ addExpectedElement(18997);
+ addExpectedElement(18998);
+ addExpectedElement(18999);
+ addExpectedElement(19000);
+ addExpectedElement(19001);
+ addExpectedElement(19002);
+ addExpectedElement(19003);
+ addExpectedElement(19004);
+ addExpectedElement(19005);
+ addExpectedElement(19006);
+ addExpectedElement(19007);
+ addExpectedElement(19008);
+ addExpectedElement(19009);
+ addExpectedElement(19010);
+ addExpectedElement(19011);
+ addExpectedElement(19012);
+ addExpectedElement(19013);
+ addExpectedElement(19014);
+ addExpectedElement(19015);
+ addExpectedElement(19016);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 125, parse_org_emftext_language_java_modifiers_Abstract_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Abstract"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Protected"
+ // Java.g:34050:1: parse_org_emftext_language_java_modifiers_Protected returns [org.emftext.language.java.modifiers.Protected element = null] : a0= 'protected' ;
+ public final org.emftext.language.java.modifiers.Protected parse_org_emftext_language_java_modifiers_Protected() throws RecognitionException {
+ org.emftext.language.java.modifiers.Protected element = null;
+
+ int parse_org_emftext_language_java_modifiers_Protected_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 126) ) { return element; }
+
+ // Java.g:34053:2: (a0= 'protected' )
+ // Java.g:34054:2: a0= 'protected'
+ {
+ a0=(Token)match(input,88,FOLLOW_88_in_parse_org_emftext_language_java_modifiers_Protected21407); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createProtected();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_124_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19017);
+ addExpectedElement(19018);
+ addExpectedElement(19019);
+ addExpectedElement(19020);
+ addExpectedElement(19021);
+ addExpectedElement(19022);
+ addExpectedElement(19023);
+ addExpectedElement(19024);
+ addExpectedElement(19025);
+ addExpectedElement(19026);
+ addExpectedElement(19027);
+ addExpectedElement(19028);
+ addExpectedElement(19029);
+ addExpectedElement(19030);
+ addExpectedElement(19031);
+ addExpectedElement(19032);
+ addExpectedElement(19033);
+ addExpectedElement(19034);
+ addExpectedElement(19035);
+ addExpectedElement(19036);
+ addExpectedElement(19037);
+ addExpectedElement(19038);
+ addExpectedElement(19039);
+ addExpectedElement(19040);
+ addExpectedElement(19041);
+ addExpectedElement(19042);
+ addExpectedElement(19043);
+ addExpectedElement(19044);
+ addExpectedElement(19045);
+ addExpectedElement(19046);
+ addExpectedElement(19047);
+ addExpectedElement(19048);
+ addExpectedElement(19049);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 126, parse_org_emftext_language_java_modifiers_Protected_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Protected"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Private"
+ // Java.g:34102:1: parse_org_emftext_language_java_modifiers_Private returns [org.emftext.language.java.modifiers.Private element = null] : a0= 'private' ;
+ public final org.emftext.language.java.modifiers.Private parse_org_emftext_language_java_modifiers_Private() throws RecognitionException {
+ org.emftext.language.java.modifiers.Private element = null;
+
+ int parse_org_emftext_language_java_modifiers_Private_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 127) ) { return element; }
+
+ // Java.g:34105:2: (a0= 'private' )
+ // Java.g:34106:2: a0= 'private'
+ {
+ a0=(Token)match(input,87,FOLLOW_87_in_parse_org_emftext_language_java_modifiers_Private21436); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createPrivate();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_125_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19050);
+ addExpectedElement(19051);
+ addExpectedElement(19052);
+ addExpectedElement(19053);
+ addExpectedElement(19054);
+ addExpectedElement(19055);
+ addExpectedElement(19056);
+ addExpectedElement(19057);
+ addExpectedElement(19058);
+ addExpectedElement(19059);
+ addExpectedElement(19060);
+ addExpectedElement(19061);
+ addExpectedElement(19062);
+ addExpectedElement(19063);
+ addExpectedElement(19064);
+ addExpectedElement(19065);
+ addExpectedElement(19066);
+ addExpectedElement(19067);
+ addExpectedElement(19068);
+ addExpectedElement(19069);
+ addExpectedElement(19070);
+ addExpectedElement(19071);
+ addExpectedElement(19072);
+ addExpectedElement(19073);
+ addExpectedElement(19074);
+ addExpectedElement(19075);
+ addExpectedElement(19076);
+ addExpectedElement(19077);
+ addExpectedElement(19078);
+ addExpectedElement(19079);
+ addExpectedElement(19080);
+ addExpectedElement(19081);
+ addExpectedElement(19082);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 127, parse_org_emftext_language_java_modifiers_Private_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Private"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Final"
+ // Java.g:34154:1: parse_org_emftext_language_java_modifiers_Final returns [org.emftext.language.java.modifiers.Final element = null] : a0= 'final' ;
+ public final org.emftext.language.java.modifiers.Final parse_org_emftext_language_java_modifiers_Final() throws RecognitionException {
+ org.emftext.language.java.modifiers.Final element = null;
+
+ int parse_org_emftext_language_java_modifiers_Final_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 128) ) { return element; }
+
+ // Java.g:34157:2: (a0= 'final' )
+ // Java.g:34158:2: a0= 'final'
+ {
+ a0=(Token)match(input,72,FOLLOW_72_in_parse_org_emftext_language_java_modifiers_Final21465); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createFinal();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_126_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19083);
+ addExpectedElement(19084);
+ addExpectedElement(19085);
+ addExpectedElement(19086);
+ addExpectedElement(19087);
+ addExpectedElement(19088);
+ addExpectedElement(19089);
+ addExpectedElement(19090);
+ addExpectedElement(19091);
+ addExpectedElement(19092);
+ addExpectedElement(19093);
+ addExpectedElement(19094);
+ addExpectedElement(19095);
+ addExpectedElement(19096);
+ addExpectedElement(19097);
+ addExpectedElement(19098);
+ addExpectedElement(19099);
+ addExpectedElement(19100);
+ addExpectedElement(19101);
+ addExpectedElement(19102);
+ addExpectedElement(19103);
+ addExpectedElement(19104);
+ addExpectedElement(19105);
+ addExpectedElement(19106);
+ addExpectedElement(19107);
+ addExpectedElement(19108);
+ addExpectedElement(19109);
+ addExpectedElement(19110);
+ addExpectedElement(19111);
+ addExpectedElement(19112);
+ addExpectedElement(19113);
+ addExpectedElement(19114);
+ addExpectedElement(19115);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 128, parse_org_emftext_language_java_modifiers_Final_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Final"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Static"
+ // Java.g:34206:1: parse_org_emftext_language_java_modifiers_Static returns [org.emftext.language.java.modifiers.Static element = null] : a0= 'static' ;
+ public final org.emftext.language.java.modifiers.Static parse_org_emftext_language_java_modifiers_Static() throws RecognitionException {
+ org.emftext.language.java.modifiers.Static element = null;
+
+ int parse_org_emftext_language_java_modifiers_Static_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 129) ) { return element; }
+
+ // Java.g:34209:2: (a0= 'static' )
+ // Java.g:34210:2: a0= 'static'
+ {
+ a0=(Token)match(input,92,FOLLOW_92_in_parse_org_emftext_language_java_modifiers_Static21494); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createStatic();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_127_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19116);
+ addExpectedElement(19117);
+ addExpectedElement(19118);
+ addExpectedElement(19119);
+ addExpectedElement(19120);
+ addExpectedElement(19121);
+ addExpectedElement(19122);
+ addExpectedElement(19123);
+ addExpectedElement(19124);
+ addExpectedElement(19125);
+ addExpectedElement(19126);
+ addExpectedElement(19127);
+ addExpectedElement(19128);
+ addExpectedElement(19129);
+ addExpectedElement(19130);
+ addExpectedElement(19131);
+ addExpectedElement(19132);
+ addExpectedElement(19133);
+ addExpectedElement(19134);
+ addExpectedElement(19135);
+ addExpectedElement(19136);
+ addExpectedElement(19137);
+ addExpectedElement(19138);
+ addExpectedElement(19139);
+ addExpectedElement(19140);
+ addExpectedElement(19141);
+ addExpectedElement(19142);
+ addExpectedElement(19143);
+ addExpectedElement(19144);
+ addExpectedElement(19145);
+ addExpectedElement(19146);
+ addExpectedElement(19147);
+ addExpectedElement(19148);
+ addExpectedElement(19149);
+ addExpectedElement(19150);
+ addExpectedElement(19151);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 129, parse_org_emftext_language_java_modifiers_Static_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Static"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Native"
+ // Java.g:34261:1: parse_org_emftext_language_java_modifiers_Native returns [org.emftext.language.java.modifiers.Native element = null] : a0= 'native' ;
+ public final org.emftext.language.java.modifiers.Native parse_org_emftext_language_java_modifiers_Native() throws RecognitionException {
+ org.emftext.language.java.modifiers.Native element = null;
+
+ int parse_org_emftext_language_java_modifiers_Native_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 130) ) { return element; }
+
+ // Java.g:34264:2: (a0= 'native' )
+ // Java.g:34265:2: a0= 'native'
+ {
+ a0=(Token)match(input,83,FOLLOW_83_in_parse_org_emftext_language_java_modifiers_Native21523); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createNative();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_128_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19152);
+ addExpectedElement(19153);
+ addExpectedElement(19154);
+ addExpectedElement(19155);
+ addExpectedElement(19156);
+ addExpectedElement(19157);
+ addExpectedElement(19158);
+ addExpectedElement(19159);
+ addExpectedElement(19160);
+ addExpectedElement(19161);
+ addExpectedElement(19162);
+ addExpectedElement(19163);
+ addExpectedElement(19164);
+ addExpectedElement(19165);
+ addExpectedElement(19166);
+ addExpectedElement(19167);
+ addExpectedElement(19168);
+ addExpectedElement(19169);
+ addExpectedElement(19170);
+ addExpectedElement(19171);
+ addExpectedElement(19172);
+ addExpectedElement(19173);
+ addExpectedElement(19174);
+ addExpectedElement(19175);
+ addExpectedElement(19176);
+ addExpectedElement(19177);
+ addExpectedElement(19178);
+ addExpectedElement(19179);
+ addExpectedElement(19180);
+ addExpectedElement(19181);
+ addExpectedElement(19182);
+ addExpectedElement(19183);
+ addExpectedElement(19184);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 130, parse_org_emftext_language_java_modifiers_Native_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Native"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Synchronized"
+ // Java.g:34313:1: parse_org_emftext_language_java_modifiers_Synchronized returns [org.emftext.language.java.modifiers.Synchronized element = null] : a0= 'synchronized' ;
+ public final org.emftext.language.java.modifiers.Synchronized parse_org_emftext_language_java_modifiers_Synchronized() throws RecognitionException {
+ org.emftext.language.java.modifiers.Synchronized element = null;
+
+ int parse_org_emftext_language_java_modifiers_Synchronized_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 131) ) { return element; }
+
+ // Java.g:34316:2: (a0= 'synchronized' )
+ // Java.g:34317:2: a0= 'synchronized'
+ {
+ a0=(Token)match(input,96,FOLLOW_96_in_parse_org_emftext_language_java_modifiers_Synchronized21552); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createSynchronized();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_129_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19185);
+ addExpectedElement(19186);
+ addExpectedElement(19187);
+ addExpectedElement(19188);
+ addExpectedElement(19189);
+ addExpectedElement(19190);
+ addExpectedElement(19191);
+ addExpectedElement(19192);
+ addExpectedElement(19193);
+ addExpectedElement(19194);
+ addExpectedElement(19195);
+ addExpectedElement(19196);
+ addExpectedElement(19197);
+ addExpectedElement(19198);
+ addExpectedElement(19199);
+ addExpectedElement(19200);
+ addExpectedElement(19201);
+ addExpectedElement(19202);
+ addExpectedElement(19203);
+ addExpectedElement(19204);
+ addExpectedElement(19205);
+ addExpectedElement(19206);
+ addExpectedElement(19207);
+ addExpectedElement(19208);
+ addExpectedElement(19209);
+ addExpectedElement(19210);
+ addExpectedElement(19211);
+ addExpectedElement(19212);
+ addExpectedElement(19213);
+ addExpectedElement(19214);
+ addExpectedElement(19215);
+ addExpectedElement(19216);
+ addExpectedElement(19217);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 131, parse_org_emftext_language_java_modifiers_Synchronized_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Synchronized"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Transient"
+ // Java.g:34365:1: parse_org_emftext_language_java_modifiers_Transient returns [org.emftext.language.java.modifiers.Transient element = null] : a0= 'transient' ;
+ public final org.emftext.language.java.modifiers.Transient parse_org_emftext_language_java_modifiers_Transient() throws RecognitionException {
+ org.emftext.language.java.modifiers.Transient element = null;
+
+ int parse_org_emftext_language_java_modifiers_Transient_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 132) ) { return element; }
+
+ // Java.g:34368:2: (a0= 'transient' )
+ // Java.g:34369:2: a0= 'transient'
+ {
+ a0=(Token)match(input,100,FOLLOW_100_in_parse_org_emftext_language_java_modifiers_Transient21581); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createTransient();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_130_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19218);
+ addExpectedElement(19219);
+ addExpectedElement(19220);
+ addExpectedElement(19221);
+ addExpectedElement(19222);
+ addExpectedElement(19223);
+ addExpectedElement(19224);
+ addExpectedElement(19225);
+ addExpectedElement(19226);
+ addExpectedElement(19227);
+ addExpectedElement(19228);
+ addExpectedElement(19229);
+ addExpectedElement(19230);
+ addExpectedElement(19231);
+ addExpectedElement(19232);
+ addExpectedElement(19233);
+ addExpectedElement(19234);
+ addExpectedElement(19235);
+ addExpectedElement(19236);
+ addExpectedElement(19237);
+ addExpectedElement(19238);
+ addExpectedElement(19239);
+ addExpectedElement(19240);
+ addExpectedElement(19241);
+ addExpectedElement(19242);
+ addExpectedElement(19243);
+ addExpectedElement(19244);
+ addExpectedElement(19245);
+ addExpectedElement(19246);
+ addExpectedElement(19247);
+ addExpectedElement(19248);
+ addExpectedElement(19249);
+ addExpectedElement(19250);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 132, parse_org_emftext_language_java_modifiers_Transient_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Transient"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Volatile"
+ // Java.g:34417:1: parse_org_emftext_language_java_modifiers_Volatile returns [org.emftext.language.java.modifiers.Volatile element = null] : a0= 'volatile' ;
+ public final org.emftext.language.java.modifiers.Volatile parse_org_emftext_language_java_modifiers_Volatile() throws RecognitionException {
+ org.emftext.language.java.modifiers.Volatile element = null;
+
+ int parse_org_emftext_language_java_modifiers_Volatile_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 133) ) { return element; }
+
+ // Java.g:34420:2: (a0= 'volatile' )
+ // Java.g:34421:2: a0= 'volatile'
+ {
+ a0=(Token)match(input,103,FOLLOW_103_in_parse_org_emftext_language_java_modifiers_Volatile21610); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createVolatile();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_131_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19251);
+ addExpectedElement(19252);
+ addExpectedElement(19253);
+ addExpectedElement(19254);
+ addExpectedElement(19255);
+ addExpectedElement(19256);
+ addExpectedElement(19257);
+ addExpectedElement(19258);
+ addExpectedElement(19259);
+ addExpectedElement(19260);
+ addExpectedElement(19261);
+ addExpectedElement(19262);
+ addExpectedElement(19263);
+ addExpectedElement(19264);
+ addExpectedElement(19265);
+ addExpectedElement(19266);
+ addExpectedElement(19267);
+ addExpectedElement(19268);
+ addExpectedElement(19269);
+ addExpectedElement(19270);
+ addExpectedElement(19271);
+ addExpectedElement(19272);
+ addExpectedElement(19273);
+ addExpectedElement(19274);
+ addExpectedElement(19275);
+ addExpectedElement(19276);
+ addExpectedElement(19277);
+ addExpectedElement(19278);
+ addExpectedElement(19279);
+ addExpectedElement(19280);
+ addExpectedElement(19281);
+ addExpectedElement(19282);
+ addExpectedElement(19283);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 133, parse_org_emftext_language_java_modifiers_Volatile_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Volatile"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Strictfp"
+ // Java.g:34469:1: parse_org_emftext_language_java_modifiers_Strictfp returns [org.emftext.language.java.modifiers.Strictfp element = null] : a0= 'strictfp' ;
+ public final org.emftext.language.java.modifiers.Strictfp parse_org_emftext_language_java_modifiers_Strictfp() throws RecognitionException {
+ org.emftext.language.java.modifiers.Strictfp element = null;
+
+ int parse_org_emftext_language_java_modifiers_Strictfp_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 134) ) { return element; }
+
+ // Java.g:34472:2: (a0= 'strictfp' )
+ // Java.g:34473:2: a0= 'strictfp'
+ {
+ a0=(Token)match(input,93,FOLLOW_93_in_parse_org_emftext_language_java_modifiers_Strictfp21639); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.modifiers.ModifiersFactory.eINSTANCE.createStrictfp();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_132_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19284);
+ addExpectedElement(19285);
+ addExpectedElement(19286);
+ addExpectedElement(19287);
+ addExpectedElement(19288);
+ addExpectedElement(19289);
+ addExpectedElement(19290);
+ addExpectedElement(19291);
+ addExpectedElement(19292);
+ addExpectedElement(19293);
+ addExpectedElement(19294);
+ addExpectedElement(19295);
+ addExpectedElement(19296);
+ addExpectedElement(19297);
+ addExpectedElement(19298);
+ addExpectedElement(19299);
+ addExpectedElement(19300);
+ addExpectedElement(19301);
+ addExpectedElement(19302);
+ addExpectedElement(19303);
+ addExpectedElement(19304);
+ addExpectedElement(19305);
+ addExpectedElement(19306);
+ addExpectedElement(19307);
+ addExpectedElement(19308);
+ addExpectedElement(19309);
+ addExpectedElement(19310);
+ addExpectedElement(19311);
+ addExpectedElement(19312);
+ addExpectedElement(19313);
+ addExpectedElement(19314);
+ addExpectedElement(19315);
+ addExpectedElement(19316);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 134, parse_org_emftext_language_java_modifiers_Strictfp_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Strictfp"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Void"
+ // Java.g:34521:1: parse_org_emftext_language_java_types_Void returns [org.emftext.language.java.types.Void element = null] : a0= 'void' ;
+ public final org.emftext.language.java.types.Void parse_org_emftext_language_java_types_Void() throws RecognitionException {
+ org.emftext.language.java.types.Void element = null;
+
+ int parse_org_emftext_language_java_types_Void_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 135) ) { return element; }
+
+ // Java.g:34524:2: (a0= 'void' )
+ // Java.g:34525:2: a0= 'void'
+ {
+ a0=(Token)match(input,102,FOLLOW_102_in_parse_org_emftext_language_java_types_Void21668); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createVoid();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_133_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19317);
+ addExpectedElement(19318);
+ addExpectedElement(19319);
+ addExpectedElement(19320);
+ addExpectedElement(19321);
+ addExpectedElement(19322);
+ addExpectedElement(19323);
+ addExpectedElement(19324);
+ addExpectedElement(19325);
+ addExpectedElement(19326);
+ addExpectedElement(19327);
+ addExpectedElement(19328);
+ addExpectedElement(19329);
+ addExpectedElement(19330);
+ addExpectedElement(19331);
+ addExpectedElement(19332);
+ addExpectedElement(19333);
+ addExpectedElement(19334);
+ addExpectedElement(19335);
+ addExpectedElement(19336);
+ addExpectedElement(19337);
+ addExpectedElement(19338);
+ addExpectedElement(19339);
+ addExpectedElement(19340);
+ addExpectedElement(19341);
+ addExpectedElement(19342);
+ addExpectedElement(19343);
+ addExpectedElement(19344);
+ addExpectedElement(19345);
+ addExpectedElement(19346);
+ addExpectedElement(19347);
+ addExpectedElement(19348);
+ addExpectedElement(19349);
+ addExpectedElement(19350);
+ addExpectedElement(19351);
+ addExpectedElement(19352);
+ addExpectedElement(19353);
+ addExpectedElement(19354);
+ addExpectedElement(19355);
+ addExpectedElement(19356);
+ addExpectedElement(19357);
+ addExpectedElement(19358);
+ addExpectedElement(19359);
+ addExpectedElement(19360);
+ addExpectedElement(19361);
+ addExpectedElement(19362);
+ addExpectedElement(19363);
+ addExpectedElement(19364);
+ addExpectedElement(19365);
+ addExpectedElement(19366);
+ addExpectedElement(19367);
+ addExpectedElement(19368);
+ addExpectedElement(19369);
+ addExpectedElement(19370);
+ addExpectedElement(19371);
+ addExpectedElement(19372);
+ addExpectedElement(19373);
+ addExpectedElement(19374);
+ addExpectedElement(19375);
+ addExpectedElement(19376);
+ addExpectedElement(19377);
+ addExpectedElement(19378);
+ addExpectedElement(19379);
+ addExpectedElement(19380);
+ addExpectedElement(19381);
+ addExpectedElement(19382);
+ addExpectedElement(19383);
+ addExpectedElement(19384);
+ addExpectedElement(19385);
+ addExpectedElement(19386);
+ addExpectedElement(19387);
+ addExpectedElement(19388);
+ addExpectedElement(19389);
+ addExpectedElement(19390);
+ addExpectedElement(19391);
+ addExpectedElement(19392);
+ addExpectedElement(19393);
+ addExpectedElement(19394);
+ addExpectedElement(19395);
+ addExpectedElement(19396);
+ addExpectedElement(19397);
+ addExpectedElement(19398);
+ addExpectedElement(19399);
+ addExpectedElement(19400);
+ addExpectedElement(19401);
+ addExpectedElement(19402);
+ addExpectedElement(19403);
+ addExpectedElement(19404);
+ addExpectedElement(19405);
+ addExpectedElement(19406);
+ addExpectedElement(19407);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 135, parse_org_emftext_language_java_types_Void_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Void"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Boolean"
+ // Java.g:34631:1: parse_org_emftext_language_java_types_Boolean returns [org.emftext.language.java.types.Boolean element = null] : a0= 'boolean' ;
+ public final org.emftext.language.java.types.Boolean parse_org_emftext_language_java_types_Boolean() throws RecognitionException {
+ org.emftext.language.java.types.Boolean element = null;
+
+ int parse_org_emftext_language_java_types_Boolean_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 136) ) { return element; }
+
+ // Java.g:34634:2: (a0= 'boolean' )
+ // Java.g:34635:2: a0= 'boolean'
+ {
+ a0=(Token)match(input,58,FOLLOW_58_in_parse_org_emftext_language_java_types_Boolean21697); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createBoolean();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_134_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19408);
+ addExpectedElement(19409);
+ addExpectedElement(19410);
+ addExpectedElement(19411);
+ addExpectedElement(19412);
+ addExpectedElement(19413);
+ addExpectedElement(19414);
+ addExpectedElement(19415);
+ addExpectedElement(19416);
+ addExpectedElement(19417);
+ addExpectedElement(19418);
+ addExpectedElement(19419);
+ addExpectedElement(19420);
+ addExpectedElement(19421);
+ addExpectedElement(19422);
+ addExpectedElement(19423);
+ addExpectedElement(19424);
+ addExpectedElement(19425);
+ addExpectedElement(19426);
+ addExpectedElement(19427);
+ addExpectedElement(19428);
+ addExpectedElement(19429);
+ addExpectedElement(19430);
+ addExpectedElement(19431);
+ addExpectedElement(19432);
+ addExpectedElement(19433);
+ addExpectedElement(19434);
+ addExpectedElement(19435);
+ addExpectedElement(19436);
+ addExpectedElement(19437);
+ addExpectedElement(19438);
+ addExpectedElement(19439);
+ addExpectedElement(19440);
+ addExpectedElement(19441);
+ addExpectedElement(19442);
+ addExpectedElement(19443);
+ addExpectedElement(19444);
+ addExpectedElement(19445);
+ addExpectedElement(19446);
+ addExpectedElement(19447);
+ addExpectedElement(19448);
+ addExpectedElement(19449);
+ addExpectedElement(19450);
+ addExpectedElement(19451);
+ addExpectedElement(19452);
+ addExpectedElement(19453);
+ addExpectedElement(19454);
+ addExpectedElement(19455);
+ addExpectedElement(19456);
+ addExpectedElement(19457);
+ addExpectedElement(19458);
+ addExpectedElement(19459);
+ addExpectedElement(19460);
+ addExpectedElement(19461);
+ addExpectedElement(19462);
+ addExpectedElement(19463);
+ addExpectedElement(19464);
+ addExpectedElement(19465);
+ addExpectedElement(19466);
+ addExpectedElement(19467);
+ addExpectedElement(19468);
+ addExpectedElement(19469);
+ addExpectedElement(19470);
+ addExpectedElement(19471);
+ addExpectedElement(19472);
+ addExpectedElement(19473);
+ addExpectedElement(19474);
+ addExpectedElement(19475);
+ addExpectedElement(19476);
+ addExpectedElement(19477);
+ addExpectedElement(19478);
+ addExpectedElement(19479);
+ addExpectedElement(19480);
+ addExpectedElement(19481);
+ addExpectedElement(19482);
+ addExpectedElement(19483);
+ addExpectedElement(19484);
+ addExpectedElement(19485);
+ addExpectedElement(19486);
+ addExpectedElement(19487);
+ addExpectedElement(19488);
+ addExpectedElement(19489);
+ addExpectedElement(19490);
+ addExpectedElement(19491);
+ addExpectedElement(19492);
+ addExpectedElement(19493);
+ addExpectedElement(19494);
+ addExpectedElement(19495);
+ addExpectedElement(19496);
+ addExpectedElement(19497);
+ addExpectedElement(19498);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 136, parse_org_emftext_language_java_types_Boolean_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Boolean"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Char"
+ // Java.g:34741:1: parse_org_emftext_language_java_types_Char returns [org.emftext.language.java.types.Char element = null] : a0= 'char' ;
+ public final org.emftext.language.java.types.Char parse_org_emftext_language_java_types_Char() throws RecognitionException {
+ org.emftext.language.java.types.Char element = null;
+
+ int parse_org_emftext_language_java_types_Char_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 137) ) { return element; }
+
+ // Java.g:34744:2: (a0= 'char' )
+ // Java.g:34745:2: a0= 'char'
+ {
+ a0=(Token)match(input,63,FOLLOW_63_in_parse_org_emftext_language_java_types_Char21726); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createChar();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_135_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19499);
+ addExpectedElement(19500);
+ addExpectedElement(19501);
+ addExpectedElement(19502);
+ addExpectedElement(19503);
+ addExpectedElement(19504);
+ addExpectedElement(19505);
+ addExpectedElement(19506);
+ addExpectedElement(19507);
+ addExpectedElement(19508);
+ addExpectedElement(19509);
+ addExpectedElement(19510);
+ addExpectedElement(19511);
+ addExpectedElement(19512);
+ addExpectedElement(19513);
+ addExpectedElement(19514);
+ addExpectedElement(19515);
+ addExpectedElement(19516);
+ addExpectedElement(19517);
+ addExpectedElement(19518);
+ addExpectedElement(19519);
+ addExpectedElement(19520);
+ addExpectedElement(19521);
+ addExpectedElement(19522);
+ addExpectedElement(19523);
+ addExpectedElement(19524);
+ addExpectedElement(19525);
+ addExpectedElement(19526);
+ addExpectedElement(19527);
+ addExpectedElement(19528);
+ addExpectedElement(19529);
+ addExpectedElement(19530);
+ addExpectedElement(19531);
+ addExpectedElement(19532);
+ addExpectedElement(19533);
+ addExpectedElement(19534);
+ addExpectedElement(19535);
+ addExpectedElement(19536);
+ addExpectedElement(19537);
+ addExpectedElement(19538);
+ addExpectedElement(19539);
+ addExpectedElement(19540);
+ addExpectedElement(19541);
+ addExpectedElement(19542);
+ addExpectedElement(19543);
+ addExpectedElement(19544);
+ addExpectedElement(19545);
+ addExpectedElement(19546);
+ addExpectedElement(19547);
+ addExpectedElement(19548);
+ addExpectedElement(19549);
+ addExpectedElement(19550);
+ addExpectedElement(19551);
+ addExpectedElement(19552);
+ addExpectedElement(19553);
+ addExpectedElement(19554);
+ addExpectedElement(19555);
+ addExpectedElement(19556);
+ addExpectedElement(19557);
+ addExpectedElement(19558);
+ addExpectedElement(19559);
+ addExpectedElement(19560);
+ addExpectedElement(19561);
+ addExpectedElement(19562);
+ addExpectedElement(19563);
+ addExpectedElement(19564);
+ addExpectedElement(19565);
+ addExpectedElement(19566);
+ addExpectedElement(19567);
+ addExpectedElement(19568);
+ addExpectedElement(19569);
+ addExpectedElement(19570);
+ addExpectedElement(19571);
+ addExpectedElement(19572);
+ addExpectedElement(19573);
+ addExpectedElement(19574);
+ addExpectedElement(19575);
+ addExpectedElement(19576);
+ addExpectedElement(19577);
+ addExpectedElement(19578);
+ addExpectedElement(19579);
+ addExpectedElement(19580);
+ addExpectedElement(19581);
+ addExpectedElement(19582);
+ addExpectedElement(19583);
+ addExpectedElement(19584);
+ addExpectedElement(19585);
+ addExpectedElement(19586);
+ addExpectedElement(19587);
+ addExpectedElement(19588);
+ addExpectedElement(19589);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 137, parse_org_emftext_language_java_types_Char_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Char"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Byte"
+ // Java.g:34851:1: parse_org_emftext_language_java_types_Byte returns [org.emftext.language.java.types.Byte element = null] : a0= 'byte' ;
+ public final org.emftext.language.java.types.Byte parse_org_emftext_language_java_types_Byte() throws RecognitionException {
+ org.emftext.language.java.types.Byte element = null;
+
+ int parse_org_emftext_language_java_types_Byte_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 138) ) { return element; }
+
+ // Java.g:34854:2: (a0= 'byte' )
+ // Java.g:34855:2: a0= 'byte'
+ {
+ a0=(Token)match(input,60,FOLLOW_60_in_parse_org_emftext_language_java_types_Byte21755); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createByte();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_136_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19590);
+ addExpectedElement(19591);
+ addExpectedElement(19592);
+ addExpectedElement(19593);
+ addExpectedElement(19594);
+ addExpectedElement(19595);
+ addExpectedElement(19596);
+ addExpectedElement(19597);
+ addExpectedElement(19598);
+ addExpectedElement(19599);
+ addExpectedElement(19600);
+ addExpectedElement(19601);
+ addExpectedElement(19602);
+ addExpectedElement(19603);
+ addExpectedElement(19604);
+ addExpectedElement(19605);
+ addExpectedElement(19606);
+ addExpectedElement(19607);
+ addExpectedElement(19608);
+ addExpectedElement(19609);
+ addExpectedElement(19610);
+ addExpectedElement(19611);
+ addExpectedElement(19612);
+ addExpectedElement(19613);
+ addExpectedElement(19614);
+ addExpectedElement(19615);
+ addExpectedElement(19616);
+ addExpectedElement(19617);
+ addExpectedElement(19618);
+ addExpectedElement(19619);
+ addExpectedElement(19620);
+ addExpectedElement(19621);
+ addExpectedElement(19622);
+ addExpectedElement(19623);
+ addExpectedElement(19624);
+ addExpectedElement(19625);
+ addExpectedElement(19626);
+ addExpectedElement(19627);
+ addExpectedElement(19628);
+ addExpectedElement(19629);
+ addExpectedElement(19630);
+ addExpectedElement(19631);
+ addExpectedElement(19632);
+ addExpectedElement(19633);
+ addExpectedElement(19634);
+ addExpectedElement(19635);
+ addExpectedElement(19636);
+ addExpectedElement(19637);
+ addExpectedElement(19638);
+ addExpectedElement(19639);
+ addExpectedElement(19640);
+ addExpectedElement(19641);
+ addExpectedElement(19642);
+ addExpectedElement(19643);
+ addExpectedElement(19644);
+ addExpectedElement(19645);
+ addExpectedElement(19646);
+ addExpectedElement(19647);
+ addExpectedElement(19648);
+ addExpectedElement(19649);
+ addExpectedElement(19650);
+ addExpectedElement(19651);
+ addExpectedElement(19652);
+ addExpectedElement(19653);
+ addExpectedElement(19654);
+ addExpectedElement(19655);
+ addExpectedElement(19656);
+ addExpectedElement(19657);
+ addExpectedElement(19658);
+ addExpectedElement(19659);
+ addExpectedElement(19660);
+ addExpectedElement(19661);
+ addExpectedElement(19662);
+ addExpectedElement(19663);
+ addExpectedElement(19664);
+ addExpectedElement(19665);
+ addExpectedElement(19666);
+ addExpectedElement(19667);
+ addExpectedElement(19668);
+ addExpectedElement(19669);
+ addExpectedElement(19670);
+ addExpectedElement(19671);
+ addExpectedElement(19672);
+ addExpectedElement(19673);
+ addExpectedElement(19674);
+ addExpectedElement(19675);
+ addExpectedElement(19676);
+ addExpectedElement(19677);
+ addExpectedElement(19678);
+ addExpectedElement(19679);
+ addExpectedElement(19680);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 138, parse_org_emftext_language_java_types_Byte_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Byte"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Short"
+ // Java.g:34961:1: parse_org_emftext_language_java_types_Short returns [org.emftext.language.java.types.Short element = null] : a0= 'short' ;
+ public final org.emftext.language.java.types.Short parse_org_emftext_language_java_types_Short() throws RecognitionException {
+ org.emftext.language.java.types.Short element = null;
+
+ int parse_org_emftext_language_java_types_Short_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 139) ) { return element; }
+
+ // Java.g:34964:2: (a0= 'short' )
+ // Java.g:34965:2: a0= 'short'
+ {
+ a0=(Token)match(input,91,FOLLOW_91_in_parse_org_emftext_language_java_types_Short21784); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createShort();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_137_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19681);
+ addExpectedElement(19682);
+ addExpectedElement(19683);
+ addExpectedElement(19684);
+ addExpectedElement(19685);
+ addExpectedElement(19686);
+ addExpectedElement(19687);
+ addExpectedElement(19688);
+ addExpectedElement(19689);
+ addExpectedElement(19690);
+ addExpectedElement(19691);
+ addExpectedElement(19692);
+ addExpectedElement(19693);
+ addExpectedElement(19694);
+ addExpectedElement(19695);
+ addExpectedElement(19696);
+ addExpectedElement(19697);
+ addExpectedElement(19698);
+ addExpectedElement(19699);
+ addExpectedElement(19700);
+ addExpectedElement(19701);
+ addExpectedElement(19702);
+ addExpectedElement(19703);
+ addExpectedElement(19704);
+ addExpectedElement(19705);
+ addExpectedElement(19706);
+ addExpectedElement(19707);
+ addExpectedElement(19708);
+ addExpectedElement(19709);
+ addExpectedElement(19710);
+ addExpectedElement(19711);
+ addExpectedElement(19712);
+ addExpectedElement(19713);
+ addExpectedElement(19714);
+ addExpectedElement(19715);
+ addExpectedElement(19716);
+ addExpectedElement(19717);
+ addExpectedElement(19718);
+ addExpectedElement(19719);
+ addExpectedElement(19720);
+ addExpectedElement(19721);
+ addExpectedElement(19722);
+ addExpectedElement(19723);
+ addExpectedElement(19724);
+ addExpectedElement(19725);
+ addExpectedElement(19726);
+ addExpectedElement(19727);
+ addExpectedElement(19728);
+ addExpectedElement(19729);
+ addExpectedElement(19730);
+ addExpectedElement(19731);
+ addExpectedElement(19732);
+ addExpectedElement(19733);
+ addExpectedElement(19734);
+ addExpectedElement(19735);
+ addExpectedElement(19736);
+ addExpectedElement(19737);
+ addExpectedElement(19738);
+ addExpectedElement(19739);
+ addExpectedElement(19740);
+ addExpectedElement(19741);
+ addExpectedElement(19742);
+ addExpectedElement(19743);
+ addExpectedElement(19744);
+ addExpectedElement(19745);
+ addExpectedElement(19746);
+ addExpectedElement(19747);
+ addExpectedElement(19748);
+ addExpectedElement(19749);
+ addExpectedElement(19750);
+ addExpectedElement(19751);
+ addExpectedElement(19752);
+ addExpectedElement(19753);
+ addExpectedElement(19754);
+ addExpectedElement(19755);
+ addExpectedElement(19756);
+ addExpectedElement(19757);
+ addExpectedElement(19758);
+ addExpectedElement(19759);
+ addExpectedElement(19760);
+ addExpectedElement(19761);
+ addExpectedElement(19762);
+ addExpectedElement(19763);
+ addExpectedElement(19764);
+ addExpectedElement(19765);
+ addExpectedElement(19766);
+ addExpectedElement(19767);
+ addExpectedElement(19768);
+ addExpectedElement(19769);
+ addExpectedElement(19770);
+ addExpectedElement(19771);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 139, parse_org_emftext_language_java_types_Short_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Short"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Int"
+ // Java.g:35071:1: parse_org_emftext_language_java_types_Int returns [org.emftext.language.java.types.Int element = null] : a0= 'int' ;
+ public final org.emftext.language.java.types.Int parse_org_emftext_language_java_types_Int() throws RecognitionException {
+ org.emftext.language.java.types.Int element = null;
+
+ int parse_org_emftext_language_java_types_Int_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 140) ) { return element; }
+
+ // Java.g:35074:2: (a0= 'int' )
+ // Java.g:35075:2: a0= 'int'
+ {
+ a0=(Token)match(input,80,FOLLOW_80_in_parse_org_emftext_language_java_types_Int21813); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createInt();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_138_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19772);
+ addExpectedElement(19773);
+ addExpectedElement(19774);
+ addExpectedElement(19775);
+ addExpectedElement(19776);
+ addExpectedElement(19777);
+ addExpectedElement(19778);
+ addExpectedElement(19779);
+ addExpectedElement(19780);
+ addExpectedElement(19781);
+ addExpectedElement(19782);
+ addExpectedElement(19783);
+ addExpectedElement(19784);
+ addExpectedElement(19785);
+ addExpectedElement(19786);
+ addExpectedElement(19787);
+ addExpectedElement(19788);
+ addExpectedElement(19789);
+ addExpectedElement(19790);
+ addExpectedElement(19791);
+ addExpectedElement(19792);
+ addExpectedElement(19793);
+ addExpectedElement(19794);
+ addExpectedElement(19795);
+ addExpectedElement(19796);
+ addExpectedElement(19797);
+ addExpectedElement(19798);
+ addExpectedElement(19799);
+ addExpectedElement(19800);
+ addExpectedElement(19801);
+ addExpectedElement(19802);
+ addExpectedElement(19803);
+ addExpectedElement(19804);
+ addExpectedElement(19805);
+ addExpectedElement(19806);
+ addExpectedElement(19807);
+ addExpectedElement(19808);
+ addExpectedElement(19809);
+ addExpectedElement(19810);
+ addExpectedElement(19811);
+ addExpectedElement(19812);
+ addExpectedElement(19813);
+ addExpectedElement(19814);
+ addExpectedElement(19815);
+ addExpectedElement(19816);
+ addExpectedElement(19817);
+ addExpectedElement(19818);
+ addExpectedElement(19819);
+ addExpectedElement(19820);
+ addExpectedElement(19821);
+ addExpectedElement(19822);
+ addExpectedElement(19823);
+ addExpectedElement(19824);
+ addExpectedElement(19825);
+ addExpectedElement(19826);
+ addExpectedElement(19827);
+ addExpectedElement(19828);
+ addExpectedElement(19829);
+ addExpectedElement(19830);
+ addExpectedElement(19831);
+ addExpectedElement(19832);
+ addExpectedElement(19833);
+ addExpectedElement(19834);
+ addExpectedElement(19835);
+ addExpectedElement(19836);
+ addExpectedElement(19837);
+ addExpectedElement(19838);
+ addExpectedElement(19839);
+ addExpectedElement(19840);
+ addExpectedElement(19841);
+ addExpectedElement(19842);
+ addExpectedElement(19843);
+ addExpectedElement(19844);
+ addExpectedElement(19845);
+ addExpectedElement(19846);
+ addExpectedElement(19847);
+ addExpectedElement(19848);
+ addExpectedElement(19849);
+ addExpectedElement(19850);
+ addExpectedElement(19851);
+ addExpectedElement(19852);
+ addExpectedElement(19853);
+ addExpectedElement(19854);
+ addExpectedElement(19855);
+ addExpectedElement(19856);
+ addExpectedElement(19857);
+ addExpectedElement(19858);
+ addExpectedElement(19859);
+ addExpectedElement(19860);
+ addExpectedElement(19861);
+ addExpectedElement(19862);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 140, parse_org_emftext_language_java_types_Int_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Int"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Long"
+ // Java.g:35181:1: parse_org_emftext_language_java_types_Long returns [org.emftext.language.java.types.Long element = null] : a0= 'long' ;
+ public final org.emftext.language.java.types.Long parse_org_emftext_language_java_types_Long() throws RecognitionException {
+ org.emftext.language.java.types.Long element = null;
+
+ int parse_org_emftext_language_java_types_Long_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 141) ) { return element; }
+
+ // Java.g:35184:2: (a0= 'long' )
+ // Java.g:35185:2: a0= 'long'
+ {
+ a0=(Token)match(input,82,FOLLOW_82_in_parse_org_emftext_language_java_types_Long21842); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createLong();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_139_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19863);
+ addExpectedElement(19864);
+ addExpectedElement(19865);
+ addExpectedElement(19866);
+ addExpectedElement(19867);
+ addExpectedElement(19868);
+ addExpectedElement(19869);
+ addExpectedElement(19870);
+ addExpectedElement(19871);
+ addExpectedElement(19872);
+ addExpectedElement(19873);
+ addExpectedElement(19874);
+ addExpectedElement(19875);
+ addExpectedElement(19876);
+ addExpectedElement(19877);
+ addExpectedElement(19878);
+ addExpectedElement(19879);
+ addExpectedElement(19880);
+ addExpectedElement(19881);
+ addExpectedElement(19882);
+ addExpectedElement(19883);
+ addExpectedElement(19884);
+ addExpectedElement(19885);
+ addExpectedElement(19886);
+ addExpectedElement(19887);
+ addExpectedElement(19888);
+ addExpectedElement(19889);
+ addExpectedElement(19890);
+ addExpectedElement(19891);
+ addExpectedElement(19892);
+ addExpectedElement(19893);
+ addExpectedElement(19894);
+ addExpectedElement(19895);
+ addExpectedElement(19896);
+ addExpectedElement(19897);
+ addExpectedElement(19898);
+ addExpectedElement(19899);
+ addExpectedElement(19900);
+ addExpectedElement(19901);
+ addExpectedElement(19902);
+ addExpectedElement(19903);
+ addExpectedElement(19904);
+ addExpectedElement(19905);
+ addExpectedElement(19906);
+ addExpectedElement(19907);
+ addExpectedElement(19908);
+ addExpectedElement(19909);
+ addExpectedElement(19910);
+ addExpectedElement(19911);
+ addExpectedElement(19912);
+ addExpectedElement(19913);
+ addExpectedElement(19914);
+ addExpectedElement(19915);
+ addExpectedElement(19916);
+ addExpectedElement(19917);
+ addExpectedElement(19918);
+ addExpectedElement(19919);
+ addExpectedElement(19920);
+ addExpectedElement(19921);
+ addExpectedElement(19922);
+ addExpectedElement(19923);
+ addExpectedElement(19924);
+ addExpectedElement(19925);
+ addExpectedElement(19926);
+ addExpectedElement(19927);
+ addExpectedElement(19928);
+ addExpectedElement(19929);
+ addExpectedElement(19930);
+ addExpectedElement(19931);
+ addExpectedElement(19932);
+ addExpectedElement(19933);
+ addExpectedElement(19934);
+ addExpectedElement(19935);
+ addExpectedElement(19936);
+ addExpectedElement(19937);
+ addExpectedElement(19938);
+ addExpectedElement(19939);
+ addExpectedElement(19940);
+ addExpectedElement(19941);
+ addExpectedElement(19942);
+ addExpectedElement(19943);
+ addExpectedElement(19944);
+ addExpectedElement(19945);
+ addExpectedElement(19946);
+ addExpectedElement(19947);
+ addExpectedElement(19948);
+ addExpectedElement(19949);
+ addExpectedElement(19950);
+ addExpectedElement(19951);
+ addExpectedElement(19952);
+ addExpectedElement(19953);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 141, parse_org_emftext_language_java_types_Long_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Long"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Float"
+ // Java.g:35291:1: parse_org_emftext_language_java_types_Float returns [org.emftext.language.java.types.Float element = null] : a0= 'float' ;
+ public final org.emftext.language.java.types.Float parse_org_emftext_language_java_types_Float() throws RecognitionException {
+ org.emftext.language.java.types.Float element = null;
+
+ int parse_org_emftext_language_java_types_Float_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 142) ) { return element; }
+
+ // Java.g:35294:2: (a0= 'float' )
+ // Java.g:35295:2: a0= 'float'
+ {
+ a0=(Token)match(input,74,FOLLOW_74_in_parse_org_emftext_language_java_types_Float21871); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createFloat();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_140_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(19954);
+ addExpectedElement(19955);
+ addExpectedElement(19956);
+ addExpectedElement(19957);
+ addExpectedElement(19958);
+ addExpectedElement(19959);
+ addExpectedElement(19960);
+ addExpectedElement(19961);
+ addExpectedElement(19962);
+ addExpectedElement(19963);
+ addExpectedElement(19964);
+ addExpectedElement(19965);
+ addExpectedElement(19966);
+ addExpectedElement(19967);
+ addExpectedElement(19968);
+ addExpectedElement(19969);
+ addExpectedElement(19970);
+ addExpectedElement(19971);
+ addExpectedElement(19972);
+ addExpectedElement(19973);
+ addExpectedElement(19974);
+ addExpectedElement(19975);
+ addExpectedElement(19976);
+ addExpectedElement(19977);
+ addExpectedElement(19978);
+ addExpectedElement(19979);
+ addExpectedElement(19980);
+ addExpectedElement(19981);
+ addExpectedElement(19982);
+ addExpectedElement(19983);
+ addExpectedElement(19984);
+ addExpectedElement(19985);
+ addExpectedElement(19986);
+ addExpectedElement(19987);
+ addExpectedElement(19988);
+ addExpectedElement(19989);
+ addExpectedElement(19990);
+ addExpectedElement(19991);
+ addExpectedElement(19992);
+ addExpectedElement(19993);
+ addExpectedElement(19994);
+ addExpectedElement(19995);
+ addExpectedElement(19996);
+ addExpectedElement(19997);
+ addExpectedElement(19998);
+ addExpectedElement(19999);
+ addExpectedElement(20000);
+ addExpectedElement(20001);
+ addExpectedElement(20002);
+ addExpectedElement(20003);
+ addExpectedElement(20004);
+ addExpectedElement(20005);
+ addExpectedElement(20006);
+ addExpectedElement(20007);
+ addExpectedElement(20008);
+ addExpectedElement(20009);
+ addExpectedElement(20010);
+ addExpectedElement(20011);
+ addExpectedElement(20012);
+ addExpectedElement(20013);
+ addExpectedElement(20014);
+ addExpectedElement(20015);
+ addExpectedElement(20016);
+ addExpectedElement(20017);
+ addExpectedElement(20018);
+ addExpectedElement(20019);
+ addExpectedElement(20020);
+ addExpectedElement(20021);
+ addExpectedElement(20022);
+ addExpectedElement(20023);
+ addExpectedElement(20024);
+ addExpectedElement(20025);
+ addExpectedElement(20026);
+ addExpectedElement(20027);
+ addExpectedElement(20028);
+ addExpectedElement(20029);
+ addExpectedElement(20030);
+ addExpectedElement(20031);
+ addExpectedElement(20032);
+ addExpectedElement(20033);
+ addExpectedElement(20034);
+ addExpectedElement(20035);
+ addExpectedElement(20036);
+ addExpectedElement(20037);
+ addExpectedElement(20038);
+ addExpectedElement(20039);
+ addExpectedElement(20040);
+ addExpectedElement(20041);
+ addExpectedElement(20042);
+ addExpectedElement(20043);
+ addExpectedElement(20044);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 142, parse_org_emftext_language_java_types_Float_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Float"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_Double"
+ // Java.g:35401:1: parse_org_emftext_language_java_types_Double returns [org.emftext.language.java.types.Double element = null] : a0= 'double' ;
+ public final org.emftext.language.java.types.Double parse_org_emftext_language_java_types_Double() throws RecognitionException {
+ org.emftext.language.java.types.Double element = null;
+
+ int parse_org_emftext_language_java_types_Double_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 143) ) { return element; }
+
+ // Java.g:35404:2: (a0= 'double' )
+ // Java.g:35405:2: a0= 'double'
+ {
+ a0=(Token)match(input,68,FOLLOW_68_in_parse_org_emftext_language_java_types_Double21900); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (element == null) {
+ element = org.emftext.language.java.types.TypesFactory.eINSTANCE.createDouble();
+ startIncompleteElement(element);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_141_0_0_0, null, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken)a0, element);
+ }
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20045);
+ addExpectedElement(20046);
+ addExpectedElement(20047);
+ addExpectedElement(20048);
+ addExpectedElement(20049);
+ addExpectedElement(20050);
+ addExpectedElement(20051);
+ addExpectedElement(20052);
+ addExpectedElement(20053);
+ addExpectedElement(20054);
+ addExpectedElement(20055);
+ addExpectedElement(20056);
+ addExpectedElement(20057);
+ addExpectedElement(20058);
+ addExpectedElement(20059);
+ addExpectedElement(20060);
+ addExpectedElement(20061);
+ addExpectedElement(20062);
+ addExpectedElement(20063);
+ addExpectedElement(20064);
+ addExpectedElement(20065);
+ addExpectedElement(20066);
+ addExpectedElement(20067);
+ addExpectedElement(20068);
+ addExpectedElement(20069);
+ addExpectedElement(20070);
+ addExpectedElement(20071);
+ addExpectedElement(20072);
+ addExpectedElement(20073);
+ addExpectedElement(20074);
+ addExpectedElement(20075);
+ addExpectedElement(20076);
+ addExpectedElement(20077);
+ addExpectedElement(20078);
+ addExpectedElement(20079);
+ addExpectedElement(20080);
+ addExpectedElement(20081);
+ addExpectedElement(20082);
+ addExpectedElement(20083);
+ addExpectedElement(20084);
+ addExpectedElement(20085);
+ addExpectedElement(20086);
+ addExpectedElement(20087);
+ addExpectedElement(20088);
+ addExpectedElement(20089);
+ addExpectedElement(20090);
+ addExpectedElement(20091);
+ addExpectedElement(20092);
+ addExpectedElement(20093);
+ addExpectedElement(20094);
+ addExpectedElement(20095);
+ addExpectedElement(20096);
+ addExpectedElement(20097);
+ addExpectedElement(20098);
+ addExpectedElement(20099);
+ addExpectedElement(20100);
+ addExpectedElement(20101);
+ addExpectedElement(20102);
+ addExpectedElement(20103);
+ addExpectedElement(20104);
+ addExpectedElement(20105);
+ addExpectedElement(20106);
+ addExpectedElement(20107);
+ addExpectedElement(20108);
+ addExpectedElement(20109);
+ addExpectedElement(20110);
+ addExpectedElement(20111);
+ addExpectedElement(20112);
+ addExpectedElement(20113);
+ addExpectedElement(20114);
+ addExpectedElement(20115);
+ addExpectedElement(20116);
+ addExpectedElement(20117);
+ addExpectedElement(20118);
+ addExpectedElement(20119);
+ addExpectedElement(20120);
+ addExpectedElement(20121);
+ addExpectedElement(20122);
+ addExpectedElement(20123);
+ addExpectedElement(20124);
+ addExpectedElement(20125);
+ addExpectedElement(20126);
+ addExpectedElement(20127);
+ addExpectedElement(20128);
+ addExpectedElement(20129);
+ addExpectedElement(20130);
+ addExpectedElement(20131);
+ addExpectedElement(20132);
+ addExpectedElement(20133);
+ addExpectedElement(20134);
+ addExpectedElement(20135);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 143, parse_org_emftext_language_java_types_Double_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_Double"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_DecimalLongLiteral"
+ // Java.g:35511:1: parse_org_emftext_language_java_literals_DecimalLongLiteral returns [org.emftext.language.java.literals.DecimalLongLiteral element = null] : (a0= DECIMAL_LONG_LITERAL ) ;
+ public final org.emftext.language.java.literals.DecimalLongLiteral parse_org_emftext_language_java_literals_DecimalLongLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.DecimalLongLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_DecimalLongLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 144) ) { return element; }
+
+ // Java.g:35514:2: ( (a0= DECIMAL_LONG_LITERAL ) )
+ // Java.g:35515:2: (a0= DECIMAL_LONG_LITERAL )
+ {
+ // Java.g:35515:2: (a0= DECIMAL_LONG_LITERAL )
+ // Java.g:35516:3: a0= DECIMAL_LONG_LITERAL
+ {
+ a0=(Token)match(input,DECIMAL_LONG_LITERAL,FOLLOW_DECIMAL_LONG_LITERAL_in_parse_org_emftext_language_java_literals_DecimalLongLiteral21933); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createDecimalLongLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("DECIMAL_LONG_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_LONG_LITERAL__DECIMAL_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.math.BigInteger resolved = (java.math.BigInteger) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_LONG_LITERAL__DECIMAL_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_142_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20136);
+ addExpectedElement(20137);
+ addExpectedElement(20138);
+ addExpectedElement(20139);
+ addExpectedElement(20140);
+ addExpectedElement(20141);
+ addExpectedElement(20142);
+ addExpectedElement(20143);
+ addExpectedElement(20144);
+ addExpectedElement(20145);
+ addExpectedElement(20146);
+ addExpectedElement(20147);
+ addExpectedElement(20148);
+ addExpectedElement(20149);
+ addExpectedElement(20150);
+ addExpectedElement(20151);
+ addExpectedElement(20152);
+ addExpectedElement(20153);
+ addExpectedElement(20154);
+ addExpectedElement(20155);
+ addExpectedElement(20156);
+ addExpectedElement(20157);
+ addExpectedElement(20158);
+ addExpectedElement(20159);
+ addExpectedElement(20160);
+ addExpectedElement(20161);
+ addExpectedElement(20162);
+ addExpectedElement(20163);
+ addExpectedElement(20164);
+ addExpectedElement(20165);
+ addExpectedElement(20166);
+ addExpectedElement(20167);
+ addExpectedElement(20168);
+ addExpectedElement(20169);
+ addExpectedElement(20170);
+ addExpectedElement(20171);
+ addExpectedElement(20172);
+ addExpectedElement(20173);
+ addExpectedElement(20174);
+ addExpectedElement(20175);
+ addExpectedElement(20176);
+ addExpectedElement(20177);
+ addExpectedElement(20178);
+ addExpectedElement(20179);
+ addExpectedElement(20180);
+ addExpectedElement(20181);
+ addExpectedElement(20182);
+ addExpectedElement(20183);
+ addExpectedElement(20184);
+ addExpectedElement(20185);
+ addExpectedElement(20186);
+ addExpectedElement(20187);
+ addExpectedElement(20188);
+ addExpectedElement(20189);
+ addExpectedElement(20190);
+ addExpectedElement(20191);
+ addExpectedElement(20192);
+ addExpectedElement(20193);
+ addExpectedElement(20194);
+ addExpectedElement(20195);
+ addExpectedElement(20196);
+ addExpectedElement(20197);
+ addExpectedElement(20198);
+ addExpectedElement(20199);
+ addExpectedElement(20200);
+ addExpectedElement(20201);
+ addExpectedElement(20202);
+ addExpectedElement(20203);
+ addExpectedElement(20204);
+ addExpectedElement(20205);
+ addExpectedElement(20206);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 144, parse_org_emftext_language_java_literals_DecimalLongLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_DecimalLongLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_DecimalFloatLiteral"
+ // Java.g:35623:1: parse_org_emftext_language_java_literals_DecimalFloatLiteral returns [org.emftext.language.java.literals.DecimalFloatLiteral element = null] : (a0= DECIMAL_FLOAT_LITERAL ) ;
+ public final org.emftext.language.java.literals.DecimalFloatLiteral parse_org_emftext_language_java_literals_DecimalFloatLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.DecimalFloatLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_DecimalFloatLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 145) ) { return element; }
+
+ // Java.g:35626:2: ( (a0= DECIMAL_FLOAT_LITERAL ) )
+ // Java.g:35627:2: (a0= DECIMAL_FLOAT_LITERAL )
+ {
+ // Java.g:35627:2: (a0= DECIMAL_FLOAT_LITERAL )
+ // Java.g:35628:3: a0= DECIMAL_FLOAT_LITERAL
+ {
+ a0=(Token)match(input,DECIMAL_FLOAT_LITERAL,FOLLOW_DECIMAL_FLOAT_LITERAL_in_parse_org_emftext_language_java_literals_DecimalFloatLiteral21973); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createDecimalFloatLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("DECIMAL_FLOAT_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_FLOAT_LITERAL__DECIMAL_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.Float resolved = (java.lang.Float) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_FLOAT_LITERAL__DECIMAL_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_143_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20207);
+ addExpectedElement(20208);
+ addExpectedElement(20209);
+ addExpectedElement(20210);
+ addExpectedElement(20211);
+ addExpectedElement(20212);
+ addExpectedElement(20213);
+ addExpectedElement(20214);
+ addExpectedElement(20215);
+ addExpectedElement(20216);
+ addExpectedElement(20217);
+ addExpectedElement(20218);
+ addExpectedElement(20219);
+ addExpectedElement(20220);
+ addExpectedElement(20221);
+ addExpectedElement(20222);
+ addExpectedElement(20223);
+ addExpectedElement(20224);
+ addExpectedElement(20225);
+ addExpectedElement(20226);
+ addExpectedElement(20227);
+ addExpectedElement(20228);
+ addExpectedElement(20229);
+ addExpectedElement(20230);
+ addExpectedElement(20231);
+ addExpectedElement(20232);
+ addExpectedElement(20233);
+ addExpectedElement(20234);
+ addExpectedElement(20235);
+ addExpectedElement(20236);
+ addExpectedElement(20237);
+ addExpectedElement(20238);
+ addExpectedElement(20239);
+ addExpectedElement(20240);
+ addExpectedElement(20241);
+ addExpectedElement(20242);
+ addExpectedElement(20243);
+ addExpectedElement(20244);
+ addExpectedElement(20245);
+ addExpectedElement(20246);
+ addExpectedElement(20247);
+ addExpectedElement(20248);
+ addExpectedElement(20249);
+ addExpectedElement(20250);
+ addExpectedElement(20251);
+ addExpectedElement(20252);
+ addExpectedElement(20253);
+ addExpectedElement(20254);
+ addExpectedElement(20255);
+ addExpectedElement(20256);
+ addExpectedElement(20257);
+ addExpectedElement(20258);
+ addExpectedElement(20259);
+ addExpectedElement(20260);
+ addExpectedElement(20261);
+ addExpectedElement(20262);
+ addExpectedElement(20263);
+ addExpectedElement(20264);
+ addExpectedElement(20265);
+ addExpectedElement(20266);
+ addExpectedElement(20267);
+ addExpectedElement(20268);
+ addExpectedElement(20269);
+ addExpectedElement(20270);
+ addExpectedElement(20271);
+ addExpectedElement(20272);
+ addExpectedElement(20273);
+ addExpectedElement(20274);
+ addExpectedElement(20275);
+ addExpectedElement(20276);
+ addExpectedElement(20277);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 145, parse_org_emftext_language_java_literals_DecimalFloatLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_DecimalFloatLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_DecimalIntegerLiteral"
+ // Java.g:35735:1: parse_org_emftext_language_java_literals_DecimalIntegerLiteral returns [org.emftext.language.java.literals.DecimalIntegerLiteral element = null] : (a0= DECIMAL_INTEGER_LITERAL ) ;
+ public final org.emftext.language.java.literals.DecimalIntegerLiteral parse_org_emftext_language_java_literals_DecimalIntegerLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.DecimalIntegerLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_DecimalIntegerLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 146) ) { return element; }
+
+ // Java.g:35738:2: ( (a0= DECIMAL_INTEGER_LITERAL ) )
+ // Java.g:35739:2: (a0= DECIMAL_INTEGER_LITERAL )
+ {
+ // Java.g:35739:2: (a0= DECIMAL_INTEGER_LITERAL )
+ // Java.g:35740:3: a0= DECIMAL_INTEGER_LITERAL
+ {
+ a0=(Token)match(input,DECIMAL_INTEGER_LITERAL,FOLLOW_DECIMAL_INTEGER_LITERAL_in_parse_org_emftext_language_java_literals_DecimalIntegerLiteral22013); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createDecimalIntegerLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("DECIMAL_INTEGER_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_INTEGER_LITERAL__DECIMAL_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.math.BigInteger resolved = (java.math.BigInteger) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_INTEGER_LITERAL__DECIMAL_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_144_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20278);
+ addExpectedElement(20279);
+ addExpectedElement(20280);
+ addExpectedElement(20281);
+ addExpectedElement(20282);
+ addExpectedElement(20283);
+ addExpectedElement(20284);
+ addExpectedElement(20285);
+ addExpectedElement(20286);
+ addExpectedElement(20287);
+ addExpectedElement(20288);
+ addExpectedElement(20289);
+ addExpectedElement(20290);
+ addExpectedElement(20291);
+ addExpectedElement(20292);
+ addExpectedElement(20293);
+ addExpectedElement(20294);
+ addExpectedElement(20295);
+ addExpectedElement(20296);
+ addExpectedElement(20297);
+ addExpectedElement(20298);
+ addExpectedElement(20299);
+ addExpectedElement(20300);
+ addExpectedElement(20301);
+ addExpectedElement(20302);
+ addExpectedElement(20303);
+ addExpectedElement(20304);
+ addExpectedElement(20305);
+ addExpectedElement(20306);
+ addExpectedElement(20307);
+ addExpectedElement(20308);
+ addExpectedElement(20309);
+ addExpectedElement(20310);
+ addExpectedElement(20311);
+ addExpectedElement(20312);
+ addExpectedElement(20313);
+ addExpectedElement(20314);
+ addExpectedElement(20315);
+ addExpectedElement(20316);
+ addExpectedElement(20317);
+ addExpectedElement(20318);
+ addExpectedElement(20319);
+ addExpectedElement(20320);
+ addExpectedElement(20321);
+ addExpectedElement(20322);
+ addExpectedElement(20323);
+ addExpectedElement(20324);
+ addExpectedElement(20325);
+ addExpectedElement(20326);
+ addExpectedElement(20327);
+ addExpectedElement(20328);
+ addExpectedElement(20329);
+ addExpectedElement(20330);
+ addExpectedElement(20331);
+ addExpectedElement(20332);
+ addExpectedElement(20333);
+ addExpectedElement(20334);
+ addExpectedElement(20335);
+ addExpectedElement(20336);
+ addExpectedElement(20337);
+ addExpectedElement(20338);
+ addExpectedElement(20339);
+ addExpectedElement(20340);
+ addExpectedElement(20341);
+ addExpectedElement(20342);
+ addExpectedElement(20343);
+ addExpectedElement(20344);
+ addExpectedElement(20345);
+ addExpectedElement(20346);
+ addExpectedElement(20347);
+ addExpectedElement(20348);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 146, parse_org_emftext_language_java_literals_DecimalIntegerLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_DecimalIntegerLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_DecimalDoubleLiteral"
+ // Java.g:35847:1: parse_org_emftext_language_java_literals_DecimalDoubleLiteral returns [org.emftext.language.java.literals.DecimalDoubleLiteral element = null] : (a0= DECIMAL_DOUBLE_LITERAL ) ;
+ public final org.emftext.language.java.literals.DecimalDoubleLiteral parse_org_emftext_language_java_literals_DecimalDoubleLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.DecimalDoubleLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_DecimalDoubleLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 147) ) { return element; }
+
+ // Java.g:35850:2: ( (a0= DECIMAL_DOUBLE_LITERAL ) )
+ // Java.g:35851:2: (a0= DECIMAL_DOUBLE_LITERAL )
+ {
+ // Java.g:35851:2: (a0= DECIMAL_DOUBLE_LITERAL )
+ // Java.g:35852:3: a0= DECIMAL_DOUBLE_LITERAL
+ {
+ a0=(Token)match(input,DECIMAL_DOUBLE_LITERAL,FOLLOW_DECIMAL_DOUBLE_LITERAL_in_parse_org_emftext_language_java_literals_DecimalDoubleLiteral22053); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createDecimalDoubleLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("DECIMAL_DOUBLE_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_DOUBLE_LITERAL__DECIMAL_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.Double resolved = (java.lang.Double) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.DECIMAL_DOUBLE_LITERAL__DECIMAL_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_145_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20349);
+ addExpectedElement(20350);
+ addExpectedElement(20351);
+ addExpectedElement(20352);
+ addExpectedElement(20353);
+ addExpectedElement(20354);
+ addExpectedElement(20355);
+ addExpectedElement(20356);
+ addExpectedElement(20357);
+ addExpectedElement(20358);
+ addExpectedElement(20359);
+ addExpectedElement(20360);
+ addExpectedElement(20361);
+ addExpectedElement(20362);
+ addExpectedElement(20363);
+ addExpectedElement(20364);
+ addExpectedElement(20365);
+ addExpectedElement(20366);
+ addExpectedElement(20367);
+ addExpectedElement(20368);
+ addExpectedElement(20369);
+ addExpectedElement(20370);
+ addExpectedElement(20371);
+ addExpectedElement(20372);
+ addExpectedElement(20373);
+ addExpectedElement(20374);
+ addExpectedElement(20375);
+ addExpectedElement(20376);
+ addExpectedElement(20377);
+ addExpectedElement(20378);
+ addExpectedElement(20379);
+ addExpectedElement(20380);
+ addExpectedElement(20381);
+ addExpectedElement(20382);
+ addExpectedElement(20383);
+ addExpectedElement(20384);
+ addExpectedElement(20385);
+ addExpectedElement(20386);
+ addExpectedElement(20387);
+ addExpectedElement(20388);
+ addExpectedElement(20389);
+ addExpectedElement(20390);
+ addExpectedElement(20391);
+ addExpectedElement(20392);
+ addExpectedElement(20393);
+ addExpectedElement(20394);
+ addExpectedElement(20395);
+ addExpectedElement(20396);
+ addExpectedElement(20397);
+ addExpectedElement(20398);
+ addExpectedElement(20399);
+ addExpectedElement(20400);
+ addExpectedElement(20401);
+ addExpectedElement(20402);
+ addExpectedElement(20403);
+ addExpectedElement(20404);
+ addExpectedElement(20405);
+ addExpectedElement(20406);
+ addExpectedElement(20407);
+ addExpectedElement(20408);
+ addExpectedElement(20409);
+ addExpectedElement(20410);
+ addExpectedElement(20411);
+ addExpectedElement(20412);
+ addExpectedElement(20413);
+ addExpectedElement(20414);
+ addExpectedElement(20415);
+ addExpectedElement(20416);
+ addExpectedElement(20417);
+ addExpectedElement(20418);
+ addExpectedElement(20419);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 147, parse_org_emftext_language_java_literals_DecimalDoubleLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_DecimalDoubleLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_HexLongLiteral"
+ // Java.g:35959:1: parse_org_emftext_language_java_literals_HexLongLiteral returns [org.emftext.language.java.literals.HexLongLiteral element = null] : (a0= HEX_LONG_LITERAL ) ;
+ public final org.emftext.language.java.literals.HexLongLiteral parse_org_emftext_language_java_literals_HexLongLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.HexLongLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_HexLongLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 148) ) { return element; }
+
+ // Java.g:35962:2: ( (a0= HEX_LONG_LITERAL ) )
+ // Java.g:35963:2: (a0= HEX_LONG_LITERAL )
+ {
+ // Java.g:35963:2: (a0= HEX_LONG_LITERAL )
+ // Java.g:35964:3: a0= HEX_LONG_LITERAL
+ {
+ a0=(Token)match(input,HEX_LONG_LITERAL,FOLLOW_HEX_LONG_LITERAL_in_parse_org_emftext_language_java_literals_HexLongLiteral22093); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createHexLongLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("HEX_LONG_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_LONG_LITERAL__HEX_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.math.BigInteger resolved = (java.math.BigInteger) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_LONG_LITERAL__HEX_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_146_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20420);
+ addExpectedElement(20421);
+ addExpectedElement(20422);
+ addExpectedElement(20423);
+ addExpectedElement(20424);
+ addExpectedElement(20425);
+ addExpectedElement(20426);
+ addExpectedElement(20427);
+ addExpectedElement(20428);
+ addExpectedElement(20429);
+ addExpectedElement(20430);
+ addExpectedElement(20431);
+ addExpectedElement(20432);
+ addExpectedElement(20433);
+ addExpectedElement(20434);
+ addExpectedElement(20435);
+ addExpectedElement(20436);
+ addExpectedElement(20437);
+ addExpectedElement(20438);
+ addExpectedElement(20439);
+ addExpectedElement(20440);
+ addExpectedElement(20441);
+ addExpectedElement(20442);
+ addExpectedElement(20443);
+ addExpectedElement(20444);
+ addExpectedElement(20445);
+ addExpectedElement(20446);
+ addExpectedElement(20447);
+ addExpectedElement(20448);
+ addExpectedElement(20449);
+ addExpectedElement(20450);
+ addExpectedElement(20451);
+ addExpectedElement(20452);
+ addExpectedElement(20453);
+ addExpectedElement(20454);
+ addExpectedElement(20455);
+ addExpectedElement(20456);
+ addExpectedElement(20457);
+ addExpectedElement(20458);
+ addExpectedElement(20459);
+ addExpectedElement(20460);
+ addExpectedElement(20461);
+ addExpectedElement(20462);
+ addExpectedElement(20463);
+ addExpectedElement(20464);
+ addExpectedElement(20465);
+ addExpectedElement(20466);
+ addExpectedElement(20467);
+ addExpectedElement(20468);
+ addExpectedElement(20469);
+ addExpectedElement(20470);
+ addExpectedElement(20471);
+ addExpectedElement(20472);
+ addExpectedElement(20473);
+ addExpectedElement(20474);
+ addExpectedElement(20475);
+ addExpectedElement(20476);
+ addExpectedElement(20477);
+ addExpectedElement(20478);
+ addExpectedElement(20479);
+ addExpectedElement(20480);
+ addExpectedElement(20481);
+ addExpectedElement(20482);
+ addExpectedElement(20483);
+ addExpectedElement(20484);
+ addExpectedElement(20485);
+ addExpectedElement(20486);
+ addExpectedElement(20487);
+ addExpectedElement(20488);
+ addExpectedElement(20489);
+ addExpectedElement(20490);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 148, parse_org_emftext_language_java_literals_HexLongLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_HexLongLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_HexFloatLiteral"
+ // Java.g:36071:1: parse_org_emftext_language_java_literals_HexFloatLiteral returns [org.emftext.language.java.literals.HexFloatLiteral element = null] : (a0= HEX_FLOAT_LITERAL ) ;
+ public final org.emftext.language.java.literals.HexFloatLiteral parse_org_emftext_language_java_literals_HexFloatLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.HexFloatLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_HexFloatLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 149) ) { return element; }
+
+ // Java.g:36074:2: ( (a0= HEX_FLOAT_LITERAL ) )
+ // Java.g:36075:2: (a0= HEX_FLOAT_LITERAL )
+ {
+ // Java.g:36075:2: (a0= HEX_FLOAT_LITERAL )
+ // Java.g:36076:3: a0= HEX_FLOAT_LITERAL
+ {
+ a0=(Token)match(input,HEX_FLOAT_LITERAL,FOLLOW_HEX_FLOAT_LITERAL_in_parse_org_emftext_language_java_literals_HexFloatLiteral22133); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createHexFloatLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("HEX_FLOAT_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_FLOAT_LITERAL__HEX_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.Float resolved = (java.lang.Float) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_FLOAT_LITERAL__HEX_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_147_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20491);
+ addExpectedElement(20492);
+ addExpectedElement(20493);
+ addExpectedElement(20494);
+ addExpectedElement(20495);
+ addExpectedElement(20496);
+ addExpectedElement(20497);
+ addExpectedElement(20498);
+ addExpectedElement(20499);
+ addExpectedElement(20500);
+ addExpectedElement(20501);
+ addExpectedElement(20502);
+ addExpectedElement(20503);
+ addExpectedElement(20504);
+ addExpectedElement(20505);
+ addExpectedElement(20506);
+ addExpectedElement(20507);
+ addExpectedElement(20508);
+ addExpectedElement(20509);
+ addExpectedElement(20510);
+ addExpectedElement(20511);
+ addExpectedElement(20512);
+ addExpectedElement(20513);
+ addExpectedElement(20514);
+ addExpectedElement(20515);
+ addExpectedElement(20516);
+ addExpectedElement(20517);
+ addExpectedElement(20518);
+ addExpectedElement(20519);
+ addExpectedElement(20520);
+ addExpectedElement(20521);
+ addExpectedElement(20522);
+ addExpectedElement(20523);
+ addExpectedElement(20524);
+ addExpectedElement(20525);
+ addExpectedElement(20526);
+ addExpectedElement(20527);
+ addExpectedElement(20528);
+ addExpectedElement(20529);
+ addExpectedElement(20530);
+ addExpectedElement(20531);
+ addExpectedElement(20532);
+ addExpectedElement(20533);
+ addExpectedElement(20534);
+ addExpectedElement(20535);
+ addExpectedElement(20536);
+ addExpectedElement(20537);
+ addExpectedElement(20538);
+ addExpectedElement(20539);
+ addExpectedElement(20540);
+ addExpectedElement(20541);
+ addExpectedElement(20542);
+ addExpectedElement(20543);
+ addExpectedElement(20544);
+ addExpectedElement(20545);
+ addExpectedElement(20546);
+ addExpectedElement(20547);
+ addExpectedElement(20548);
+ addExpectedElement(20549);
+ addExpectedElement(20550);
+ addExpectedElement(20551);
+ addExpectedElement(20552);
+ addExpectedElement(20553);
+ addExpectedElement(20554);
+ addExpectedElement(20555);
+ addExpectedElement(20556);
+ addExpectedElement(20557);
+ addExpectedElement(20558);
+ addExpectedElement(20559);
+ addExpectedElement(20560);
+ addExpectedElement(20561);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 149, parse_org_emftext_language_java_literals_HexFloatLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_HexFloatLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_HexDoubleLiteral"
+ // Java.g:36183:1: parse_org_emftext_language_java_literals_HexDoubleLiteral returns [org.emftext.language.java.literals.HexDoubleLiteral element = null] : (a0= HEX_DOUBLE_LITERAL ) ;
+ public final org.emftext.language.java.literals.HexDoubleLiteral parse_org_emftext_language_java_literals_HexDoubleLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.HexDoubleLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_HexDoubleLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 150) ) { return element; }
+
+ // Java.g:36186:2: ( (a0= HEX_DOUBLE_LITERAL ) )
+ // Java.g:36187:2: (a0= HEX_DOUBLE_LITERAL )
+ {
+ // Java.g:36187:2: (a0= HEX_DOUBLE_LITERAL )
+ // Java.g:36188:3: a0= HEX_DOUBLE_LITERAL
+ {
+ a0=(Token)match(input,HEX_DOUBLE_LITERAL,FOLLOW_HEX_DOUBLE_LITERAL_in_parse_org_emftext_language_java_literals_HexDoubleLiteral22173); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createHexDoubleLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("HEX_DOUBLE_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_DOUBLE_LITERAL__HEX_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.Double resolved = (java.lang.Double) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_DOUBLE_LITERAL__HEX_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_148_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20562);
+ addExpectedElement(20563);
+ addExpectedElement(20564);
+ addExpectedElement(20565);
+ addExpectedElement(20566);
+ addExpectedElement(20567);
+ addExpectedElement(20568);
+ addExpectedElement(20569);
+ addExpectedElement(20570);
+ addExpectedElement(20571);
+ addExpectedElement(20572);
+ addExpectedElement(20573);
+ addExpectedElement(20574);
+ addExpectedElement(20575);
+ addExpectedElement(20576);
+ addExpectedElement(20577);
+ addExpectedElement(20578);
+ addExpectedElement(20579);
+ addExpectedElement(20580);
+ addExpectedElement(20581);
+ addExpectedElement(20582);
+ addExpectedElement(20583);
+ addExpectedElement(20584);
+ addExpectedElement(20585);
+ addExpectedElement(20586);
+ addExpectedElement(20587);
+ addExpectedElement(20588);
+ addExpectedElement(20589);
+ addExpectedElement(20590);
+ addExpectedElement(20591);
+ addExpectedElement(20592);
+ addExpectedElement(20593);
+ addExpectedElement(20594);
+ addExpectedElement(20595);
+ addExpectedElement(20596);
+ addExpectedElement(20597);
+ addExpectedElement(20598);
+ addExpectedElement(20599);
+ addExpectedElement(20600);
+ addExpectedElement(20601);
+ addExpectedElement(20602);
+ addExpectedElement(20603);
+ addExpectedElement(20604);
+ addExpectedElement(20605);
+ addExpectedElement(20606);
+ addExpectedElement(20607);
+ addExpectedElement(20608);
+ addExpectedElement(20609);
+ addExpectedElement(20610);
+ addExpectedElement(20611);
+ addExpectedElement(20612);
+ addExpectedElement(20613);
+ addExpectedElement(20614);
+ addExpectedElement(20615);
+ addExpectedElement(20616);
+ addExpectedElement(20617);
+ addExpectedElement(20618);
+ addExpectedElement(20619);
+ addExpectedElement(20620);
+ addExpectedElement(20621);
+ addExpectedElement(20622);
+ addExpectedElement(20623);
+ addExpectedElement(20624);
+ addExpectedElement(20625);
+ addExpectedElement(20626);
+ addExpectedElement(20627);
+ addExpectedElement(20628);
+ addExpectedElement(20629);
+ addExpectedElement(20630);
+ addExpectedElement(20631);
+ addExpectedElement(20632);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 150, parse_org_emftext_language_java_literals_HexDoubleLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_HexDoubleLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_HexIntegerLiteral"
+ // Java.g:36295:1: parse_org_emftext_language_java_literals_HexIntegerLiteral returns [org.emftext.language.java.literals.HexIntegerLiteral element = null] : (a0= HEX_INTEGER_LITERAL ) ;
+ public final org.emftext.language.java.literals.HexIntegerLiteral parse_org_emftext_language_java_literals_HexIntegerLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.HexIntegerLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_HexIntegerLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 151) ) { return element; }
+
+ // Java.g:36298:2: ( (a0= HEX_INTEGER_LITERAL ) )
+ // Java.g:36299:2: (a0= HEX_INTEGER_LITERAL )
+ {
+ // Java.g:36299:2: (a0= HEX_INTEGER_LITERAL )
+ // Java.g:36300:3: a0= HEX_INTEGER_LITERAL
+ {
+ a0=(Token)match(input,HEX_INTEGER_LITERAL,FOLLOW_HEX_INTEGER_LITERAL_in_parse_org_emftext_language_java_literals_HexIntegerLiteral22213); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createHexIntegerLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("HEX_INTEGER_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_INTEGER_LITERAL__HEX_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.math.BigInteger resolved = (java.math.BigInteger) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.HEX_INTEGER_LITERAL__HEX_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_149_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20633);
+ addExpectedElement(20634);
+ addExpectedElement(20635);
+ addExpectedElement(20636);
+ addExpectedElement(20637);
+ addExpectedElement(20638);
+ addExpectedElement(20639);
+ addExpectedElement(20640);
+ addExpectedElement(20641);
+ addExpectedElement(20642);
+ addExpectedElement(20643);
+ addExpectedElement(20644);
+ addExpectedElement(20645);
+ addExpectedElement(20646);
+ addExpectedElement(20647);
+ addExpectedElement(20648);
+ addExpectedElement(20649);
+ addExpectedElement(20650);
+ addExpectedElement(20651);
+ addExpectedElement(20652);
+ addExpectedElement(20653);
+ addExpectedElement(20654);
+ addExpectedElement(20655);
+ addExpectedElement(20656);
+ addExpectedElement(20657);
+ addExpectedElement(20658);
+ addExpectedElement(20659);
+ addExpectedElement(20660);
+ addExpectedElement(20661);
+ addExpectedElement(20662);
+ addExpectedElement(20663);
+ addExpectedElement(20664);
+ addExpectedElement(20665);
+ addExpectedElement(20666);
+ addExpectedElement(20667);
+ addExpectedElement(20668);
+ addExpectedElement(20669);
+ addExpectedElement(20670);
+ addExpectedElement(20671);
+ addExpectedElement(20672);
+ addExpectedElement(20673);
+ addExpectedElement(20674);
+ addExpectedElement(20675);
+ addExpectedElement(20676);
+ addExpectedElement(20677);
+ addExpectedElement(20678);
+ addExpectedElement(20679);
+ addExpectedElement(20680);
+ addExpectedElement(20681);
+ addExpectedElement(20682);
+ addExpectedElement(20683);
+ addExpectedElement(20684);
+ addExpectedElement(20685);
+ addExpectedElement(20686);
+ addExpectedElement(20687);
+ addExpectedElement(20688);
+ addExpectedElement(20689);
+ addExpectedElement(20690);
+ addExpectedElement(20691);
+ addExpectedElement(20692);
+ addExpectedElement(20693);
+ addExpectedElement(20694);
+ addExpectedElement(20695);
+ addExpectedElement(20696);
+ addExpectedElement(20697);
+ addExpectedElement(20698);
+ addExpectedElement(20699);
+ addExpectedElement(20700);
+ addExpectedElement(20701);
+ addExpectedElement(20702);
+ addExpectedElement(20703);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 151, parse_org_emftext_language_java_literals_HexIntegerLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_HexIntegerLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_OctalLongLiteral"
+ // Java.g:36407:1: parse_org_emftext_language_java_literals_OctalLongLiteral returns [org.emftext.language.java.literals.OctalLongLiteral element = null] : (a0= OCTAL_LONG_LITERAL ) ;
+ public final org.emftext.language.java.literals.OctalLongLiteral parse_org_emftext_language_java_literals_OctalLongLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.OctalLongLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_OctalLongLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 152) ) { return element; }
+
+ // Java.g:36410:2: ( (a0= OCTAL_LONG_LITERAL ) )
+ // Java.g:36411:2: (a0= OCTAL_LONG_LITERAL )
+ {
+ // Java.g:36411:2: (a0= OCTAL_LONG_LITERAL )
+ // Java.g:36412:3: a0= OCTAL_LONG_LITERAL
+ {
+ a0=(Token)match(input,OCTAL_LONG_LITERAL,FOLLOW_OCTAL_LONG_LITERAL_in_parse_org_emftext_language_java_literals_OctalLongLiteral22253); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createOctalLongLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("OCTAL_LONG_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.OCTAL_LONG_LITERAL__OCTAL_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.math.BigInteger resolved = (java.math.BigInteger) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.OCTAL_LONG_LITERAL__OCTAL_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_150_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20704);
+ addExpectedElement(20705);
+ addExpectedElement(20706);
+ addExpectedElement(20707);
+ addExpectedElement(20708);
+ addExpectedElement(20709);
+ addExpectedElement(20710);
+ addExpectedElement(20711);
+ addExpectedElement(20712);
+ addExpectedElement(20713);
+ addExpectedElement(20714);
+ addExpectedElement(20715);
+ addExpectedElement(20716);
+ addExpectedElement(20717);
+ addExpectedElement(20718);
+ addExpectedElement(20719);
+ addExpectedElement(20720);
+ addExpectedElement(20721);
+ addExpectedElement(20722);
+ addExpectedElement(20723);
+ addExpectedElement(20724);
+ addExpectedElement(20725);
+ addExpectedElement(20726);
+ addExpectedElement(20727);
+ addExpectedElement(20728);
+ addExpectedElement(20729);
+ addExpectedElement(20730);
+ addExpectedElement(20731);
+ addExpectedElement(20732);
+ addExpectedElement(20733);
+ addExpectedElement(20734);
+ addExpectedElement(20735);
+ addExpectedElement(20736);
+ addExpectedElement(20737);
+ addExpectedElement(20738);
+ addExpectedElement(20739);
+ addExpectedElement(20740);
+ addExpectedElement(20741);
+ addExpectedElement(20742);
+ addExpectedElement(20743);
+ addExpectedElement(20744);
+ addExpectedElement(20745);
+ addExpectedElement(20746);
+ addExpectedElement(20747);
+ addExpectedElement(20748);
+ addExpectedElement(20749);
+ addExpectedElement(20750);
+ addExpectedElement(20751);
+ addExpectedElement(20752);
+ addExpectedElement(20753);
+ addExpectedElement(20754);
+ addExpectedElement(20755);
+ addExpectedElement(20756);
+ addExpectedElement(20757);
+ addExpectedElement(20758);
+ addExpectedElement(20759);
+ addExpectedElement(20760);
+ addExpectedElement(20761);
+ addExpectedElement(20762);
+ addExpectedElement(20763);
+ addExpectedElement(20764);
+ addExpectedElement(20765);
+ addExpectedElement(20766);
+ addExpectedElement(20767);
+ addExpectedElement(20768);
+ addExpectedElement(20769);
+ addExpectedElement(20770);
+ addExpectedElement(20771);
+ addExpectedElement(20772);
+ addExpectedElement(20773);
+ addExpectedElement(20774);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 152, parse_org_emftext_language_java_literals_OctalLongLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_OctalLongLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_OctalIntegerLiteral"
+ // Java.g:36519:1: parse_org_emftext_language_java_literals_OctalIntegerLiteral returns [org.emftext.language.java.literals.OctalIntegerLiteral element = null] : (a0= OCTAL_INTEGER_LITERAL ) ;
+ public final org.emftext.language.java.literals.OctalIntegerLiteral parse_org_emftext_language_java_literals_OctalIntegerLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.OctalIntegerLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_OctalIntegerLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 153) ) { return element; }
+
+ // Java.g:36522:2: ( (a0= OCTAL_INTEGER_LITERAL ) )
+ // Java.g:36523:2: (a0= OCTAL_INTEGER_LITERAL )
+ {
+ // Java.g:36523:2: (a0= OCTAL_INTEGER_LITERAL )
+ // Java.g:36524:3: a0= OCTAL_INTEGER_LITERAL
+ {
+ a0=(Token)match(input,OCTAL_INTEGER_LITERAL,FOLLOW_OCTAL_INTEGER_LITERAL_in_parse_org_emftext_language_java_literals_OctalIntegerLiteral22293); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createOctalIntegerLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("OCTAL_INTEGER_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.OCTAL_INTEGER_LITERAL__OCTAL_VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.math.BigInteger resolved = (java.math.BigInteger) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.OCTAL_INTEGER_LITERAL__OCTAL_VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_151_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20775);
+ addExpectedElement(20776);
+ addExpectedElement(20777);
+ addExpectedElement(20778);
+ addExpectedElement(20779);
+ addExpectedElement(20780);
+ addExpectedElement(20781);
+ addExpectedElement(20782);
+ addExpectedElement(20783);
+ addExpectedElement(20784);
+ addExpectedElement(20785);
+ addExpectedElement(20786);
+ addExpectedElement(20787);
+ addExpectedElement(20788);
+ addExpectedElement(20789);
+ addExpectedElement(20790);
+ addExpectedElement(20791);
+ addExpectedElement(20792);
+ addExpectedElement(20793);
+ addExpectedElement(20794);
+ addExpectedElement(20795);
+ addExpectedElement(20796);
+ addExpectedElement(20797);
+ addExpectedElement(20798);
+ addExpectedElement(20799);
+ addExpectedElement(20800);
+ addExpectedElement(20801);
+ addExpectedElement(20802);
+ addExpectedElement(20803);
+ addExpectedElement(20804);
+ addExpectedElement(20805);
+ addExpectedElement(20806);
+ addExpectedElement(20807);
+ addExpectedElement(20808);
+ addExpectedElement(20809);
+ addExpectedElement(20810);
+ addExpectedElement(20811);
+ addExpectedElement(20812);
+ addExpectedElement(20813);
+ addExpectedElement(20814);
+ addExpectedElement(20815);
+ addExpectedElement(20816);
+ addExpectedElement(20817);
+ addExpectedElement(20818);
+ addExpectedElement(20819);
+ addExpectedElement(20820);
+ addExpectedElement(20821);
+ addExpectedElement(20822);
+ addExpectedElement(20823);
+ addExpectedElement(20824);
+ addExpectedElement(20825);
+ addExpectedElement(20826);
+ addExpectedElement(20827);
+ addExpectedElement(20828);
+ addExpectedElement(20829);
+ addExpectedElement(20830);
+ addExpectedElement(20831);
+ addExpectedElement(20832);
+ addExpectedElement(20833);
+ addExpectedElement(20834);
+ addExpectedElement(20835);
+ addExpectedElement(20836);
+ addExpectedElement(20837);
+ addExpectedElement(20838);
+ addExpectedElement(20839);
+ addExpectedElement(20840);
+ addExpectedElement(20841);
+ addExpectedElement(20842);
+ addExpectedElement(20843);
+ addExpectedElement(20844);
+ addExpectedElement(20845);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 153, parse_org_emftext_language_java_literals_OctalIntegerLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_OctalIntegerLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_CharacterLiteral"
+ // Java.g:36631:1: parse_org_emftext_language_java_literals_CharacterLiteral returns [org.emftext.language.java.literals.CharacterLiteral element = null] : (a0= CHARACTER_LITERAL ) ;
+ public final org.emftext.language.java.literals.CharacterLiteral parse_org_emftext_language_java_literals_CharacterLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.CharacterLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_CharacterLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 154) ) { return element; }
+
+ // Java.g:36634:2: ( (a0= CHARACTER_LITERAL ) )
+ // Java.g:36635:2: (a0= CHARACTER_LITERAL )
+ {
+ // Java.g:36635:2: (a0= CHARACTER_LITERAL )
+ // Java.g:36636:3: a0= CHARACTER_LITERAL
+ {
+ a0=(Token)match(input,CHARACTER_LITERAL,FOLLOW_CHARACTER_LITERAL_in_parse_org_emftext_language_java_literals_CharacterLiteral22333); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createCharacterLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("CHARACTER_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.CHARACTER_LITERAL__VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.Character resolved = (java.lang.Character) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.CHARACTER_LITERAL__VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_152_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20846);
+ addExpectedElement(20847);
+ addExpectedElement(20848);
+ addExpectedElement(20849);
+ addExpectedElement(20850);
+ addExpectedElement(20851);
+ addExpectedElement(20852);
+ addExpectedElement(20853);
+ addExpectedElement(20854);
+ addExpectedElement(20855);
+ addExpectedElement(20856);
+ addExpectedElement(20857);
+ addExpectedElement(20858);
+ addExpectedElement(20859);
+ addExpectedElement(20860);
+ addExpectedElement(20861);
+ addExpectedElement(20862);
+ addExpectedElement(20863);
+ addExpectedElement(20864);
+ addExpectedElement(20865);
+ addExpectedElement(20866);
+ addExpectedElement(20867);
+ addExpectedElement(20868);
+ addExpectedElement(20869);
+ addExpectedElement(20870);
+ addExpectedElement(20871);
+ addExpectedElement(20872);
+ addExpectedElement(20873);
+ addExpectedElement(20874);
+ addExpectedElement(20875);
+ addExpectedElement(20876);
+ addExpectedElement(20877);
+ addExpectedElement(20878);
+ addExpectedElement(20879);
+ addExpectedElement(20880);
+ addExpectedElement(20881);
+ addExpectedElement(20882);
+ addExpectedElement(20883);
+ addExpectedElement(20884);
+ addExpectedElement(20885);
+ addExpectedElement(20886);
+ addExpectedElement(20887);
+ addExpectedElement(20888);
+ addExpectedElement(20889);
+ addExpectedElement(20890);
+ addExpectedElement(20891);
+ addExpectedElement(20892);
+ addExpectedElement(20893);
+ addExpectedElement(20894);
+ addExpectedElement(20895);
+ addExpectedElement(20896);
+ addExpectedElement(20897);
+ addExpectedElement(20898);
+ addExpectedElement(20899);
+ addExpectedElement(20900);
+ addExpectedElement(20901);
+ addExpectedElement(20902);
+ addExpectedElement(20903);
+ addExpectedElement(20904);
+ addExpectedElement(20905);
+ addExpectedElement(20906);
+ addExpectedElement(20907);
+ addExpectedElement(20908);
+ addExpectedElement(20909);
+ addExpectedElement(20910);
+ addExpectedElement(20911);
+ addExpectedElement(20912);
+ addExpectedElement(20913);
+ addExpectedElement(20914);
+ addExpectedElement(20915);
+ addExpectedElement(20916);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 154, parse_org_emftext_language_java_literals_CharacterLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_CharacterLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_BooleanLiteral"
+ // Java.g:36743:1: parse_org_emftext_language_java_literals_BooleanLiteral returns [org.emftext.language.java.literals.BooleanLiteral element = null] : (a0= BOOLEAN_LITERAL ) ;
+ public final org.emftext.language.java.literals.BooleanLiteral parse_org_emftext_language_java_literals_BooleanLiteral() throws RecognitionException {
+ org.emftext.language.java.literals.BooleanLiteral element = null;
+
+ int parse_org_emftext_language_java_literals_BooleanLiteral_StartIndex = input.index();
+
+ Token a0=null;
+
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 155) ) { return element; }
+
+ // Java.g:36746:2: ( (a0= BOOLEAN_LITERAL ) )
+ // Java.g:36747:2: (a0= BOOLEAN_LITERAL )
+ {
+ // Java.g:36747:2: (a0= BOOLEAN_LITERAL )
+ // Java.g:36748:3: a0= BOOLEAN_LITERAL
+ {
+ a0=(Token)match(input,BOOLEAN_LITERAL,FOLLOW_BOOLEAN_LITERAL_in_parse_org_emftext_language_java_literals_BooleanLiteral22373); if (state.failed) return element;
+
+ if ( state.backtracking==0 ) {
+ if (terminateParsing) {
+ throw new org.emftext.language.java.resource.java.mopp.JavaTerminateParsingException();
+ }
+ if (element == null) {
+ element = org.emftext.language.java.literals.LiteralsFactory.eINSTANCE.createBooleanLiteral();
+ startIncompleteElement(element);
+ }
+ if (a0 != null) {
+ org.emftext.language.java.resource.java.IJavaTokenResolver tokenResolver = tokenResolverFactory.createTokenResolver("BOOLEAN_LITERAL");
+ tokenResolver.setOptions(getOptions());
+ org.emftext.language.java.resource.java.IJavaTokenResolveResult result = getFreshTokenResolveResult();
+ tokenResolver.resolve(a0.getText(), element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.BOOLEAN_LITERAL__VALUE), result);
+ Object resolvedObject = result.getResolvedToken();
+ if (resolvedObject == null) {
+ addErrorToResource(result.getErrorMessage(), ((org.antlr.runtime3_4_0.CommonToken) a0).getLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getCharPositionInLine(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStartIndex(), ((org.antlr.runtime3_4_0.CommonToken) a0).getStopIndex());
+ }
+ java.lang.Boolean resolved = (java.lang.Boolean) resolvedObject;
+ if (resolved != null) {
+ Object value = resolved;
+ element.eSet(element.eClass().getEStructuralFeature(org.emftext.language.java.literals.LiteralsPackage.BOOLEAN_LITERAL__VALUE), value);
+ completedElement(value, false);
+ }
+ collectHiddenTokens(element);
+ retrieveLayoutInformation(element, org.emftext.language.java.resource.java.grammar.JavaGrammarInformationProvider.JAVA_153_0_0_0, resolved, true);
+ copyLocalizationInfos((org.antlr.runtime3_4_0.CommonToken) a0, element);
+ }
+ }
+
+ }
+
+
+ if ( state.backtracking==0 ) {
+ // expected elements (follow set)
+ addExpectedElement(20917);
+ addExpectedElement(20918);
+ addExpectedElement(20919);
+ addExpectedElement(20920);
+ addExpectedElement(20921);
+ addExpectedElement(20922);
+ addExpectedElement(20923);
+ addExpectedElement(20924);
+ addExpectedElement(20925);
+ addExpectedElement(20926);
+ addExpectedElement(20927);
+ addExpectedElement(20928);
+ addExpectedElement(20929);
+ addExpectedElement(20930);
+ addExpectedElement(20931);
+ addExpectedElement(20932);
+ addExpectedElement(20933);
+ addExpectedElement(20934);
+ addExpectedElement(20935);
+ addExpectedElement(20936);
+ addExpectedElement(20937);
+ addExpectedElement(20938);
+ addExpectedElement(20939);
+ addExpectedElement(20940);
+ addExpectedElement(20941);
+ addExpectedElement(20942);
+ addExpectedElement(20943);
+ addExpectedElement(20944);
+ addExpectedElement(20945);
+ addExpectedElement(20946);
+ addExpectedElement(20947);
+ addExpectedElement(20948);
+ addExpectedElement(20949);
+ addExpectedElement(20950);
+ addExpectedElement(20951);
+ addExpectedElement(20952);
+ addExpectedElement(20953);
+ addExpectedElement(20954);
+ addExpectedElement(20955);
+ addExpectedElement(20956);
+ addExpectedElement(20957);
+ addExpectedElement(20958);
+ addExpectedElement(20959);
+ addExpectedElement(20960);
+ addExpectedElement(20961);
+ addExpectedElement(20962);
+ addExpectedElement(20963);
+ addExpectedElement(20964);
+ addExpectedElement(20965);
+ addExpectedElement(20966);
+ addExpectedElement(20967);
+ addExpectedElement(20968);
+ addExpectedElement(20969);
+ addExpectedElement(20970);
+ addExpectedElement(20971);
+ addExpectedElement(20972);
+ addExpectedElement(20973);
+ addExpectedElement(20974);
+ addExpectedElement(20975);
+ addExpectedElement(20976);
+ addExpectedElement(20977);
+ addExpectedElement(20978);
+ addExpectedElement(20979);
+ addExpectedElement(20980);
+ addExpectedElement(20981);
+ addExpectedElement(20982);
+ addExpectedElement(20983);
+ addExpectedElement(20984);
+ addExpectedElement(20985);
+ addExpectedElement(20986);
+ addExpectedElement(20987);
+ }
+
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 155, parse_org_emftext_language_java_literals_BooleanLiteral_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_BooleanLiteral"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_imports_Import"
+ // Java.g:36855:1: parse_org_emftext_language_java_imports_Import returns [org.emftext.language.java.imports.Import element = null] : (c0= parse_org_emftext_language_java_imports_ClassifierImport |c1= parse_org_emftext_language_java_imports_PackageImport |c2= parse_org_emftext_language_java_imports_StaticMemberImport |c3= parse_org_emftext_language_java_imports_StaticClassifierImport );
+ public final org.emftext.language.java.imports.Import parse_org_emftext_language_java_imports_Import() throws RecognitionException {
+ org.emftext.language.java.imports.Import element = null;
+
+ int parse_org_emftext_language_java_imports_Import_StartIndex = input.index();
+
+ org.emftext.language.java.imports.ClassifierImport c0 =null;
+
+ org.emftext.language.java.imports.PackageImport c1 =null;
+
+ org.emftext.language.java.imports.StaticMemberImport c2 =null;
+
+ org.emftext.language.java.imports.StaticClassifierImport c3 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 156) ) { return element; }
+
+ // Java.g:36856:2: (c0= parse_org_emftext_language_java_imports_ClassifierImport |c1= parse_org_emftext_language_java_imports_PackageImport |c2= parse_org_emftext_language_java_imports_StaticMemberImport |c3= parse_org_emftext_language_java_imports_StaticClassifierImport )
+ int alt214=4;
+ alt214 = dfa214.predict(input);
+ switch (alt214) {
+ case 1 :
+ // Java.g:36857:2: c0= parse_org_emftext_language_java_imports_ClassifierImport
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_imports_ClassifierImport_in_parse_org_emftext_language_java_imports_Import22405);
+ c0=parse_org_emftext_language_java_imports_ClassifierImport();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36858:4: c1= parse_org_emftext_language_java_imports_PackageImport
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_imports_PackageImport_in_parse_org_emftext_language_java_imports_Import22415);
+ c1=parse_org_emftext_language_java_imports_PackageImport();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36859:4: c2= parse_org_emftext_language_java_imports_StaticMemberImport
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_imports_StaticMemberImport_in_parse_org_emftext_language_java_imports_Import22425);
+ c2=parse_org_emftext_language_java_imports_StaticMemberImport();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36860:4: c3= parse_org_emftext_language_java_imports_StaticClassifierImport
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_imports_StaticClassifierImport_in_parse_org_emftext_language_java_imports_Import22435);
+ c3=parse_org_emftext_language_java_imports_StaticClassifierImport();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 156, parse_org_emftext_language_java_imports_Import_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_imports_Import"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_classifiers_ConcreteClassifier"
+ // Java.g:36864:1: parse_org_emftext_language_java_classifiers_ConcreteClassifier returns [org.emftext.language.java.classifiers.ConcreteClassifier element = null] : (c0= parse_org_emftext_language_java_classifiers_Class |c1= parse_org_emftext_language_java_classifiers_Interface |c2= parse_org_emftext_language_java_classifiers_Enumeration |c3= parse_org_emftext_language_java_classifiers_Annotation );
+ public final org.emftext.language.java.classifiers.ConcreteClassifier parse_org_emftext_language_java_classifiers_ConcreteClassifier() throws RecognitionException {
+ org.emftext.language.java.classifiers.ConcreteClassifier element = null;
+
+ int parse_org_emftext_language_java_classifiers_ConcreteClassifier_StartIndex = input.index();
+
+ org.emftext.language.java.classifiers.Class c0 =null;
+
+ org.emftext.language.java.classifiers.Interface c1 =null;
+
+ org.emftext.language.java.classifiers.Enumeration c2 =null;
+
+ org.emftext.language.java.classifiers.Annotation c3 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 157) ) { return element; }
+
+ // Java.g:36865:2: (c0= parse_org_emftext_language_java_classifiers_Class |c1= parse_org_emftext_language_java_classifiers_Interface |c2= parse_org_emftext_language_java_classifiers_Enumeration |c3= parse_org_emftext_language_java_classifiers_Annotation )
+ int alt215=4;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ int LA215_1 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA215_2 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 56:
+ {
+ int LA215_3 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 88:
+ {
+ int LA215_4 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 87:
+ {
+ int LA215_5 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 5, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 72:
+ {
+ int LA215_6 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 6, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 92:
+ {
+ int LA215_7 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 7, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 83:
+ {
+ int LA215_8 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 8, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 96:
+ {
+ int LA215_9 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 9, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 100:
+ {
+ int LA215_10 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 10, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 103:
+ {
+ int LA215_11 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 11, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 93:
+ {
+ int LA215_12 = input.LA(2);
+
+ if ( (synpred218_Java()) ) {
+ alt215=1;
+ }
+ else if ( (synpred219_Java()) ) {
+ alt215=2;
+ }
+ else if ( (synpred220_Java()) ) {
+ alt215=3;
+ }
+ else if ( (true) ) {
+ alt215=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 12, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 64:
+ {
+ alt215=1;
+ }
+ break;
+ case 81:
+ {
+ alt215=2;
+ }
+ break;
+ case 70:
+ {
+ alt215=3;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 215, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt215) {
+ case 1 :
+ // Java.g:36866:2: c0= parse_org_emftext_language_java_classifiers_Class
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22456);
+ c0=parse_org_emftext_language_java_classifiers_Class();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36867:4: c1= parse_org_emftext_language_java_classifiers_Interface
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22466);
+ c1=parse_org_emftext_language_java_classifiers_Interface();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36868:4: c2= parse_org_emftext_language_java_classifiers_Enumeration
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22476);
+ c2=parse_org_emftext_language_java_classifiers_Enumeration();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36869:4: c3= parse_org_emftext_language_java_classifiers_Annotation
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22486);
+ c3=parse_org_emftext_language_java_classifiers_Annotation();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 157, parse_org_emftext_language_java_classifiers_ConcreteClassifier_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_classifiers_ConcreteClassifier"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier"
+ // Java.g:36873:1: parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier returns [org.emftext.language.java.modifiers.AnnotationInstanceOrModifier element = null] : (c0= parse_org_emftext_language_java_annotations_AnnotationInstance |c1= parse_org_emftext_language_java_modifiers_Public |c2= parse_org_emftext_language_java_modifiers_Abstract |c3= parse_org_emftext_language_java_modifiers_Protected |c4= parse_org_emftext_language_java_modifiers_Private |c5= parse_org_emftext_language_java_modifiers_Final |c6= parse_org_emftext_language_java_modifiers_Static |c7= parse_org_emftext_language_java_modifiers_Native |c8= parse_org_emftext_language_java_modifiers_Synchronized |c9= parse_org_emftext_language_java_modifiers_Transient |c10= parse_org_emftext_language_java_modifiers_Volatile |c11= parse_org_emftext_language_java_modifiers_Strictfp );
+ public final org.emftext.language.java.modifiers.AnnotationInstanceOrModifier parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier() throws RecognitionException {
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier element = null;
+
+ int parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_StartIndex = input.index();
+
+ org.emftext.language.java.annotations.AnnotationInstance c0 =null;
+
+ org.emftext.language.java.modifiers.Public c1 =null;
+
+ org.emftext.language.java.modifiers.Abstract c2 =null;
+
+ org.emftext.language.java.modifiers.Protected c3 =null;
+
+ org.emftext.language.java.modifiers.Private c4 =null;
+
+ org.emftext.language.java.modifiers.Final c5 =null;
+
+ org.emftext.language.java.modifiers.Static c6 =null;
+
+ org.emftext.language.java.modifiers.Native c7 =null;
+
+ org.emftext.language.java.modifiers.Synchronized c8 =null;
+
+ org.emftext.language.java.modifiers.Transient c9 =null;
+
+ org.emftext.language.java.modifiers.Volatile c10 =null;
+
+ org.emftext.language.java.modifiers.Strictfp c11 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 158) ) { return element; }
+
+ // Java.g:36874:2: (c0= parse_org_emftext_language_java_annotations_AnnotationInstance |c1= parse_org_emftext_language_java_modifiers_Public |c2= parse_org_emftext_language_java_modifiers_Abstract |c3= parse_org_emftext_language_java_modifiers_Protected |c4= parse_org_emftext_language_java_modifiers_Private |c5= parse_org_emftext_language_java_modifiers_Final |c6= parse_org_emftext_language_java_modifiers_Static |c7= parse_org_emftext_language_java_modifiers_Native |c8= parse_org_emftext_language_java_modifiers_Synchronized |c9= parse_org_emftext_language_java_modifiers_Transient |c10= parse_org_emftext_language_java_modifiers_Volatile |c11= parse_org_emftext_language_java_modifiers_Strictfp )
+ int alt216=12;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ alt216=1;
+ }
+ break;
+ case 89:
+ {
+ alt216=2;
+ }
+ break;
+ case 56:
+ {
+ alt216=3;
+ }
+ break;
+ case 88:
+ {
+ alt216=4;
+ }
+ break;
+ case 87:
+ {
+ alt216=5;
+ }
+ break;
+ case 72:
+ {
+ alt216=6;
+ }
+ break;
+ case 92:
+ {
+ alt216=7;
+ }
+ break;
+ case 83:
+ {
+ alt216=8;
+ }
+ break;
+ case 96:
+ {
+ alt216=9;
+ }
+ break;
+ case 100:
+ {
+ alt216=10;
+ }
+ break;
+ case 103:
+ {
+ alt216=11;
+ }
+ break;
+ case 93:
+ {
+ alt216=12;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 216, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt216) {
+ case 1 :
+ // Java.g:36875:2: c0= parse_org_emftext_language_java_annotations_AnnotationInstance
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22507);
+ c0=parse_org_emftext_language_java_annotations_AnnotationInstance();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36876:4: c1= parse_org_emftext_language_java_modifiers_Public
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Public_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22517);
+ c1=parse_org_emftext_language_java_modifiers_Public();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36877:4: c2= parse_org_emftext_language_java_modifiers_Abstract
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Abstract_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22527);
+ c2=parse_org_emftext_language_java_modifiers_Abstract();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36878:4: c3= parse_org_emftext_language_java_modifiers_Protected
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Protected_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22537);
+ c3=parse_org_emftext_language_java_modifiers_Protected();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:36879:4: c4= parse_org_emftext_language_java_modifiers_Private
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Private_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22547);
+ c4=parse_org_emftext_language_java_modifiers_Private();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:36880:4: c5= parse_org_emftext_language_java_modifiers_Final
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Final_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22557);
+ c5=parse_org_emftext_language_java_modifiers_Final();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:36881:4: c6= parse_org_emftext_language_java_modifiers_Static
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22567);
+ c6=parse_org_emftext_language_java_modifiers_Static();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:36882:4: c7= parse_org_emftext_language_java_modifiers_Native
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Native_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22577);
+ c7=parse_org_emftext_language_java_modifiers_Native();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:36883:4: c8= parse_org_emftext_language_java_modifiers_Synchronized
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Synchronized_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22587);
+ c8=parse_org_emftext_language_java_modifiers_Synchronized();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:36884:4: c9= parse_org_emftext_language_java_modifiers_Transient
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Transient_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22597);
+ c9=parse_org_emftext_language_java_modifiers_Transient();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:36885:4: c10= parse_org_emftext_language_java_modifiers_Volatile
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Volatile_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22607);
+ c10=parse_org_emftext_language_java_modifiers_Volatile();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 12 :
+ // Java.g:36886:4: c11= parse_org_emftext_language_java_modifiers_Strictfp
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Strictfp_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22617);
+ c11=parse_org_emftext_language_java_modifiers_Strictfp();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c11; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 158, parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_TypeReference"
+ // Java.g:36890:1: parse_org_emftext_language_java_types_TypeReference returns [org.emftext.language.java.types.TypeReference element = null] : (c0= parse_org_emftext_language_java_types_NamespaceClassifierReference |c1= parse_org_emftext_language_java_types_ClassifierReference |c2= parse_org_emftext_language_java_types_Void |c3= parse_org_emftext_language_java_types_Boolean |c4= parse_org_emftext_language_java_types_Char |c5= parse_org_emftext_language_java_types_Byte |c6= parse_org_emftext_language_java_types_Short |c7= parse_org_emftext_language_java_types_Int |c8= parse_org_emftext_language_java_types_Long |c9= parse_org_emftext_language_java_types_Float |c10= parse_org_emftext_language_java_types_Double );
+ public final org.emftext.language.java.types.TypeReference parse_org_emftext_language_java_types_TypeReference() throws RecognitionException {
+ org.emftext.language.java.types.TypeReference element = null;
+
+ int parse_org_emftext_language_java_types_TypeReference_StartIndex = input.index();
+
+ org.emftext.language.java.types.NamespaceClassifierReference c0 =null;
+
+ org.emftext.language.java.types.ClassifierReference c1 =null;
+
+ org.emftext.language.java.types.Void c2 =null;
+
+ org.emftext.language.java.types.Boolean c3 =null;
+
+ org.emftext.language.java.types.Char c4 =null;
+
+ org.emftext.language.java.types.Byte c5 =null;
+
+ org.emftext.language.java.types.Short c6 =null;
+
+ org.emftext.language.java.types.Int c7 =null;
+
+ org.emftext.language.java.types.Long c8 =null;
+
+ org.emftext.language.java.types.Float c9 =null;
+
+ org.emftext.language.java.types.Double c10 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 159) ) { return element; }
+
+ // Java.g:36891:2: (c0= parse_org_emftext_language_java_types_NamespaceClassifierReference |c1= parse_org_emftext_language_java_types_ClassifierReference |c2= parse_org_emftext_language_java_types_Void |c3= parse_org_emftext_language_java_types_Boolean |c4= parse_org_emftext_language_java_types_Char |c5= parse_org_emftext_language_java_types_Byte |c6= parse_org_emftext_language_java_types_Short |c7= parse_org_emftext_language_java_types_Int |c8= parse_org_emftext_language_java_types_Long |c9= parse_org_emftext_language_java_types_Float |c10= parse_org_emftext_language_java_types_Double )
+ int alt217=11;
+ switch ( input.LA(1) ) {
+ case IDENTIFIER:
+ {
+ int LA217_1 = input.LA(2);
+
+ if ( (synpred232_Java()) ) {
+ alt217=1;
+ }
+ else if ( (synpred233_Java()) ) {
+ alt217=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 217, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 102:
+ {
+ alt217=3;
+ }
+ break;
+ case 58:
+ {
+ alt217=4;
+ }
+ break;
+ case 63:
+ {
+ alt217=5;
+ }
+ break;
+ case 60:
+ {
+ alt217=6;
+ }
+ break;
+ case 91:
+ {
+ alt217=7;
+ }
+ break;
+ case 80:
+ {
+ alt217=8;
+ }
+ break;
+ case 82:
+ {
+ alt217=9;
+ }
+ break;
+ case 74:
+ {
+ alt217=10;
+ }
+ break;
+ case 68:
+ {
+ alt217=11;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 217, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt217) {
+ case 1 :
+ // Java.g:36892:2: c0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_types_TypeReference22638);
+ c0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36893:4: c1= parse_org_emftext_language_java_types_ClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_parse_org_emftext_language_java_types_TypeReference22648);
+ c1=parse_org_emftext_language_java_types_ClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36894:4: c2= parse_org_emftext_language_java_types_Void
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Void_in_parse_org_emftext_language_java_types_TypeReference22658);
+ c2=parse_org_emftext_language_java_types_Void();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36895:4: c3= parse_org_emftext_language_java_types_Boolean
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Boolean_in_parse_org_emftext_language_java_types_TypeReference22668);
+ c3=parse_org_emftext_language_java_types_Boolean();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:36896:4: c4= parse_org_emftext_language_java_types_Char
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Char_in_parse_org_emftext_language_java_types_TypeReference22678);
+ c4=parse_org_emftext_language_java_types_Char();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:36897:4: c5= parse_org_emftext_language_java_types_Byte
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Byte_in_parse_org_emftext_language_java_types_TypeReference22688);
+ c5=parse_org_emftext_language_java_types_Byte();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:36898:4: c6= parse_org_emftext_language_java_types_Short
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Short_in_parse_org_emftext_language_java_types_TypeReference22698);
+ c6=parse_org_emftext_language_java_types_Short();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:36899:4: c7= parse_org_emftext_language_java_types_Int
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Int_in_parse_org_emftext_language_java_types_TypeReference22708);
+ c7=parse_org_emftext_language_java_types_Int();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:36900:4: c8= parse_org_emftext_language_java_types_Long
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Long_in_parse_org_emftext_language_java_types_TypeReference22718);
+ c8=parse_org_emftext_language_java_types_Long();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:36901:4: c9= parse_org_emftext_language_java_types_Float
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Float_in_parse_org_emftext_language_java_types_TypeReference22728);
+ c9=parse_org_emftext_language_java_types_Float();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:36902:4: c10= parse_org_emftext_language_java_types_Double
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Double_in_parse_org_emftext_language_java_types_TypeReference22738);
+ c10=parse_org_emftext_language_java_types_Double();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 159, parse_org_emftext_language_java_types_TypeReference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_TypeReference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_members_Member"
+ // Java.g:36906:1: parse_org_emftext_language_java_members_Member returns [org.emftext.language.java.members.Member element = null] : (c0= parse_org_emftext_language_java_classifiers_Class |c1= parse_org_emftext_language_java_classifiers_Interface |c2= parse_org_emftext_language_java_classifiers_Enumeration |c3= parse_org_emftext_language_java_classifiers_Annotation |c4= parse_org_emftext_language_java_statements_Block |c5= parse_org_emftext_language_java_members_Constructor |c6= parse_org_emftext_language_java_members_InterfaceMethod |c7= parse_org_emftext_language_java_members_ClassMethod |c8= parse_org_emftext_language_java_annotations_AnnotationAttribute |c9= parse_org_emftext_language_java_members_Field |c10= parse_org_emftext_language_java_members_EmptyMember );
+ public final org.emftext.language.java.members.Member parse_org_emftext_language_java_members_Member() throws RecognitionException {
+ org.emftext.language.java.members.Member element = null;
+
+ int parse_org_emftext_language_java_members_Member_StartIndex = input.index();
+
+ org.emftext.language.java.classifiers.Class c0 =null;
+
+ org.emftext.language.java.classifiers.Interface c1 =null;
+
+ org.emftext.language.java.classifiers.Enumeration c2 =null;
+
+ org.emftext.language.java.classifiers.Annotation c3 =null;
+
+ org.emftext.language.java.statements.Block c4 =null;
+
+ org.emftext.language.java.members.Constructor c5 =null;
+
+ org.emftext.language.java.members.InterfaceMethod c6 =null;
+
+ org.emftext.language.java.members.ClassMethod c7 =null;
+
+ org.emftext.language.java.annotations.AnnotationAttribute c8 =null;
+
+ org.emftext.language.java.members.Field c9 =null;
+
+ org.emftext.language.java.members.EmptyMember c10 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 160) ) { return element; }
+
+ // Java.g:36907:2: (c0= parse_org_emftext_language_java_classifiers_Class |c1= parse_org_emftext_language_java_classifiers_Interface |c2= parse_org_emftext_language_java_classifiers_Enumeration |c3= parse_org_emftext_language_java_classifiers_Annotation |c4= parse_org_emftext_language_java_statements_Block |c5= parse_org_emftext_language_java_members_Constructor |c6= parse_org_emftext_language_java_members_InterfaceMethod |c7= parse_org_emftext_language_java_members_ClassMethod |c8= parse_org_emftext_language_java_annotations_AnnotationAttribute |c9= parse_org_emftext_language_java_members_Field |c10= parse_org_emftext_language_java_members_EmptyMember )
+ int alt218=11;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ int LA218_1 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA218_2 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 56:
+ {
+ int LA218_3 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 88:
+ {
+ int LA218_4 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 87:
+ {
+ int LA218_5 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 5, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 72:
+ {
+ int LA218_6 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 6, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 92:
+ {
+ int LA218_7 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 7, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 83:
+ {
+ int LA218_8 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 8, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 96:
+ {
+ int LA218_9 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 9, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 100:
+ {
+ int LA218_10 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 10, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 103:
+ {
+ int LA218_11 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 11, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 93:
+ {
+ int LA218_12 = input.LA(2);
+
+ if ( (synpred242_Java()) ) {
+ alt218=1;
+ }
+ else if ( (synpred243_Java()) ) {
+ alt218=2;
+ }
+ else if ( (synpred244_Java()) ) {
+ alt218=3;
+ }
+ else if ( (synpred245_Java()) ) {
+ alt218=4;
+ }
+ else if ( (synpred246_Java()) ) {
+ alt218=5;
+ }
+ else if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 12, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 64:
+ {
+ alt218=1;
+ }
+ break;
+ case 81:
+ {
+ alt218=2;
+ }
+ break;
+ case 70:
+ {
+ alt218=3;
+ }
+ break;
+ case 105:
+ {
+ alt218=5;
+ }
+ break;
+ case 43:
+ {
+ int LA218_17 = input.LA(2);
+
+ if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 17, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA218_18 = input.LA(2);
+
+ if ( (synpred247_Java()) ) {
+ alt218=6;
+ }
+ else if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 18, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 102:
+ {
+ int LA218_19 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 19, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 58:
+ {
+ int LA218_20 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 20, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 63:
+ {
+ int LA218_21 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 21, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 60:
+ {
+ int LA218_22 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 22, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 91:
+ {
+ int LA218_23 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 23, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA218_24 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 24, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 82:
+ {
+ int LA218_25 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 25, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 74:
+ {
+ int LA218_26 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 26, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 68:
+ {
+ int LA218_27 = input.LA(2);
+
+ if ( (synpred248_Java()) ) {
+ alt218=7;
+ }
+ else if ( (synpred249_Java()) ) {
+ alt218=8;
+ }
+ else if ( (synpred250_Java()) ) {
+ alt218=9;
+ }
+ else if ( (synpred251_Java()) ) {
+ alt218=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 27, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 42:
+ {
+ alt218=11;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 218, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt218) {
+ case 1 :
+ // Java.g:36908:2: c0= parse_org_emftext_language_java_classifiers_Class
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_parse_org_emftext_language_java_members_Member22759);
+ c0=parse_org_emftext_language_java_classifiers_Class();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36909:4: c1= parse_org_emftext_language_java_classifiers_Interface
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_parse_org_emftext_language_java_members_Member22769);
+ c1=parse_org_emftext_language_java_classifiers_Interface();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36910:4: c2= parse_org_emftext_language_java_classifiers_Enumeration
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_parse_org_emftext_language_java_members_Member22779);
+ c2=parse_org_emftext_language_java_classifiers_Enumeration();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36911:4: c3= parse_org_emftext_language_java_classifiers_Annotation
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_parse_org_emftext_language_java_members_Member22789);
+ c3=parse_org_emftext_language_java_classifiers_Annotation();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:36912:4: c4= parse_org_emftext_language_java_statements_Block
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Block_in_parse_org_emftext_language_java_members_Member22799);
+ c4=parse_org_emftext_language_java_statements_Block();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:36913:4: c5= parse_org_emftext_language_java_members_Constructor
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Constructor_in_parse_org_emftext_language_java_members_Member22809);
+ c5=parse_org_emftext_language_java_members_Constructor();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:36914:4: c6= parse_org_emftext_language_java_members_InterfaceMethod
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_InterfaceMethod_in_parse_org_emftext_language_java_members_Member22819);
+ c6=parse_org_emftext_language_java_members_InterfaceMethod();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:36915:4: c7= parse_org_emftext_language_java_members_ClassMethod
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_ClassMethod_in_parse_org_emftext_language_java_members_Member22829);
+ c7=parse_org_emftext_language_java_members_ClassMethod();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:36916:4: c8= parse_org_emftext_language_java_annotations_AnnotationAttribute
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttribute_in_parse_org_emftext_language_java_members_Member22839);
+ c8=parse_org_emftext_language_java_annotations_AnnotationAttribute();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:36917:4: c9= parse_org_emftext_language_java_members_Field
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Field_in_parse_org_emftext_language_java_members_Member22849);
+ c9=parse_org_emftext_language_java_members_Field();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:36918:4: c10= parse_org_emftext_language_java_members_EmptyMember
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_EmptyMember_in_parse_org_emftext_language_java_members_Member22859);
+ c10=parse_org_emftext_language_java_members_EmptyMember();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 160, parse_org_emftext_language_java_members_Member_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_members_Member"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_annotations_AnnotationParameter"
+ // Java.g:36922:1: parse_org_emftext_language_java_annotations_AnnotationParameter returns [org.emftext.language.java.annotations.AnnotationParameter element = null] : (c0= parse_org_emftext_language_java_annotations_SingleAnnotationParameter |c1= parse_org_emftext_language_java_annotations_AnnotationParameterList );
+ public final org.emftext.language.java.annotations.AnnotationParameter parse_org_emftext_language_java_annotations_AnnotationParameter() throws RecognitionException {
+ org.emftext.language.java.annotations.AnnotationParameter element = null;
+
+ int parse_org_emftext_language_java_annotations_AnnotationParameter_StartIndex = input.index();
+
+ org.emftext.language.java.annotations.SingleAnnotationParameter c0 =null;
+
+ org.emftext.language.java.annotations.AnnotationParameterList c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 161) ) { return element; }
+
+ // Java.g:36923:2: (c0= parse_org_emftext_language_java_annotations_SingleAnnotationParameter |c1= parse_org_emftext_language_java_annotations_AnnotationParameterList )
+ int alt219=2;
+ int LA219_0 = input.LA(1);
+
+ if ( (LA219_0==26) ) {
+ switch ( input.LA(2) ) {
+ case BOOLEAN_LITERAL:
+ case CHARACTER_LITERAL:
+ case DECIMAL_DOUBLE_LITERAL:
+ case DECIMAL_FLOAT_LITERAL:
+ case DECIMAL_INTEGER_LITERAL:
+ case DECIMAL_LONG_LITERAL:
+ case HEX_DOUBLE_LITERAL:
+ case HEX_FLOAT_LITERAL:
+ case HEX_INTEGER_LITERAL:
+ case HEX_LONG_LITERAL:
+ case OCTAL_INTEGER_LITERAL:
+ case OCTAL_LONG_LITERAL:
+ case STRING_LITERAL:
+ case 21:
+ case 26:
+ case 30:
+ case 31:
+ case 34:
+ case 35:
+ case 43:
+ case 48:
+ case 58:
+ case 60:
+ case 63:
+ case 64:
+ case 68:
+ case 74:
+ case 80:
+ case 82:
+ case 84:
+ case 85:
+ case 91:
+ case 94:
+ case 97:
+ case 102:
+ case 105:
+ case 110:
+ {
+ alt219=1;
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA219_3 = input.LA(3);
+
+ if ( ((LA219_3 >= 22 && LA219_3 <= 24)||(LA219_3 >= 26 && LA219_3 <= 28)||(LA219_3 >= 30 && LA219_3 <= 31)||(LA219_3 >= 34 && LA219_3 <= 35)||LA219_3==37||LA219_3==39||LA219_3==43||(LA219_3 >= 45 && LA219_3 <= 47)||LA219_3==49||LA219_3==51||LA219_3==54||LA219_3==79||LA219_3==106||LA219_3==108) ) {
+ alt219=1;
+ }
+ else if ( (LA219_3==44) ) {
+ alt219=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 219, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 27:
+ {
+ alt219=2;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 219, 1, input);
+
+ throw nvae;
+
+ }
+
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 219, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt219) {
+ case 1 :
+ // Java.g:36924:2: c0= parse_org_emftext_language_java_annotations_SingleAnnotationParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_SingleAnnotationParameter_in_parse_org_emftext_language_java_annotations_AnnotationParameter22880);
+ c0=parse_org_emftext_language_java_annotations_SingleAnnotationParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36925:4: c1= parse_org_emftext_language_java_annotations_AnnotationParameterList
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationParameterList_in_parse_org_emftext_language_java_annotations_AnnotationParameter22890);
+ c1=parse_org_emftext_language_java_annotations_AnnotationParameterList();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 161, parse_org_emftext_language_java_annotations_AnnotationParameter_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_annotations_AnnotationParameter"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_modifiers_Modifier"
+ // Java.g:36929:1: parse_org_emftext_language_java_modifiers_Modifier returns [org.emftext.language.java.modifiers.Modifier element = null] : (c0= parse_org_emftext_language_java_modifiers_Public |c1= parse_org_emftext_language_java_modifiers_Abstract |c2= parse_org_emftext_language_java_modifiers_Protected |c3= parse_org_emftext_language_java_modifiers_Private |c4= parse_org_emftext_language_java_modifiers_Final |c5= parse_org_emftext_language_java_modifiers_Static |c6= parse_org_emftext_language_java_modifiers_Native |c7= parse_org_emftext_language_java_modifiers_Synchronized |c8= parse_org_emftext_language_java_modifiers_Transient |c9= parse_org_emftext_language_java_modifiers_Volatile |c10= parse_org_emftext_language_java_modifiers_Strictfp );
+ public final org.emftext.language.java.modifiers.Modifier parse_org_emftext_language_java_modifiers_Modifier() throws RecognitionException {
+ org.emftext.language.java.modifiers.Modifier element = null;
+
+ int parse_org_emftext_language_java_modifiers_Modifier_StartIndex = input.index();
+
+ org.emftext.language.java.modifiers.Public c0 =null;
+
+ org.emftext.language.java.modifiers.Abstract c1 =null;
+
+ org.emftext.language.java.modifiers.Protected c2 =null;
+
+ org.emftext.language.java.modifiers.Private c3 =null;
+
+ org.emftext.language.java.modifiers.Final c4 =null;
+
+ org.emftext.language.java.modifiers.Static c5 =null;
+
+ org.emftext.language.java.modifiers.Native c6 =null;
+
+ org.emftext.language.java.modifiers.Synchronized c7 =null;
+
+ org.emftext.language.java.modifiers.Transient c8 =null;
+
+ org.emftext.language.java.modifiers.Volatile c9 =null;
+
+ org.emftext.language.java.modifiers.Strictfp c10 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 162) ) { return element; }
+
+ // Java.g:36930:2: (c0= parse_org_emftext_language_java_modifiers_Public |c1= parse_org_emftext_language_java_modifiers_Abstract |c2= parse_org_emftext_language_java_modifiers_Protected |c3= parse_org_emftext_language_java_modifiers_Private |c4= parse_org_emftext_language_java_modifiers_Final |c5= parse_org_emftext_language_java_modifiers_Static |c6= parse_org_emftext_language_java_modifiers_Native |c7= parse_org_emftext_language_java_modifiers_Synchronized |c8= parse_org_emftext_language_java_modifiers_Transient |c9= parse_org_emftext_language_java_modifiers_Volatile |c10= parse_org_emftext_language_java_modifiers_Strictfp )
+ int alt220=11;
+ switch ( input.LA(1) ) {
+ case 89:
+ {
+ alt220=1;
+ }
+ break;
+ case 56:
+ {
+ alt220=2;
+ }
+ break;
+ case 88:
+ {
+ alt220=3;
+ }
+ break;
+ case 87:
+ {
+ alt220=4;
+ }
+ break;
+ case 72:
+ {
+ alt220=5;
+ }
+ break;
+ case 92:
+ {
+ alt220=6;
+ }
+ break;
+ case 83:
+ {
+ alt220=7;
+ }
+ break;
+ case 96:
+ {
+ alt220=8;
+ }
+ break;
+ case 100:
+ {
+ alt220=9;
+ }
+ break;
+ case 103:
+ {
+ alt220=10;
+ }
+ break;
+ case 93:
+ {
+ alt220=11;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 220, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt220) {
+ case 1 :
+ // Java.g:36931:2: c0= parse_org_emftext_language_java_modifiers_Public
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Public_in_parse_org_emftext_language_java_modifiers_Modifier22911);
+ c0=parse_org_emftext_language_java_modifiers_Public();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36932:4: c1= parse_org_emftext_language_java_modifiers_Abstract
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Abstract_in_parse_org_emftext_language_java_modifiers_Modifier22921);
+ c1=parse_org_emftext_language_java_modifiers_Abstract();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36933:4: c2= parse_org_emftext_language_java_modifiers_Protected
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Protected_in_parse_org_emftext_language_java_modifiers_Modifier22931);
+ c2=parse_org_emftext_language_java_modifiers_Protected();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36934:4: c3= parse_org_emftext_language_java_modifiers_Private
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Private_in_parse_org_emftext_language_java_modifiers_Modifier22941);
+ c3=parse_org_emftext_language_java_modifiers_Private();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:36935:4: c4= parse_org_emftext_language_java_modifiers_Final
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Final_in_parse_org_emftext_language_java_modifiers_Modifier22951);
+ c4=parse_org_emftext_language_java_modifiers_Final();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:36936:4: c5= parse_org_emftext_language_java_modifiers_Static
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_modifiers_Modifier22961);
+ c5=parse_org_emftext_language_java_modifiers_Static();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:36937:4: c6= parse_org_emftext_language_java_modifiers_Native
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Native_in_parse_org_emftext_language_java_modifiers_Modifier22971);
+ c6=parse_org_emftext_language_java_modifiers_Native();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:36938:4: c7= parse_org_emftext_language_java_modifiers_Synchronized
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Synchronized_in_parse_org_emftext_language_java_modifiers_Modifier22981);
+ c7=parse_org_emftext_language_java_modifiers_Synchronized();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:36939:4: c8= parse_org_emftext_language_java_modifiers_Transient
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Transient_in_parse_org_emftext_language_java_modifiers_Modifier22991);
+ c8=parse_org_emftext_language_java_modifiers_Transient();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:36940:4: c9= parse_org_emftext_language_java_modifiers_Volatile
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Volatile_in_parse_org_emftext_language_java_modifiers_Modifier23001);
+ c9=parse_org_emftext_language_java_modifiers_Volatile();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:36941:4: c10= parse_org_emftext_language_java_modifiers_Strictfp
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_Strictfp_in_parse_org_emftext_language_java_modifiers_Modifier23011);
+ c10=parse_org_emftext_language_java_modifiers_Strictfp();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 162, parse_org_emftext_language_java_modifiers_Modifier_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_modifiers_Modifier"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_Statement"
+ // Java.g:36945:1: parse_org_emftext_language_java_statements_Statement returns [org.emftext.language.java.statements.Statement element = null] : (c0= parse_org_emftext_language_java_classifiers_Class |c1= parse_org_emftext_language_java_classifiers_Interface |c2= parse_org_emftext_language_java_classifiers_Enumeration |c3= parse_org_emftext_language_java_classifiers_Annotation |c4= parse_org_emftext_language_java_statements_Block |c5= parse_org_emftext_language_java_statements_LocalVariableStatement |c6= parse_org_emftext_language_java_statements_Assert |c7= parse_org_emftext_language_java_statements_Condition |c8= parse_org_emftext_language_java_statements_ForLoop |c9= parse_org_emftext_language_java_statements_ForEachLoop |c10= parse_org_emftext_language_java_statements_WhileLoop |c11= parse_org_emftext_language_java_statements_DoWhileLoop |c12= parse_org_emftext_language_java_statements_EmptyStatement |c13= parse_org_emftext_language_java_statements_SynchronizedBlock |c14= parse_org_emftext_language_java_statements_TryBlock |c15= parse_org_emftext_language_java_statements_Switch |c16= parse_org_emftext_language_java_statements_Return |c17= parse_org_emftext_language_java_statements_Throw |c18= parse_org_emftext_language_java_statements_Break |c19= parse_org_emftext_language_java_statements_Continue |c20= parse_org_emftext_language_java_statements_JumpLabel |c21= parse_org_emftext_language_java_statements_ExpressionStatement );
+ public final org.emftext.language.java.statements.Statement parse_org_emftext_language_java_statements_Statement() throws RecognitionException {
+ org.emftext.language.java.statements.Statement element = null;
+
+ int parse_org_emftext_language_java_statements_Statement_StartIndex = input.index();
+
+ org.emftext.language.java.classifiers.Class c0 =null;
+
+ org.emftext.language.java.classifiers.Interface c1 =null;
+
+ org.emftext.language.java.classifiers.Enumeration c2 =null;
+
+ org.emftext.language.java.classifiers.Annotation c3 =null;
+
+ org.emftext.language.java.statements.Block c4 =null;
+
+ org.emftext.language.java.statements.LocalVariableStatement c5 =null;
+
+ org.emftext.language.java.statements.Assert c6 =null;
+
+ org.emftext.language.java.statements.Condition c7 =null;
+
+ org.emftext.language.java.statements.ForLoop c8 =null;
+
+ org.emftext.language.java.statements.ForEachLoop c9 =null;
+
+ org.emftext.language.java.statements.WhileLoop c10 =null;
+
+ org.emftext.language.java.statements.DoWhileLoop c11 =null;
+
+ org.emftext.language.java.statements.EmptyStatement c12 =null;
+
+ org.emftext.language.java.statements.SynchronizedBlock c13 =null;
+
+ org.emftext.language.java.statements.TryBlock c14 =null;
+
+ org.emftext.language.java.statements.Switch c15 =null;
+
+ org.emftext.language.java.statements.Return c16 =null;
+
+ org.emftext.language.java.statements.Throw c17 =null;
+
+ org.emftext.language.java.statements.Break c18 =null;
+
+ org.emftext.language.java.statements.Continue c19 =null;
+
+ org.emftext.language.java.statements.JumpLabel c20 =null;
+
+ org.emftext.language.java.statements.ExpressionStatement c21 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 163) ) { return element; }
+
+ // Java.g:36946:2: (c0= parse_org_emftext_language_java_classifiers_Class |c1= parse_org_emftext_language_java_classifiers_Interface |c2= parse_org_emftext_language_java_classifiers_Enumeration |c3= parse_org_emftext_language_java_classifiers_Annotation |c4= parse_org_emftext_language_java_statements_Block |c5= parse_org_emftext_language_java_statements_LocalVariableStatement |c6= parse_org_emftext_language_java_statements_Assert |c7= parse_org_emftext_language_java_statements_Condition |c8= parse_org_emftext_language_java_statements_ForLoop |c9= parse_org_emftext_language_java_statements_ForEachLoop |c10= parse_org_emftext_language_java_statements_WhileLoop |c11= parse_org_emftext_language_java_statements_DoWhileLoop |c12= parse_org_emftext_language_java_statements_EmptyStatement |c13= parse_org_emftext_language_java_statements_SynchronizedBlock |c14= parse_org_emftext_language_java_statements_TryBlock |c15= parse_org_emftext_language_java_statements_Switch |c16= parse_org_emftext_language_java_statements_Return |c17= parse_org_emftext_language_java_statements_Throw |c18= parse_org_emftext_language_java_statements_Break |c19= parse_org_emftext_language_java_statements_Continue |c20= parse_org_emftext_language_java_statements_JumpLabel |c21= parse_org_emftext_language_java_statements_ExpressionStatement )
+ int alt221=22;
+ alt221 = dfa221.predict(input);
+ switch (alt221) {
+ case 1 :
+ // Java.g:36947:2: c0= parse_org_emftext_language_java_classifiers_Class
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_parse_org_emftext_language_java_statements_Statement23032);
+ c0=parse_org_emftext_language_java_classifiers_Class();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36948:4: c1= parse_org_emftext_language_java_classifiers_Interface
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_parse_org_emftext_language_java_statements_Statement23042);
+ c1=parse_org_emftext_language_java_classifiers_Interface();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36949:4: c2= parse_org_emftext_language_java_classifiers_Enumeration
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_parse_org_emftext_language_java_statements_Statement23052);
+ c2=parse_org_emftext_language_java_classifiers_Enumeration();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36950:4: c3= parse_org_emftext_language_java_classifiers_Annotation
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_parse_org_emftext_language_java_statements_Statement23062);
+ c3=parse_org_emftext_language_java_classifiers_Annotation();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:36951:4: c4= parse_org_emftext_language_java_statements_Block
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Block_in_parse_org_emftext_language_java_statements_Statement23072);
+ c4=parse_org_emftext_language_java_statements_Block();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:36952:4: c5= parse_org_emftext_language_java_statements_LocalVariableStatement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_LocalVariableStatement_in_parse_org_emftext_language_java_statements_Statement23082);
+ c5=parse_org_emftext_language_java_statements_LocalVariableStatement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:36953:4: c6= parse_org_emftext_language_java_statements_Assert
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Assert_in_parse_org_emftext_language_java_statements_Statement23092);
+ c6=parse_org_emftext_language_java_statements_Assert();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:36954:4: c7= parse_org_emftext_language_java_statements_Condition
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Condition_in_parse_org_emftext_language_java_statements_Statement23102);
+ c7=parse_org_emftext_language_java_statements_Condition();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:36955:4: c8= parse_org_emftext_language_java_statements_ForLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_ForLoop_in_parse_org_emftext_language_java_statements_Statement23112);
+ c8=parse_org_emftext_language_java_statements_ForLoop();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:36956:4: c9= parse_org_emftext_language_java_statements_ForEachLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_ForEachLoop_in_parse_org_emftext_language_java_statements_Statement23122);
+ c9=parse_org_emftext_language_java_statements_ForEachLoop();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:36957:4: c10= parse_org_emftext_language_java_statements_WhileLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_WhileLoop_in_parse_org_emftext_language_java_statements_Statement23132);
+ c10=parse_org_emftext_language_java_statements_WhileLoop();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 12 :
+ // Java.g:36958:4: c11= parse_org_emftext_language_java_statements_DoWhileLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_DoWhileLoop_in_parse_org_emftext_language_java_statements_Statement23142);
+ c11=parse_org_emftext_language_java_statements_DoWhileLoop();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c11; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 13 :
+ // Java.g:36959:4: c12= parse_org_emftext_language_java_statements_EmptyStatement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_EmptyStatement_in_parse_org_emftext_language_java_statements_Statement23152);
+ c12=parse_org_emftext_language_java_statements_EmptyStatement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c12; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 14 :
+ // Java.g:36960:4: c13= parse_org_emftext_language_java_statements_SynchronizedBlock
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_SynchronizedBlock_in_parse_org_emftext_language_java_statements_Statement23162);
+ c13=parse_org_emftext_language_java_statements_SynchronizedBlock();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c13; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 15 :
+ // Java.g:36961:4: c14= parse_org_emftext_language_java_statements_TryBlock
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_TryBlock_in_parse_org_emftext_language_java_statements_Statement23172);
+ c14=parse_org_emftext_language_java_statements_TryBlock();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c14; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 16 :
+ // Java.g:36962:4: c15= parse_org_emftext_language_java_statements_Switch
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Switch_in_parse_org_emftext_language_java_statements_Statement23182);
+ c15=parse_org_emftext_language_java_statements_Switch();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c15; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 17 :
+ // Java.g:36963:4: c16= parse_org_emftext_language_java_statements_Return
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Return_in_parse_org_emftext_language_java_statements_Statement23192);
+ c16=parse_org_emftext_language_java_statements_Return();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c16; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 18 :
+ // Java.g:36964:4: c17= parse_org_emftext_language_java_statements_Throw
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Throw_in_parse_org_emftext_language_java_statements_Statement23202);
+ c17=parse_org_emftext_language_java_statements_Throw();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c17; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 19 :
+ // Java.g:36965:4: c18= parse_org_emftext_language_java_statements_Break
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Break_in_parse_org_emftext_language_java_statements_Statement23212);
+ c18=parse_org_emftext_language_java_statements_Break();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c18; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 20 :
+ // Java.g:36966:4: c19= parse_org_emftext_language_java_statements_Continue
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Continue_in_parse_org_emftext_language_java_statements_Statement23222);
+ c19=parse_org_emftext_language_java_statements_Continue();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c19; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 21 :
+ // Java.g:36967:4: c20= parse_org_emftext_language_java_statements_JumpLabel
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_JumpLabel_in_parse_org_emftext_language_java_statements_Statement23232);
+ c20=parse_org_emftext_language_java_statements_JumpLabel();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c20; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 22 :
+ // Java.g:36968:4: c21= parse_org_emftext_language_java_statements_ExpressionStatement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_ExpressionStatement_in_parse_org_emftext_language_java_statements_Statement23242);
+ c21=parse_org_emftext_language_java_statements_ExpressionStatement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c21; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 163, parse_org_emftext_language_java_statements_Statement_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_Statement"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_parameters_Parameter"
+ // Java.g:36972:1: parse_org_emftext_language_java_parameters_Parameter returns [org.emftext.language.java.parameters.Parameter element = null] : (c0= parse_org_emftext_language_java_parameters_OrdinaryParameter |c1= parse_org_emftext_language_java_parameters_VariableLengthParameter );
+ public final org.emftext.language.java.parameters.Parameter parse_org_emftext_language_java_parameters_Parameter() throws RecognitionException {
+ org.emftext.language.java.parameters.Parameter element = null;
+
+ int parse_org_emftext_language_java_parameters_Parameter_StartIndex = input.index();
+
+ org.emftext.language.java.parameters.OrdinaryParameter c0 =null;
+
+ org.emftext.language.java.parameters.VariableLengthParameter c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 164) ) { return element; }
+
+ // Java.g:36973:2: (c0= parse_org_emftext_language_java_parameters_OrdinaryParameter |c1= parse_org_emftext_language_java_parameters_VariableLengthParameter )
+ int alt222=2;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ int LA222_1 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 89:
+ {
+ int LA222_2 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 56:
+ {
+ int LA222_3 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 88:
+ {
+ int LA222_4 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 87:
+ {
+ int LA222_5 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 5, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 72:
+ {
+ int LA222_6 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 6, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 92:
+ {
+ int LA222_7 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 7, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 83:
+ {
+ int LA222_8 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 8, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 96:
+ {
+ int LA222_9 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 9, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 100:
+ {
+ int LA222_10 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 10, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 103:
+ {
+ int LA222_11 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 11, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 93:
+ {
+ int LA222_12 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 12, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA222_13 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 13, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 102:
+ {
+ int LA222_14 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 14, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 58:
+ {
+ int LA222_15 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 15, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 63:
+ {
+ int LA222_16 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 16, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 60:
+ {
+ int LA222_17 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 17, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 91:
+ {
+ int LA222_18 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 18, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA222_19 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 19, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 82:
+ {
+ int LA222_20 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 20, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 74:
+ {
+ int LA222_21 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 21, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 68:
+ {
+ int LA222_22 = input.LA(2);
+
+ if ( (synpred284_Java()) ) {
+ alt222=1;
+ }
+ else if ( (true) ) {
+ alt222=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 22, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 222, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt222) {
+ case 1 :
+ // Java.g:36974:2: c0= parse_org_emftext_language_java_parameters_OrdinaryParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_parse_org_emftext_language_java_parameters_Parameter23263);
+ c0=parse_org_emftext_language_java_parameters_OrdinaryParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36975:4: c1= parse_org_emftext_language_java_parameters_VariableLengthParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_VariableLengthParameter_in_parse_org_emftext_language_java_parameters_Parameter23273);
+ c1=parse_org_emftext_language_java_parameters_VariableLengthParameter();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 164, parse_org_emftext_language_java_parameters_Parameter_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_parameters_Parameter"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_generics_TypeArgument"
+ // Java.g:36979:1: parse_org_emftext_language_java_generics_TypeArgument returns [org.emftext.language.java.generics.TypeArgument element = null] : (c0= parse_org_emftext_language_java_generics_QualifiedTypeArgument |c1= parse_org_emftext_language_java_generics_UnknownTypeArgument |c2= parse_org_emftext_language_java_generics_ExtendsTypeArgument |c3= parse_org_emftext_language_java_generics_SuperTypeArgument );
+ public final org.emftext.language.java.generics.TypeArgument parse_org_emftext_language_java_generics_TypeArgument() throws RecognitionException {
+ org.emftext.language.java.generics.TypeArgument element = null;
+
+ int parse_org_emftext_language_java_generics_TypeArgument_StartIndex = input.index();
+
+ org.emftext.language.java.generics.QualifiedTypeArgument c0 =null;
+
+ org.emftext.language.java.generics.UnknownTypeArgument c1 =null;
+
+ org.emftext.language.java.generics.ExtendsTypeArgument c2 =null;
+
+ org.emftext.language.java.generics.SuperTypeArgument c3 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 165) ) { return element; }
+
+ // Java.g:36980:2: (c0= parse_org_emftext_language_java_generics_QualifiedTypeArgument |c1= parse_org_emftext_language_java_generics_UnknownTypeArgument |c2= parse_org_emftext_language_java_generics_ExtendsTypeArgument |c3= parse_org_emftext_language_java_generics_SuperTypeArgument )
+ int alt223=4;
+ int LA223_0 = input.LA(1);
+
+ if ( (LA223_0==IDENTIFIER||LA223_0==58||LA223_0==60||LA223_0==63||LA223_0==68||LA223_0==74||LA223_0==80||LA223_0==82||LA223_0==91||LA223_0==102) ) {
+ alt223=1;
+ }
+ else if ( (LA223_0==47) ) {
+ switch ( input.LA(2) ) {
+ case EOF:
+ case 33:
+ case 46:
+ {
+ alt223=2;
+ }
+ break;
+ case 71:
+ {
+ alt223=3;
+ }
+ break;
+ case 94:
+ {
+ alt223=4;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 223, 2, input);
+
+ throw nvae;
+
+ }
+
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 223, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt223) {
+ case 1 :
+ // Java.g:36981:2: c0= parse_org_emftext_language_java_generics_QualifiedTypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_QualifiedTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23294);
+ c0=parse_org_emftext_language_java_generics_QualifiedTypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36982:4: c1= parse_org_emftext_language_java_generics_UnknownTypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_UnknownTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23304);
+ c1=parse_org_emftext_language_java_generics_UnknownTypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36983:4: c2= parse_org_emftext_language_java_generics_ExtendsTypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_ExtendsTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23314);
+ c2=parse_org_emftext_language_java_generics_ExtendsTypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36984:4: c3= parse_org_emftext_language_java_generics_SuperTypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_SuperTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23324);
+ c3=parse_org_emftext_language_java_generics_SuperTypeArgument();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 165, parse_org_emftext_language_java_generics_TypeArgument_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_generics_TypeArgument"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_references_Reference"
+ // Java.g:36988:1: parse_org_emftext_language_java_references_Reference returns [org.emftext.language.java.references.Reference element = null] : (c0= parse_org_emftext_language_java_annotations_AnnotationInstance |c1= parse_org_emftext_language_java_instantiations_NewConstructorCall |c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall |c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped |c4= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped |c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize |c6= parse_org_emftext_language_java_references_MethodCall |c7= parse_org_emftext_language_java_references_IdentifierReference |c8= parse_org_emftext_language_java_references_ReflectiveClassReference |c9= parse_org_emftext_language_java_references_SelfReference |c10= parse_org_emftext_language_java_references_PrimitiveTypeReference |c11= parse_org_emftext_language_java_references_StringReference |c12= parse_org_emftext_language_java_expressions_NestedExpression );
+ public final org.emftext.language.java.references.Reference parse_org_emftext_language_java_references_Reference() throws RecognitionException {
+ org.emftext.language.java.references.Reference element = null;
+
+ int parse_org_emftext_language_java_references_Reference_StartIndex = input.index();
+
+ org.emftext.language.java.annotations.AnnotationInstance c0 =null;
+
+ org.emftext.language.java.instantiations.NewConstructorCall c1 =null;
+
+ org.emftext.language.java.instantiations.ExplicitConstructorCall c2 =null;
+
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped c3 =null;
+
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped c4 =null;
+
+ org.emftext.language.java.arrays.ArrayInstantiationBySize c5 =null;
+
+ org.emftext.language.java.references.MethodCall c6 =null;
+
+ org.emftext.language.java.references.IdentifierReference c7 =null;
+
+ org.emftext.language.java.references.ReflectiveClassReference c8 =null;
+
+ org.emftext.language.java.references.SelfReference c9 =null;
+
+ org.emftext.language.java.references.PrimitiveTypeReference c10 =null;
+
+ org.emftext.language.java.references.StringReference c11 =null;
+
+ org.emftext.language.java.expressions.NestedExpression c12 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 166) ) { return element; }
+
+ // Java.g:36989:2: (c0= parse_org_emftext_language_java_annotations_AnnotationInstance |c1= parse_org_emftext_language_java_instantiations_NewConstructorCall |c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall |c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped |c4= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped |c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize |c6= parse_org_emftext_language_java_references_MethodCall |c7= parse_org_emftext_language_java_references_IdentifierReference |c8= parse_org_emftext_language_java_references_ReflectiveClassReference |c9= parse_org_emftext_language_java_references_SelfReference |c10= parse_org_emftext_language_java_references_PrimitiveTypeReference |c11= parse_org_emftext_language_java_references_StringReference |c12= parse_org_emftext_language_java_expressions_NestedExpression )
+ int alt224=13;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ alt224=1;
+ }
+ break;
+ case 84:
+ {
+ int LA224_2 = input.LA(2);
+
+ if ( (synpred289_Java()) ) {
+ alt224=2;
+ }
+ else if ( (synpred291_Java()) ) {
+ alt224=4;
+ }
+ else if ( (synpred293_Java()) ) {
+ alt224=6;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 224, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 43:
+ {
+ int LA224_3 = input.LA(2);
+
+ if ( (synpred290_Java()) ) {
+ alt224=3;
+ }
+ else if ( (synpred294_Java()) ) {
+ alt224=7;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 224, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 97:
+ {
+ int LA224_4 = input.LA(2);
+
+ if ( (synpred290_Java()) ) {
+ alt224=3;
+ }
+ else if ( (synpred297_Java()) ) {
+ alt224=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 224, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 94:
+ {
+ int LA224_5 = input.LA(2);
+
+ if ( (synpred290_Java()) ) {
+ alt224=3;
+ }
+ else if ( (synpred297_Java()) ) {
+ alt224=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 224, 5, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 105:
+ {
+ alt224=5;
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA224_7 = input.LA(2);
+
+ if ( (synpred294_Java()) ) {
+ alt224=7;
+ }
+ else if ( (synpred295_Java()) ) {
+ alt224=8;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 224, 7, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 64:
+ {
+ alt224=9;
+ }
+ break;
+ case 58:
+ case 60:
+ case 63:
+ case 68:
+ case 74:
+ case 80:
+ case 82:
+ case 91:
+ case 102:
+ {
+ alt224=11;
+ }
+ break;
+ case STRING_LITERAL:
+ {
+ alt224=12;
+ }
+ break;
+ case 26:
+ {
+ alt224=13;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 224, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt224) {
+ case 1 :
+ // Java.g:36990:2: c0= parse_org_emftext_language_java_annotations_AnnotationInstance
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_references_Reference23345);
+ c0=parse_org_emftext_language_java_annotations_AnnotationInstance();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:36991:4: c1= parse_org_emftext_language_java_instantiations_NewConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_parse_org_emftext_language_java_references_Reference23355);
+ c1=parse_org_emftext_language_java_instantiations_NewConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:36992:4: c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_parse_org_emftext_language_java_references_Reference23365);
+ c2=parse_org_emftext_language_java_instantiations_ExplicitConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:36993:4: c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_parse_org_emftext_language_java_references_Reference23375);
+ c3=parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:36994:4: c4= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped_in_parse_org_emftext_language_java_references_Reference23385);
+ c4=parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:36995:4: c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_parse_org_emftext_language_java_references_Reference23395);
+ c5=parse_org_emftext_language_java_arrays_ArrayInstantiationBySize();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:36996:4: c6= parse_org_emftext_language_java_references_MethodCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_parse_org_emftext_language_java_references_Reference23405);
+ c6=parse_org_emftext_language_java_references_MethodCall();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:36997:4: c7= parse_org_emftext_language_java_references_IdentifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_parse_org_emftext_language_java_references_Reference23415);
+ c7=parse_org_emftext_language_java_references_IdentifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:36998:4: c8= parse_org_emftext_language_java_references_ReflectiveClassReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_ReflectiveClassReference_in_parse_org_emftext_language_java_references_Reference23425);
+ c8=parse_org_emftext_language_java_references_ReflectiveClassReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:36999:4: c9= parse_org_emftext_language_java_references_SelfReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_parse_org_emftext_language_java_references_Reference23435);
+ c9=parse_org_emftext_language_java_references_SelfReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:37000:4: c10= parse_org_emftext_language_java_references_PrimitiveTypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_PrimitiveTypeReference_in_parse_org_emftext_language_java_references_Reference23445);
+ c10=parse_org_emftext_language_java_references_PrimitiveTypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 12 :
+ // Java.g:37001:4: c11= parse_org_emftext_language_java_references_StringReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_StringReference_in_parse_org_emftext_language_java_references_Reference23455);
+ c11=parse_org_emftext_language_java_references_StringReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c11; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 13 :
+ // Java.g:37002:4: c12= parse_org_emftext_language_java_expressions_NestedExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_NestedExpression_in_parse_org_emftext_language_java_references_Reference23465);
+ c12=parse_org_emftext_language_java_expressions_NestedExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c12; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 166, parse_org_emftext_language_java_references_Reference_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_references_Reference"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_literals_Self"
+ // Java.g:37006:1: parse_org_emftext_language_java_literals_Self returns [org.emftext.language.java.literals.Self element = null] : (c0= parse_org_emftext_language_java_literals_This |c1= parse_org_emftext_language_java_literals_Super );
+ public final org.emftext.language.java.literals.Self parse_org_emftext_language_java_literals_Self() throws RecognitionException {
+ org.emftext.language.java.literals.Self element = null;
+
+ int parse_org_emftext_language_java_literals_Self_StartIndex = input.index();
+
+ org.emftext.language.java.literals.This c0 =null;
+
+ org.emftext.language.java.literals.Super c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 167) ) { return element; }
+
+ // Java.g:37007:2: (c0= parse_org_emftext_language_java_literals_This |c1= parse_org_emftext_language_java_literals_Super )
+ int alt225=2;
+ int LA225_0 = input.LA(1);
+
+ if ( (LA225_0==97) ) {
+ alt225=1;
+ }
+ else if ( (LA225_0==94) ) {
+ alt225=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 225, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt225) {
+ case 1 :
+ // Java.g:37008:2: c0= parse_org_emftext_language_java_literals_This
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_This_in_parse_org_emftext_language_java_literals_Self23486);
+ c0=parse_org_emftext_language_java_literals_This();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37009:4: c1= parse_org_emftext_language_java_literals_Super
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_Super_in_parse_org_emftext_language_java_literals_Self23496);
+ c1=parse_org_emftext_language_java_literals_Super();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 167, parse_org_emftext_language_java_literals_Self_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_literals_Self"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_types_PrimitiveType"
+ // Java.g:37013:1: parse_org_emftext_language_java_types_PrimitiveType returns [org.emftext.language.java.types.PrimitiveType element = null] : (c0= parse_org_emftext_language_java_types_Void |c1= parse_org_emftext_language_java_types_Boolean |c2= parse_org_emftext_language_java_types_Char |c3= parse_org_emftext_language_java_types_Byte |c4= parse_org_emftext_language_java_types_Short |c5= parse_org_emftext_language_java_types_Int |c6= parse_org_emftext_language_java_types_Long |c7= parse_org_emftext_language_java_types_Float |c8= parse_org_emftext_language_java_types_Double );
+ public final org.emftext.language.java.types.PrimitiveType parse_org_emftext_language_java_types_PrimitiveType() throws RecognitionException {
+ org.emftext.language.java.types.PrimitiveType element = null;
+
+ int parse_org_emftext_language_java_types_PrimitiveType_StartIndex = input.index();
+
+ org.emftext.language.java.types.Void c0 =null;
+
+ org.emftext.language.java.types.Boolean c1 =null;
+
+ org.emftext.language.java.types.Char c2 =null;
+
+ org.emftext.language.java.types.Byte c3 =null;
+
+ org.emftext.language.java.types.Short c4 =null;
+
+ org.emftext.language.java.types.Int c5 =null;
+
+ org.emftext.language.java.types.Long c6 =null;
+
+ org.emftext.language.java.types.Float c7 =null;
+
+ org.emftext.language.java.types.Double c8 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 168) ) { return element; }
+
+ // Java.g:37014:2: (c0= parse_org_emftext_language_java_types_Void |c1= parse_org_emftext_language_java_types_Boolean |c2= parse_org_emftext_language_java_types_Char |c3= parse_org_emftext_language_java_types_Byte |c4= parse_org_emftext_language_java_types_Short |c5= parse_org_emftext_language_java_types_Int |c6= parse_org_emftext_language_java_types_Long |c7= parse_org_emftext_language_java_types_Float |c8= parse_org_emftext_language_java_types_Double )
+ int alt226=9;
+ switch ( input.LA(1) ) {
+ case 102:
+ {
+ alt226=1;
+ }
+ break;
+ case 58:
+ {
+ alt226=2;
+ }
+ break;
+ case 63:
+ {
+ alt226=3;
+ }
+ break;
+ case 60:
+ {
+ alt226=4;
+ }
+ break;
+ case 91:
+ {
+ alt226=5;
+ }
+ break;
+ case 80:
+ {
+ alt226=6;
+ }
+ break;
+ case 82:
+ {
+ alt226=7;
+ }
+ break;
+ case 74:
+ {
+ alt226=8;
+ }
+ break;
+ case 68:
+ {
+ alt226=9;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 226, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt226) {
+ case 1 :
+ // Java.g:37015:2: c0= parse_org_emftext_language_java_types_Void
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Void_in_parse_org_emftext_language_java_types_PrimitiveType23517);
+ c0=parse_org_emftext_language_java_types_Void();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37016:4: c1= parse_org_emftext_language_java_types_Boolean
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Boolean_in_parse_org_emftext_language_java_types_PrimitiveType23527);
+ c1=parse_org_emftext_language_java_types_Boolean();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:37017:4: c2= parse_org_emftext_language_java_types_Char
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Char_in_parse_org_emftext_language_java_types_PrimitiveType23537);
+ c2=parse_org_emftext_language_java_types_Char();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:37018:4: c3= parse_org_emftext_language_java_types_Byte
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Byte_in_parse_org_emftext_language_java_types_PrimitiveType23547);
+ c3=parse_org_emftext_language_java_types_Byte();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:37019:4: c4= parse_org_emftext_language_java_types_Short
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Short_in_parse_org_emftext_language_java_types_PrimitiveType23557);
+ c4=parse_org_emftext_language_java_types_Short();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:37020:4: c5= parse_org_emftext_language_java_types_Int
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Int_in_parse_org_emftext_language_java_types_PrimitiveType23567);
+ c5=parse_org_emftext_language_java_types_Int();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:37021:4: c6= parse_org_emftext_language_java_types_Long
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Long_in_parse_org_emftext_language_java_types_PrimitiveType23577);
+ c6=parse_org_emftext_language_java_types_Long();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:37022:4: c7= parse_org_emftext_language_java_types_Float
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Float_in_parse_org_emftext_language_java_types_PrimitiveType23587);
+ c7=parse_org_emftext_language_java_types_Float();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:37023:4: c8= parse_org_emftext_language_java_types_Double
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_Double_in_parse_org_emftext_language_java_types_PrimitiveType23597);
+ c8=parse_org_emftext_language_java_types_Double();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 168, parse_org_emftext_language_java_types_PrimitiveType_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_types_PrimitiveType"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_ForLoopInitializer"
+ // Java.g:37027:1: parse_org_emftext_language_java_statements_ForLoopInitializer returns [org.emftext.language.java.statements.ForLoopInitializer element = null] : (c0= parse_org_emftext_language_java_variables_LocalVariable |c1= parse_org_emftext_language_java_expressions_ExpressionList );
+ public final org.emftext.language.java.statements.ForLoopInitializer parse_org_emftext_language_java_statements_ForLoopInitializer() throws RecognitionException {
+ org.emftext.language.java.statements.ForLoopInitializer element = null;
+
+ int parse_org_emftext_language_java_statements_ForLoopInitializer_StartIndex = input.index();
+
+ org.emftext.language.java.variables.LocalVariable c0 =null;
+
+ org.emftext.language.java.expressions.ExpressionList c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 169) ) { return element; }
+
+ // Java.g:37028:2: (c0= parse_org_emftext_language_java_variables_LocalVariable |c1= parse_org_emftext_language_java_expressions_ExpressionList )
+ int alt227=2;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ int LA227_1 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 56:
+ case 72:
+ case 83:
+ case 87:
+ case 88:
+ case 89:
+ case 92:
+ case 93:
+ case 96:
+ case 100:
+ case 103:
+ {
+ alt227=1;
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA227_13 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 13, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 102:
+ {
+ int LA227_14 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 14, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 58:
+ {
+ int LA227_15 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 15, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 63:
+ {
+ int LA227_16 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 16, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 60:
+ {
+ int LA227_17 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 17, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 91:
+ {
+ int LA227_18 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 18, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA227_19 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 19, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 82:
+ {
+ int LA227_20 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 20, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 74:
+ {
+ int LA227_21 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 21, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 68:
+ {
+ int LA227_22 = input.LA(2);
+
+ if ( (synpred309_Java()) ) {
+ alt227=1;
+ }
+ else if ( (true) ) {
+ alt227=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 22, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case BOOLEAN_LITERAL:
+ case CHARACTER_LITERAL:
+ case DECIMAL_DOUBLE_LITERAL:
+ case DECIMAL_FLOAT_LITERAL:
+ case DECIMAL_INTEGER_LITERAL:
+ case DECIMAL_LONG_LITERAL:
+ case HEX_DOUBLE_LITERAL:
+ case HEX_FLOAT_LITERAL:
+ case HEX_INTEGER_LITERAL:
+ case HEX_LONG_LITERAL:
+ case OCTAL_INTEGER_LITERAL:
+ case OCTAL_LONG_LITERAL:
+ case STRING_LITERAL:
+ case 21:
+ case 26:
+ case 30:
+ case 31:
+ case 34:
+ case 35:
+ case 43:
+ case 64:
+ case 84:
+ case 85:
+ case 94:
+ case 97:
+ case 105:
+ case 110:
+ {
+ alt227=2;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 227, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt227) {
+ case 1 :
+ // Java.g:37029:2: c0= parse_org_emftext_language_java_variables_LocalVariable
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_variables_LocalVariable_in_parse_org_emftext_language_java_statements_ForLoopInitializer23618);
+ c0=parse_org_emftext_language_java_variables_LocalVariable();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37030:4: c1= parse_org_emftext_language_java_expressions_ExpressionList
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_ExpressionList_in_parse_org_emftext_language_java_statements_ForLoopInitializer23628);
+ c1=parse_org_emftext_language_java_expressions_ExpressionList();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 169, parse_org_emftext_language_java_statements_ForLoopInitializer_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_ForLoopInitializer"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_statements_SwitchCase"
+ // Java.g:37034:1: parse_org_emftext_language_java_statements_SwitchCase returns [org.emftext.language.java.statements.SwitchCase element = null] : (c0= parse_org_emftext_language_java_statements_NormalSwitchCase |c1= parse_org_emftext_language_java_statements_DefaultSwitchCase );
+ public final org.emftext.language.java.statements.SwitchCase parse_org_emftext_language_java_statements_SwitchCase() throws RecognitionException {
+ org.emftext.language.java.statements.SwitchCase element = null;
+
+ int parse_org_emftext_language_java_statements_SwitchCase_StartIndex = input.index();
+
+ org.emftext.language.java.statements.NormalSwitchCase c0 =null;
+
+ org.emftext.language.java.statements.DefaultSwitchCase c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 170) ) { return element; }
+
+ // Java.g:37035:2: (c0= parse_org_emftext_language_java_statements_NormalSwitchCase |c1= parse_org_emftext_language_java_statements_DefaultSwitchCase )
+ int alt228=2;
+ int LA228_0 = input.LA(1);
+
+ if ( (LA228_0==61) ) {
+ alt228=1;
+ }
+ else if ( (LA228_0==66) ) {
+ alt228=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 228, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt228) {
+ case 1 :
+ // Java.g:37036:2: c0= parse_org_emftext_language_java_statements_NormalSwitchCase
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_NormalSwitchCase_in_parse_org_emftext_language_java_statements_SwitchCase23649);
+ c0=parse_org_emftext_language_java_statements_NormalSwitchCase();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37037:4: c1= parse_org_emftext_language_java_statements_DefaultSwitchCase
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_DefaultSwitchCase_in_parse_org_emftext_language_java_statements_SwitchCase23659);
+ c1=parse_org_emftext_language_java_statements_DefaultSwitchCase();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 170, parse_org_emftext_language_java_statements_SwitchCase_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_statements_SwitchCase"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AssignmentOperator"
+ // Java.g:37041:1: parse_org_emftext_language_java_operators_AssignmentOperator returns [org.emftext.language.java.operators.AssignmentOperator element = null] : (c0= parse_org_emftext_language_java_operators_Assignment |c1= parse_org_emftext_language_java_operators_AssignmentPlus |c2= parse_org_emftext_language_java_operators_AssignmentMinus |c3= parse_org_emftext_language_java_operators_AssignmentMultiplication |c4= parse_org_emftext_language_java_operators_AssignmentDivision |c5= parse_org_emftext_language_java_operators_AssignmentAnd |c6= parse_org_emftext_language_java_operators_AssignmentOr |c7= parse_org_emftext_language_java_operators_AssignmentExclusiveOr |c8= parse_org_emftext_language_java_operators_AssignmentModulo |c9= parse_org_emftext_language_java_operators_AssignmentLeftShift |c10= parse_org_emftext_language_java_operators_AssignmentRightShift |c11= parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift );
+ public final org.emftext.language.java.operators.AssignmentOperator parse_org_emftext_language_java_operators_AssignmentOperator() throws RecognitionException {
+ org.emftext.language.java.operators.AssignmentOperator element = null;
+
+ int parse_org_emftext_language_java_operators_AssignmentOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.Assignment c0 =null;
+
+ org.emftext.language.java.operators.AssignmentPlus c1 =null;
+
+ org.emftext.language.java.operators.AssignmentMinus c2 =null;
+
+ org.emftext.language.java.operators.AssignmentMultiplication c3 =null;
+
+ org.emftext.language.java.operators.AssignmentDivision c4 =null;
+
+ org.emftext.language.java.operators.AssignmentAnd c5 =null;
+
+ org.emftext.language.java.operators.AssignmentOr c6 =null;
+
+ org.emftext.language.java.operators.AssignmentExclusiveOr c7 =null;
+
+ org.emftext.language.java.operators.AssignmentModulo c8 =null;
+
+ org.emftext.language.java.operators.AssignmentLeftShift c9 =null;
+
+ org.emftext.language.java.operators.AssignmentRightShift c10 =null;
+
+ org.emftext.language.java.operators.AssignmentUnsignedRightShift c11 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 171) ) { return element; }
+
+ // Java.g:37042:2: (c0= parse_org_emftext_language_java_operators_Assignment |c1= parse_org_emftext_language_java_operators_AssignmentPlus |c2= parse_org_emftext_language_java_operators_AssignmentMinus |c3= parse_org_emftext_language_java_operators_AssignmentMultiplication |c4= parse_org_emftext_language_java_operators_AssignmentDivision |c5= parse_org_emftext_language_java_operators_AssignmentAnd |c6= parse_org_emftext_language_java_operators_AssignmentOr |c7= parse_org_emftext_language_java_operators_AssignmentExclusiveOr |c8= parse_org_emftext_language_java_operators_AssignmentModulo |c9= parse_org_emftext_language_java_operators_AssignmentLeftShift |c10= parse_org_emftext_language_java_operators_AssignmentRightShift |c11= parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift )
+ int alt229=12;
+ switch ( input.LA(1) ) {
+ case 44:
+ {
+ alt229=1;
+ }
+ break;
+ case 32:
+ {
+ alt229=2;
+ }
+ break;
+ case 36:
+ {
+ alt229=3;
+ }
+ break;
+ case 29:
+ {
+ alt229=4;
+ }
+ break;
+ case 40:
+ {
+ alt229=5;
+ }
+ break;
+ case 25:
+ {
+ alt229=6;
+ }
+ break;
+ case 107:
+ {
+ alt229=7;
+ }
+ break;
+ case 55:
+ {
+ alt229=8;
+ }
+ break;
+ case 52:
+ {
+ alt229=9;
+ }
+ break;
+ case 43:
+ {
+ alt229=10;
+ }
+ break;
+ case 46:
+ {
+ int LA229_11 = input.LA(2);
+
+ if ( (LA229_11==46) ) {
+ int LA229_12 = input.LA(3);
+
+ if ( (LA229_12==44) ) {
+ alt229=11;
+ }
+ else if ( (LA229_12==46) ) {
+ alt229=12;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 229, 12, input);
+
+ throw nvae;
+
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 229, 11, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 229, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt229) {
+ case 1 :
+ // Java.g:37043:2: c0= parse_org_emftext_language_java_operators_Assignment
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Assignment_in_parse_org_emftext_language_java_operators_AssignmentOperator23680);
+ c0=parse_org_emftext_language_java_operators_Assignment();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37044:4: c1= parse_org_emftext_language_java_operators_AssignmentPlus
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentPlus_in_parse_org_emftext_language_java_operators_AssignmentOperator23690);
+ c1=parse_org_emftext_language_java_operators_AssignmentPlus();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:37045:4: c2= parse_org_emftext_language_java_operators_AssignmentMinus
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentMinus_in_parse_org_emftext_language_java_operators_AssignmentOperator23700);
+ c2=parse_org_emftext_language_java_operators_AssignmentMinus();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:37046:4: c3= parse_org_emftext_language_java_operators_AssignmentMultiplication
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentMultiplication_in_parse_org_emftext_language_java_operators_AssignmentOperator23710);
+ c3=parse_org_emftext_language_java_operators_AssignmentMultiplication();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:37047:4: c4= parse_org_emftext_language_java_operators_AssignmentDivision
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentDivision_in_parse_org_emftext_language_java_operators_AssignmentOperator23720);
+ c4=parse_org_emftext_language_java_operators_AssignmentDivision();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:37048:4: c5= parse_org_emftext_language_java_operators_AssignmentAnd
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentAnd_in_parse_org_emftext_language_java_operators_AssignmentOperator23730);
+ c5=parse_org_emftext_language_java_operators_AssignmentAnd();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:37049:4: c6= parse_org_emftext_language_java_operators_AssignmentOr
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentOr_in_parse_org_emftext_language_java_operators_AssignmentOperator23740);
+ c6=parse_org_emftext_language_java_operators_AssignmentOr();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:37050:4: c7= parse_org_emftext_language_java_operators_AssignmentExclusiveOr
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentExclusiveOr_in_parse_org_emftext_language_java_operators_AssignmentOperator23750);
+ c7=parse_org_emftext_language_java_operators_AssignmentExclusiveOr();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:37051:4: c8= parse_org_emftext_language_java_operators_AssignmentModulo
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentModulo_in_parse_org_emftext_language_java_operators_AssignmentOperator23760);
+ c8=parse_org_emftext_language_java_operators_AssignmentModulo();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:37052:4: c9= parse_org_emftext_language_java_operators_AssignmentLeftShift
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentLeftShift_in_parse_org_emftext_language_java_operators_AssignmentOperator23770);
+ c9=parse_org_emftext_language_java_operators_AssignmentLeftShift();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:37053:4: c10= parse_org_emftext_language_java_operators_AssignmentRightShift
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentRightShift_in_parse_org_emftext_language_java_operators_AssignmentOperator23780);
+ c10=parse_org_emftext_language_java_operators_AssignmentRightShift();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 12 :
+ // Java.g:37054:4: c11= parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift_in_parse_org_emftext_language_java_operators_AssignmentOperator23790);
+ c11=parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c11; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 171, parse_org_emftext_language_java_operators_AssignmentOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AssignmentOperator"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_EqualityOperator"
+ // Java.g:37058:1: parse_org_emftext_language_java_operators_EqualityOperator returns [org.emftext.language.java.operators.EqualityOperator element = null] : (c0= parse_org_emftext_language_java_operators_Equal |c1= parse_org_emftext_language_java_operators_NotEqual );
+ public final org.emftext.language.java.operators.EqualityOperator parse_org_emftext_language_java_operators_EqualityOperator() throws RecognitionException {
+ org.emftext.language.java.operators.EqualityOperator element = null;
+
+ int parse_org_emftext_language_java_operators_EqualityOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.Equal c0 =null;
+
+ org.emftext.language.java.operators.NotEqual c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 172) ) { return element; }
+
+ // Java.g:37059:2: (c0= parse_org_emftext_language_java_operators_Equal |c1= parse_org_emftext_language_java_operators_NotEqual )
+ int alt230=2;
+ int LA230_0 = input.LA(1);
+
+ if ( (LA230_0==45) ) {
+ alt230=1;
+ }
+ else if ( (LA230_0==22) ) {
+ alt230=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 230, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt230) {
+ case 1 :
+ // Java.g:37060:2: c0= parse_org_emftext_language_java_operators_Equal
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Equal_in_parse_org_emftext_language_java_operators_EqualityOperator23811);
+ c0=parse_org_emftext_language_java_operators_Equal();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37061:4: c1= parse_org_emftext_language_java_operators_NotEqual
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_NotEqual_in_parse_org_emftext_language_java_operators_EqualityOperator23821);
+ c1=parse_org_emftext_language_java_operators_NotEqual();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 172, parse_org_emftext_language_java_operators_EqualityOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_EqualityOperator"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_RelationOperator"
+ // Java.g:37065:1: parse_org_emftext_language_java_operators_RelationOperator returns [org.emftext.language.java.operators.RelationOperator element = null] : (c0= parse_org_emftext_language_java_operators_LessThan |c1= parse_org_emftext_language_java_operators_LessThanOrEqual |c2= parse_org_emftext_language_java_operators_GreaterThan |c3= parse_org_emftext_language_java_operators_GreaterThanOrEqual );
+ public final org.emftext.language.java.operators.RelationOperator parse_org_emftext_language_java_operators_RelationOperator() throws RecognitionException {
+ org.emftext.language.java.operators.RelationOperator element = null;
+
+ int parse_org_emftext_language_java_operators_RelationOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.LessThan c0 =null;
+
+ org.emftext.language.java.operators.LessThanOrEqual c1 =null;
+
+ org.emftext.language.java.operators.GreaterThan c2 =null;
+
+ org.emftext.language.java.operators.GreaterThanOrEqual c3 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 173) ) { return element; }
+
+ // Java.g:37066:2: (c0= parse_org_emftext_language_java_operators_LessThan |c1= parse_org_emftext_language_java_operators_LessThanOrEqual |c2= parse_org_emftext_language_java_operators_GreaterThan |c3= parse_org_emftext_language_java_operators_GreaterThanOrEqual )
+ int alt231=4;
+ int LA231_0 = input.LA(1);
+
+ if ( (LA231_0==43) ) {
+ int LA231_1 = input.LA(2);
+
+ if ( ((LA231_1 >= BOOLEAN_LITERAL && LA231_1 <= IDENTIFIER)||(LA231_1 >= OCTAL_INTEGER_LITERAL && LA231_1 <= OCTAL_LONG_LITERAL)||LA231_1==STRING_LITERAL||LA231_1==21||LA231_1==26||(LA231_1 >= 30 && LA231_1 <= 31)||(LA231_1 >= 34 && LA231_1 <= 35)||LA231_1==43||LA231_1==48||LA231_1==58||LA231_1==60||(LA231_1 >= 63 && LA231_1 <= 64)||LA231_1==68||LA231_1==74||LA231_1==80||LA231_1==82||(LA231_1 >= 84 && LA231_1 <= 85)||LA231_1==91||LA231_1==94||LA231_1==97||LA231_1==102||LA231_1==105||LA231_1==110) ) {
+ alt231=1;
+ }
+ else if ( (LA231_1==44) ) {
+ alt231=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 231, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ else if ( (LA231_0==46) ) {
+ int LA231_2 = input.LA(2);
+
+ if ( ((LA231_2 >= BOOLEAN_LITERAL && LA231_2 <= IDENTIFIER)||(LA231_2 >= OCTAL_INTEGER_LITERAL && LA231_2 <= OCTAL_LONG_LITERAL)||LA231_2==STRING_LITERAL||LA231_2==21||LA231_2==26||(LA231_2 >= 30 && LA231_2 <= 31)||(LA231_2 >= 34 && LA231_2 <= 35)||LA231_2==43||LA231_2==48||LA231_2==58||LA231_2==60||(LA231_2 >= 63 && LA231_2 <= 64)||LA231_2==68||LA231_2==74||LA231_2==80||LA231_2==82||(LA231_2 >= 84 && LA231_2 <= 85)||LA231_2==91||LA231_2==94||LA231_2==97||LA231_2==102||LA231_2==105||LA231_2==110) ) {
+ alt231=3;
+ }
+ else if ( (LA231_2==44) ) {
+ alt231=4;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 231, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 231, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt231) {
+ case 1 :
+ // Java.g:37067:2: c0= parse_org_emftext_language_java_operators_LessThan
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_LessThan_in_parse_org_emftext_language_java_operators_RelationOperator23842);
+ c0=parse_org_emftext_language_java_operators_LessThan();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37068:4: c1= parse_org_emftext_language_java_operators_LessThanOrEqual
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_LessThanOrEqual_in_parse_org_emftext_language_java_operators_RelationOperator23852);
+ c1=parse_org_emftext_language_java_operators_LessThanOrEqual();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:37069:4: c2= parse_org_emftext_language_java_operators_GreaterThan
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_GreaterThan_in_parse_org_emftext_language_java_operators_RelationOperator23862);
+ c2=parse_org_emftext_language_java_operators_GreaterThan();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:37070:4: c3= parse_org_emftext_language_java_operators_GreaterThanOrEqual
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_GreaterThanOrEqual_in_parse_org_emftext_language_java_operators_RelationOperator23872);
+ c3=parse_org_emftext_language_java_operators_GreaterThanOrEqual();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 173, parse_org_emftext_language_java_operators_RelationOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_RelationOperator"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_ShiftOperator"
+ // Java.g:37074:1: parse_org_emftext_language_java_operators_ShiftOperator returns [org.emftext.language.java.operators.ShiftOperator element = null] : (c0= parse_org_emftext_language_java_operators_LeftShift |c1= parse_org_emftext_language_java_operators_RightShift |c2= parse_org_emftext_language_java_operators_UnsignedRightShift );
+ public final org.emftext.language.java.operators.ShiftOperator parse_org_emftext_language_java_operators_ShiftOperator() throws RecognitionException {
+ org.emftext.language.java.operators.ShiftOperator element = null;
+
+ int parse_org_emftext_language_java_operators_ShiftOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.LeftShift c0 =null;
+
+ org.emftext.language.java.operators.RightShift c1 =null;
+
+ org.emftext.language.java.operators.UnsignedRightShift c2 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 174) ) { return element; }
+
+ // Java.g:37075:2: (c0= parse_org_emftext_language_java_operators_LeftShift |c1= parse_org_emftext_language_java_operators_RightShift |c2= parse_org_emftext_language_java_operators_UnsignedRightShift )
+ int alt232=3;
+ int LA232_0 = input.LA(1);
+
+ if ( (LA232_0==43) ) {
+ alt232=1;
+ }
+ else if ( (LA232_0==46) ) {
+ int LA232_2 = input.LA(2);
+
+ if ( (LA232_2==46) ) {
+ int LA232_3 = input.LA(3);
+
+ if ( ((LA232_3 >= BOOLEAN_LITERAL && LA232_3 <= IDENTIFIER)||(LA232_3 >= OCTAL_INTEGER_LITERAL && LA232_3 <= OCTAL_LONG_LITERAL)||LA232_3==STRING_LITERAL||LA232_3==21||LA232_3==26||(LA232_3 >= 30 && LA232_3 <= 31)||(LA232_3 >= 34 && LA232_3 <= 35)||LA232_3==43||LA232_3==48||LA232_3==58||LA232_3==60||(LA232_3 >= 63 && LA232_3 <= 64)||LA232_3==68||LA232_3==74||LA232_3==80||LA232_3==82||(LA232_3 >= 84 && LA232_3 <= 85)||LA232_3==91||LA232_3==94||LA232_3==97||LA232_3==102||LA232_3==105||LA232_3==110) ) {
+ alt232=2;
+ }
+ else if ( (LA232_3==46) ) {
+ alt232=3;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 232, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 232, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 232, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt232) {
+ case 1 :
+ // Java.g:37076:2: c0= parse_org_emftext_language_java_operators_LeftShift
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_LeftShift_in_parse_org_emftext_language_java_operators_ShiftOperator23893);
+ c0=parse_org_emftext_language_java_operators_LeftShift();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37077:4: c1= parse_org_emftext_language_java_operators_RightShift
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_RightShift_in_parse_org_emftext_language_java_operators_ShiftOperator23903);
+ c1=parse_org_emftext_language_java_operators_RightShift();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:37078:4: c2= parse_org_emftext_language_java_operators_UnsignedRightShift
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_UnsignedRightShift_in_parse_org_emftext_language_java_operators_ShiftOperator23913);
+ c2=parse_org_emftext_language_java_operators_UnsignedRightShift();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 174, parse_org_emftext_language_java_operators_ShiftOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_ShiftOperator"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_AdditiveOperator"
+ // Java.g:37082:1: parse_org_emftext_language_java_operators_AdditiveOperator returns [org.emftext.language.java.operators.AdditiveOperator element = null] : (c0= parse_org_emftext_language_java_operators_Addition |c1= parse_org_emftext_language_java_operators_Subtraction );
+ public final org.emftext.language.java.operators.AdditiveOperator parse_org_emftext_language_java_operators_AdditiveOperator() throws RecognitionException {
+ org.emftext.language.java.operators.AdditiveOperator element = null;
+
+ int parse_org_emftext_language_java_operators_AdditiveOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.Addition c0 =null;
+
+ org.emftext.language.java.operators.Subtraction c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 175) ) { return element; }
+
+ // Java.g:37083:2: (c0= parse_org_emftext_language_java_operators_Addition |c1= parse_org_emftext_language_java_operators_Subtraction )
+ int alt233=2;
+ int LA233_0 = input.LA(1);
+
+ if ( (LA233_0==30) ) {
+ alt233=1;
+ }
+ else if ( (LA233_0==34) ) {
+ alt233=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 233, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt233) {
+ case 1 :
+ // Java.g:37084:2: c0= parse_org_emftext_language_java_operators_Addition
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Addition_in_parse_org_emftext_language_java_operators_AdditiveOperator23934);
+ c0=parse_org_emftext_language_java_operators_Addition();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37085:4: c1= parse_org_emftext_language_java_operators_Subtraction
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Subtraction_in_parse_org_emftext_language_java_operators_AdditiveOperator23944);
+ c1=parse_org_emftext_language_java_operators_Subtraction();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 175, parse_org_emftext_language_java_operators_AdditiveOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_AdditiveOperator"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_MultiplicativeOperator"
+ // Java.g:37089:1: parse_org_emftext_language_java_operators_MultiplicativeOperator returns [org.emftext.language.java.operators.MultiplicativeOperator element = null] : (c0= parse_org_emftext_language_java_operators_Multiplication |c1= parse_org_emftext_language_java_operators_Division |c2= parse_org_emftext_language_java_operators_Remainder );
+ public final org.emftext.language.java.operators.MultiplicativeOperator parse_org_emftext_language_java_operators_MultiplicativeOperator() throws RecognitionException {
+ org.emftext.language.java.operators.MultiplicativeOperator element = null;
+
+ int parse_org_emftext_language_java_operators_MultiplicativeOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.Multiplication c0 =null;
+
+ org.emftext.language.java.operators.Division c1 =null;
+
+ org.emftext.language.java.operators.Remainder c2 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 176) ) { return element; }
+
+ // Java.g:37090:2: (c0= parse_org_emftext_language_java_operators_Multiplication |c1= parse_org_emftext_language_java_operators_Division |c2= parse_org_emftext_language_java_operators_Remainder )
+ int alt234=3;
+ switch ( input.LA(1) ) {
+ case 28:
+ {
+ alt234=1;
+ }
+ break;
+ case 39:
+ {
+ alt234=2;
+ }
+ break;
+ case 51:
+ {
+ alt234=3;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 234, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt234) {
+ case 1 :
+ // Java.g:37091:2: c0= parse_org_emftext_language_java_operators_Multiplication
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Multiplication_in_parse_org_emftext_language_java_operators_MultiplicativeOperator23965);
+ c0=parse_org_emftext_language_java_operators_Multiplication();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37092:4: c1= parse_org_emftext_language_java_operators_Division
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Division_in_parse_org_emftext_language_java_operators_MultiplicativeOperator23975);
+ c1=parse_org_emftext_language_java_operators_Division();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:37093:4: c2= parse_org_emftext_language_java_operators_Remainder
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Remainder_in_parse_org_emftext_language_java_operators_MultiplicativeOperator23985);
+ c2=parse_org_emftext_language_java_operators_Remainder();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 176, parse_org_emftext_language_java_operators_MultiplicativeOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_MultiplicativeOperator"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_UnaryOperator"
+ // Java.g:37097:1: parse_org_emftext_language_java_operators_UnaryOperator returns [org.emftext.language.java.operators.UnaryOperator element = null] : (c0= parse_org_emftext_language_java_operators_Addition |c1= parse_org_emftext_language_java_operators_Subtraction |c2= parse_org_emftext_language_java_operators_Complement |c3= parse_org_emftext_language_java_operators_Negate );
+ public final org.emftext.language.java.operators.UnaryOperator parse_org_emftext_language_java_operators_UnaryOperator() throws RecognitionException {
+ org.emftext.language.java.operators.UnaryOperator element = null;
+
+ int parse_org_emftext_language_java_operators_UnaryOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.Addition c0 =null;
+
+ org.emftext.language.java.operators.Subtraction c1 =null;
+
+ org.emftext.language.java.operators.Complement c2 =null;
+
+ org.emftext.language.java.operators.Negate c3 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 177) ) { return element; }
+
+ // Java.g:37098:2: (c0= parse_org_emftext_language_java_operators_Addition |c1= parse_org_emftext_language_java_operators_Subtraction |c2= parse_org_emftext_language_java_operators_Complement |c3= parse_org_emftext_language_java_operators_Negate )
+ int alt235=4;
+ switch ( input.LA(1) ) {
+ case 30:
+ {
+ alt235=1;
+ }
+ break;
+ case 34:
+ {
+ alt235=2;
+ }
+ break;
+ case 110:
+ {
+ alt235=3;
+ }
+ break;
+ case 21:
+ {
+ alt235=4;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 235, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt235) {
+ case 1 :
+ // Java.g:37099:2: c0= parse_org_emftext_language_java_operators_Addition
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Addition_in_parse_org_emftext_language_java_operators_UnaryOperator24006);
+ c0=parse_org_emftext_language_java_operators_Addition();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37100:4: c1= parse_org_emftext_language_java_operators_Subtraction
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Subtraction_in_parse_org_emftext_language_java_operators_UnaryOperator24016);
+ c1=parse_org_emftext_language_java_operators_Subtraction();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:37101:4: c2= parse_org_emftext_language_java_operators_Complement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Complement_in_parse_org_emftext_language_java_operators_UnaryOperator24026);
+ c2=parse_org_emftext_language_java_operators_Complement();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:37102:4: c3= parse_org_emftext_language_java_operators_Negate
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_Negate_in_parse_org_emftext_language_java_operators_UnaryOperator24036);
+ c3=parse_org_emftext_language_java_operators_Negate();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 177, parse_org_emftext_language_java_operators_UnaryOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_UnaryOperator"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_UnaryModificationExpression"
+ // Java.g:37106:1: parse_org_emftext_language_java_expressions_UnaryModificationExpression returns [org.emftext.language.java.expressions.UnaryModificationExpression element = null] : (c0= parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression |c1= parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression );
+ public final org.emftext.language.java.expressions.UnaryModificationExpression parse_org_emftext_language_java_expressions_UnaryModificationExpression() throws RecognitionException {
+ org.emftext.language.java.expressions.UnaryModificationExpression element = null;
+
+ int parse_org_emftext_language_java_expressions_UnaryModificationExpression_StartIndex = input.index();
+
+ org.emftext.language.java.expressions.SuffixUnaryModificationExpression c0 =null;
+
+ org.emftext.language.java.expressions.PrefixUnaryModificationExpression c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 178) ) { return element; }
+
+ // Java.g:37107:2: (c0= parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression |c1= parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression )
+ int alt236=2;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ int LA236_1 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 1, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 84:
+ {
+ int LA236_2 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 43:
+ {
+ int LA236_3 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 97:
+ {
+ int LA236_4 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 94:
+ {
+ int LA236_5 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 5, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 105:
+ {
+ int LA236_6 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 6, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA236_7 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 7, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 64:
+ {
+ int LA236_8 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 8, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 102:
+ {
+ int LA236_9 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 9, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 58:
+ {
+ int LA236_10 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 10, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 63:
+ {
+ int LA236_11 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 11, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 60:
+ {
+ int LA236_12 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 12, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 91:
+ {
+ int LA236_13 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 13, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 80:
+ {
+ int LA236_14 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 14, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 82:
+ {
+ int LA236_15 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 15, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 74:
+ {
+ int LA236_16 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 16, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 68:
+ {
+ int LA236_17 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 17, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case STRING_LITERAL:
+ {
+ int LA236_18 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 18, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 26:
+ {
+ int LA236_19 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 19, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 85:
+ {
+ int LA236_20 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 20, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case DECIMAL_LONG_LITERAL:
+ {
+ int LA236_21 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 21, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case DECIMAL_FLOAT_LITERAL:
+ {
+ int LA236_22 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 22, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case DECIMAL_INTEGER_LITERAL:
+ {
+ int LA236_23 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 23, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case DECIMAL_DOUBLE_LITERAL:
+ {
+ int LA236_24 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 24, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case HEX_LONG_LITERAL:
+ {
+ int LA236_25 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 25, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case HEX_FLOAT_LITERAL:
+ {
+ int LA236_26 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 26, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case HEX_DOUBLE_LITERAL:
+ {
+ int LA236_27 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 27, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case HEX_INTEGER_LITERAL:
+ {
+ int LA236_28 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 28, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case OCTAL_LONG_LITERAL:
+ {
+ int LA236_29 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 29, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case OCTAL_INTEGER_LITERAL:
+ {
+ int LA236_30 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 30, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case CHARACTER_LITERAL:
+ {
+ int LA236_31 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 31, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case BOOLEAN_LITERAL:
+ {
+ int LA236_32 = input.LA(2);
+
+ if ( (synpred334_Java()) ) {
+ alt236=1;
+ }
+ else if ( (true) ) {
+ alt236=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 32, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 31:
+ case 35:
+ {
+ alt236=2;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 236, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt236) {
+ case 1 :
+ // Java.g:37108:2: c0= parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpression24057);
+ c0=parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37109:4: c1= parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpression24067);
+ c1=parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 178, parse_org_emftext_language_java_expressions_UnaryModificationExpression_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_UnaryModificationExpression"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild"
+ // Java.g:37113:1: parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild returns [org.emftext.language.java.expressions.UnaryModificationExpressionChild element = null] : (c0= parse_org_emftext_language_java_annotations_AnnotationInstance |c1= parse_org_emftext_language_java_instantiations_NewConstructorCall |c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall |c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped |c4= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped |c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize |c6= parse_org_emftext_language_java_references_MethodCall |c7= parse_org_emftext_language_java_references_IdentifierReference |c8= parse_org_emftext_language_java_references_ReflectiveClassReference |c9= parse_org_emftext_language_java_references_SelfReference |c10= parse_org_emftext_language_java_references_PrimitiveTypeReference |c11= parse_org_emftext_language_java_references_StringReference |c12= parse_org_emftext_language_java_expressions_CastExpression |c13= parse_org_emftext_language_java_expressions_NestedExpression |c14= parse_org_emftext_language_java_literals_NullLiteral |c15= parse_org_emftext_language_java_literals_DecimalLongLiteral |c16= parse_org_emftext_language_java_literals_DecimalFloatLiteral |c17= parse_org_emftext_language_java_literals_DecimalIntegerLiteral |c18= parse_org_emftext_language_java_literals_DecimalDoubleLiteral |c19= parse_org_emftext_language_java_literals_HexLongLiteral |c20= parse_org_emftext_language_java_literals_HexFloatLiteral |c21= parse_org_emftext_language_java_literals_HexDoubleLiteral |c22= parse_org_emftext_language_java_literals_HexIntegerLiteral |c23= parse_org_emftext_language_java_literals_OctalLongLiteral |c24= parse_org_emftext_language_java_literals_OctalIntegerLiteral |c25= parse_org_emftext_language_java_literals_CharacterLiteral |c26= parse_org_emftext_language_java_literals_BooleanLiteral );
+ public final org.emftext.language.java.expressions.UnaryModificationExpressionChild parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild() throws RecognitionException {
+ org.emftext.language.java.expressions.UnaryModificationExpressionChild element = null;
+
+ int parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild_StartIndex = input.index();
+
+ org.emftext.language.java.annotations.AnnotationInstance c0 =null;
+
+ org.emftext.language.java.instantiations.NewConstructorCall c1 =null;
+
+ org.emftext.language.java.instantiations.ExplicitConstructorCall c2 =null;
+
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped c3 =null;
+
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped c4 =null;
+
+ org.emftext.language.java.arrays.ArrayInstantiationBySize c5 =null;
+
+ org.emftext.language.java.references.MethodCall c6 =null;
+
+ org.emftext.language.java.references.IdentifierReference c7 =null;
+
+ org.emftext.language.java.references.ReflectiveClassReference c8 =null;
+
+ org.emftext.language.java.references.SelfReference c9 =null;
+
+ org.emftext.language.java.references.PrimitiveTypeReference c10 =null;
+
+ org.emftext.language.java.references.StringReference c11 =null;
+
+ org.emftext.language.java.expressions.CastExpression c12 =null;
+
+ org.emftext.language.java.expressions.NestedExpression c13 =null;
+
+ org.emftext.language.java.literals.NullLiteral c14 =null;
+
+ org.emftext.language.java.literals.DecimalLongLiteral c15 =null;
+
+ org.emftext.language.java.literals.DecimalFloatLiteral c16 =null;
+
+ org.emftext.language.java.literals.DecimalIntegerLiteral c17 =null;
+
+ org.emftext.language.java.literals.DecimalDoubleLiteral c18 =null;
+
+ org.emftext.language.java.literals.HexLongLiteral c19 =null;
+
+ org.emftext.language.java.literals.HexFloatLiteral c20 =null;
+
+ org.emftext.language.java.literals.HexDoubleLiteral c21 =null;
+
+ org.emftext.language.java.literals.HexIntegerLiteral c22 =null;
+
+ org.emftext.language.java.literals.OctalLongLiteral c23 =null;
+
+ org.emftext.language.java.literals.OctalIntegerLiteral c24 =null;
+
+ org.emftext.language.java.literals.CharacterLiteral c25 =null;
+
+ org.emftext.language.java.literals.BooleanLiteral c26 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 179) ) { return element; }
+
+ // Java.g:37114:2: (c0= parse_org_emftext_language_java_annotations_AnnotationInstance |c1= parse_org_emftext_language_java_instantiations_NewConstructorCall |c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall |c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped |c4= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped |c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize |c6= parse_org_emftext_language_java_references_MethodCall |c7= parse_org_emftext_language_java_references_IdentifierReference |c8= parse_org_emftext_language_java_references_ReflectiveClassReference |c9= parse_org_emftext_language_java_references_SelfReference |c10= parse_org_emftext_language_java_references_PrimitiveTypeReference |c11= parse_org_emftext_language_java_references_StringReference |c12= parse_org_emftext_language_java_expressions_CastExpression |c13= parse_org_emftext_language_java_expressions_NestedExpression |c14= parse_org_emftext_language_java_literals_NullLiteral |c15= parse_org_emftext_language_java_literals_DecimalLongLiteral |c16= parse_org_emftext_language_java_literals_DecimalFloatLiteral |c17= parse_org_emftext_language_java_literals_DecimalIntegerLiteral |c18= parse_org_emftext_language_java_literals_DecimalDoubleLiteral |c19= parse_org_emftext_language_java_literals_HexLongLiteral |c20= parse_org_emftext_language_java_literals_HexFloatLiteral |c21= parse_org_emftext_language_java_literals_HexDoubleLiteral |c22= parse_org_emftext_language_java_literals_HexIntegerLiteral |c23= parse_org_emftext_language_java_literals_OctalLongLiteral |c24= parse_org_emftext_language_java_literals_OctalIntegerLiteral |c25= parse_org_emftext_language_java_literals_CharacterLiteral |c26= parse_org_emftext_language_java_literals_BooleanLiteral )
+ int alt237=27;
+ switch ( input.LA(1) ) {
+ case 48:
+ {
+ alt237=1;
+ }
+ break;
+ case 84:
+ {
+ int LA237_2 = input.LA(2);
+
+ if ( (synpred336_Java()) ) {
+ alt237=2;
+ }
+ else if ( (synpred338_Java()) ) {
+ alt237=4;
+ }
+ else if ( (synpred340_Java()) ) {
+ alt237=6;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 237, 2, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 43:
+ {
+ int LA237_3 = input.LA(2);
+
+ if ( (synpred337_Java()) ) {
+ alt237=3;
+ }
+ else if ( (synpred341_Java()) ) {
+ alt237=7;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 237, 3, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 97:
+ {
+ int LA237_4 = input.LA(2);
+
+ if ( (synpred337_Java()) ) {
+ alt237=3;
+ }
+ else if ( (synpred344_Java()) ) {
+ alt237=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 237, 4, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 94:
+ {
+ int LA237_5 = input.LA(2);
+
+ if ( (synpred337_Java()) ) {
+ alt237=3;
+ }
+ else if ( (synpred344_Java()) ) {
+ alt237=10;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 237, 5, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 105:
+ {
+ alt237=5;
+ }
+ break;
+ case IDENTIFIER:
+ {
+ int LA237_7 = input.LA(2);
+
+ if ( (synpred341_Java()) ) {
+ alt237=7;
+ }
+ else if ( (synpred342_Java()) ) {
+ alt237=8;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 237, 7, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 64:
+ {
+ alt237=9;
+ }
+ break;
+ case 58:
+ case 60:
+ case 63:
+ case 68:
+ case 74:
+ case 80:
+ case 82:
+ case 91:
+ case 102:
+ {
+ alt237=11;
+ }
+ break;
+ case STRING_LITERAL:
+ {
+ alt237=12;
+ }
+ break;
+ case 26:
+ {
+ int LA237_19 = input.LA(2);
+
+ if ( (synpred347_Java()) ) {
+ alt237=13;
+ }
+ else if ( (synpred348_Java()) ) {
+ alt237=14;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 237, 19, input);
+
+ throw nvae;
+
+ }
+ }
+ break;
+ case 85:
+ {
+ alt237=15;
+ }
+ break;
+ case DECIMAL_LONG_LITERAL:
+ {
+ alt237=16;
+ }
+ break;
+ case DECIMAL_FLOAT_LITERAL:
+ {
+ alt237=17;
+ }
+ break;
+ case DECIMAL_INTEGER_LITERAL:
+ {
+ alt237=18;
+ }
+ break;
+ case DECIMAL_DOUBLE_LITERAL:
+ {
+ alt237=19;
+ }
+ break;
+ case HEX_LONG_LITERAL:
+ {
+ alt237=20;
+ }
+ break;
+ case HEX_FLOAT_LITERAL:
+ {
+ alt237=21;
+ }
+ break;
+ case HEX_DOUBLE_LITERAL:
+ {
+ alt237=22;
+ }
+ break;
+ case HEX_INTEGER_LITERAL:
+ {
+ alt237=23;
+ }
+ break;
+ case OCTAL_LONG_LITERAL:
+ {
+ alt237=24;
+ }
+ break;
+ case OCTAL_INTEGER_LITERAL:
+ {
+ alt237=25;
+ }
+ break;
+ case CHARACTER_LITERAL:
+ {
+ alt237=26;
+ }
+ break;
+ case BOOLEAN_LITERAL:
+ {
+ alt237=27;
+ }
+ break;
+ default:
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 237, 0, input);
+
+ throw nvae;
+
+ }
+
+ switch (alt237) {
+ case 1 :
+ // Java.g:37115:2: c0= parse_org_emftext_language_java_annotations_AnnotationInstance
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24088);
+ c0=parse_org_emftext_language_java_annotations_AnnotationInstance();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37116:4: c1= parse_org_emftext_language_java_instantiations_NewConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24098);
+ c1=parse_org_emftext_language_java_instantiations_NewConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 3 :
+ // Java.g:37117:4: c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24108);
+ c2=parse_org_emftext_language_java_instantiations_ExplicitConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c2; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 4 :
+ // Java.g:37118:4: c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24118);
+ c3=parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c3; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 5 :
+ // Java.g:37119:4: c4= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24128);
+ c4=parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c4; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 6 :
+ // Java.g:37120:4: c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24138);
+ c5=parse_org_emftext_language_java_arrays_ArrayInstantiationBySize();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c5; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 7 :
+ // Java.g:37121:4: c6= parse_org_emftext_language_java_references_MethodCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24148);
+ c6=parse_org_emftext_language_java_references_MethodCall();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c6; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 8 :
+ // Java.g:37122:4: c7= parse_org_emftext_language_java_references_IdentifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24158);
+ c7=parse_org_emftext_language_java_references_IdentifierReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c7; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 9 :
+ // Java.g:37123:4: c8= parse_org_emftext_language_java_references_ReflectiveClassReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_ReflectiveClassReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24168);
+ c8=parse_org_emftext_language_java_references_ReflectiveClassReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c8; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 10 :
+ // Java.g:37124:4: c9= parse_org_emftext_language_java_references_SelfReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24178);
+ c9=parse_org_emftext_language_java_references_SelfReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c9; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 11 :
+ // Java.g:37125:4: c10= parse_org_emftext_language_java_references_PrimitiveTypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_PrimitiveTypeReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24188);
+ c10=parse_org_emftext_language_java_references_PrimitiveTypeReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c10; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 12 :
+ // Java.g:37126:4: c11= parse_org_emftext_language_java_references_StringReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_StringReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24198);
+ c11=parse_org_emftext_language_java_references_StringReference();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c11; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 13 :
+ // Java.g:37127:4: c12= parse_org_emftext_language_java_expressions_CastExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_CastExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24208);
+ c12=parse_org_emftext_language_java_expressions_CastExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c12; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 14 :
+ // Java.g:37128:4: c13= parse_org_emftext_language_java_expressions_NestedExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_NestedExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24218);
+ c13=parse_org_emftext_language_java_expressions_NestedExpression();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c13; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 15 :
+ // Java.g:37129:4: c14= parse_org_emftext_language_java_literals_NullLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_NullLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24228);
+ c14=parse_org_emftext_language_java_literals_NullLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c14; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 16 :
+ // Java.g:37130:4: c15= parse_org_emftext_language_java_literals_DecimalLongLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_DecimalLongLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24238);
+ c15=parse_org_emftext_language_java_literals_DecimalLongLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c15; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 17 :
+ // Java.g:37131:4: c16= parse_org_emftext_language_java_literals_DecimalFloatLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_DecimalFloatLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24248);
+ c16=parse_org_emftext_language_java_literals_DecimalFloatLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c16; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 18 :
+ // Java.g:37132:4: c17= parse_org_emftext_language_java_literals_DecimalIntegerLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_DecimalIntegerLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24258);
+ c17=parse_org_emftext_language_java_literals_DecimalIntegerLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c17; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 19 :
+ // Java.g:37133:4: c18= parse_org_emftext_language_java_literals_DecimalDoubleLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_DecimalDoubleLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24268);
+ c18=parse_org_emftext_language_java_literals_DecimalDoubleLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c18; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 20 :
+ // Java.g:37134:4: c19= parse_org_emftext_language_java_literals_HexLongLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_HexLongLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24278);
+ c19=parse_org_emftext_language_java_literals_HexLongLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c19; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 21 :
+ // Java.g:37135:4: c20= parse_org_emftext_language_java_literals_HexFloatLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_HexFloatLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24288);
+ c20=parse_org_emftext_language_java_literals_HexFloatLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c20; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 22 :
+ // Java.g:37136:4: c21= parse_org_emftext_language_java_literals_HexDoubleLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_HexDoubleLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24298);
+ c21=parse_org_emftext_language_java_literals_HexDoubleLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c21; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 23 :
+ // Java.g:37137:4: c22= parse_org_emftext_language_java_literals_HexIntegerLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_HexIntegerLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24308);
+ c22=parse_org_emftext_language_java_literals_HexIntegerLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c22; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 24 :
+ // Java.g:37138:4: c23= parse_org_emftext_language_java_literals_OctalLongLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_OctalLongLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24318);
+ c23=parse_org_emftext_language_java_literals_OctalLongLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c23; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 25 :
+ // Java.g:37139:4: c24= parse_org_emftext_language_java_literals_OctalIntegerLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_OctalIntegerLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24328);
+ c24=parse_org_emftext_language_java_literals_OctalIntegerLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c24; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 26 :
+ // Java.g:37140:4: c25= parse_org_emftext_language_java_literals_CharacterLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_CharacterLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24338);
+ c25=parse_org_emftext_language_java_literals_CharacterLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c25; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 27 :
+ // Java.g:37141:4: c26= parse_org_emftext_language_java_literals_BooleanLiteral
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_literals_BooleanLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24348);
+ c26=parse_org_emftext_language_java_literals_BooleanLiteral();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c26; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 179, parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild"
+
+
+
+ // $ANTLR start "parse_org_emftext_language_java_operators_UnaryModificationOperator"
+ // Java.g:37145:1: parse_org_emftext_language_java_operators_UnaryModificationOperator returns [org.emftext.language.java.operators.UnaryModificationOperator element = null] : (c0= parse_org_emftext_language_java_operators_PlusPlus |c1= parse_org_emftext_language_java_operators_MinusMinus );
+ public final org.emftext.language.java.operators.UnaryModificationOperator parse_org_emftext_language_java_operators_UnaryModificationOperator() throws RecognitionException {
+ org.emftext.language.java.operators.UnaryModificationOperator element = null;
+
+ int parse_org_emftext_language_java_operators_UnaryModificationOperator_StartIndex = input.index();
+
+ org.emftext.language.java.operators.PlusPlus c0 =null;
+
+ org.emftext.language.java.operators.MinusMinus c1 =null;
+
+
+ try {
+ if ( state.backtracking>0 && alreadyParsedRule(input, 180) ) { return element; }
+
+ // Java.g:37146:2: (c0= parse_org_emftext_language_java_operators_PlusPlus |c1= parse_org_emftext_language_java_operators_MinusMinus )
+ int alt238=2;
+ int LA238_0 = input.LA(1);
+
+ if ( (LA238_0==31) ) {
+ alt238=1;
+ }
+ else if ( (LA238_0==35) ) {
+ alt238=2;
+ }
+ else {
+ if (state.backtracking>0) {state.failed=true; return element;}
+ NoViableAltException nvae =
+ new NoViableAltException("", 238, 0, input);
+
+ throw nvae;
+
+ }
+ switch (alt238) {
+ case 1 :
+ // Java.g:37147:2: c0= parse_org_emftext_language_java_operators_PlusPlus
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_PlusPlus_in_parse_org_emftext_language_java_operators_UnaryModificationOperator24369);
+ c0=parse_org_emftext_language_java_operators_PlusPlus();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c0; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+ case 2 :
+ // Java.g:37148:4: c1= parse_org_emftext_language_java_operators_MinusMinus
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_MinusMinus_in_parse_org_emftext_language_java_operators_UnaryModificationOperator24379);
+ c1=parse_org_emftext_language_java_operators_MinusMinus();
+
+ state._fsp--;
+ if (state.failed) return element;
+
+ if ( state.backtracking==0 ) { element = c1; /* this is a subclass or primitive expression choice */ }
+
+ }
+ break;
+
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover(input,re);
+ }
+
+ finally {
+ // do for sure before leaving
+ if ( state.backtracking>0 ) { memoize(input, 180, parse_org_emftext_language_java_operators_UnaryModificationOperator_StartIndex); }
+
+ }
+ return element;
+ }
+ // $ANTLR end "parse_org_emftext_language_java_operators_UnaryModificationOperator"
+
+ // $ANTLR start synpred1_Java
+ public final void synpred1_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.containers.CompilationUnit c0 =null;
+
+
+ // Java.g:994:3: (c0= parse_org_emftext_language_java_containers_CompilationUnit )
+ // Java.g:994:3: c0= parse_org_emftext_language_java_containers_CompilationUnit
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_containers_CompilationUnit_in_synpred1_Java82);
+ c0=parse_org_emftext_language_java_containers_CompilationUnit();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred1_Java
+
+ // $ANTLR start synpred2_Java
+ public final void synpred2_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.containers.Package c1 =null;
+
+
+ // Java.g:995:8: (c1= parse_org_emftext_language_java_containers_Package )
+ // Java.g:995:8: c1= parse_org_emftext_language_java_containers_Package
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_containers_Package_in_synpred2_Java96);
+ c1=parse_org_emftext_language_java_containers_Package();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred2_Java
+
+ // $ANTLR start synpred7_Java
+ public final void synpred7_Java_fragment() throws RecognitionException {
+ Token a6=null;
+
+ // Java.g:1255:3: ( (a6= ';' ) )
+ // Java.g:1255:3: (a6= ';' )
+ {
+ // Java.g:1255:3: (a6= ';' )
+ // Java.g:1256:4: a6= ';'
+ {
+ a6=(Token)match(input,42,FOLLOW_42_in_synpred7_Java454); if (state.failed) return ;
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred7_Java
+
+ // $ANTLR start synpred47_Java
+ public final void synpred47_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInitializer a1_0 =null;
+
+
+ // Java.g:5456:3: (a1_0= parse_org_emftext_language_java_arrays_ArrayInitializer )
+ // Java.g:5456:3: a1_0= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_synpred47_Java4154);
+ a1_0=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred47_Java
+
+ // $ANTLR start synpred50_Java
+ public final void synpred50_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInitializer a2_0 =null;
+
+
+ // Java.g:5919:3: (a2_0= parse_org_emftext_language_java_arrays_ArrayInitializer )
+ // Java.g:5919:3: a2_0= parse_org_emftext_language_java_arrays_ArrayInitializer
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_synpred50_Java4465);
+ a2_0=parse_org_emftext_language_java_arrays_ArrayInitializer();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred50_Java
+
+ // $ANTLR start synpred77_Java
+ public final void synpred77_Java_fragment() throws RecognitionException {
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ Token a8=null;
+ Token a9=null;
+ Token a11=null;
+ Token a13=null;
+ Token a15=null;
+ Token a17=null;
+ Token a19=null;
+ org.emftext.language.java.modifiers.AnnotationInstanceOrModifier a0_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a2_0 =null;
+
+ org.emftext.language.java.generics.TypeParameter a4_0 =null;
+
+ org.emftext.language.java.types.TypeReference a6_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a7_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a10_0 =null;
+
+ org.emftext.language.java.parameters.Parameter a12_0 =null;
+
+ org.emftext.language.java.arrays.ArrayDimension a14_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a16_0 =null;
+
+ org.emftext.language.java.types.NamespaceClassifierReference a18_0 =null;
+
+
+ // Java.g:7747:2: ( ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= ';' )
+ // Java.g:7747:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )* ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )? ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ) (a8= IDENTIFIER ) a9= '(' ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )? a13= ')' ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )? a19= ';'
+ {
+ // Java.g:7747:2: ( (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier ) )*
+ loop259:
+ do {
+ int alt259=2;
+ int LA259_0 = input.LA(1);
+
+ if ( (LA259_0==48||LA259_0==56||LA259_0==72||LA259_0==83||(LA259_0 >= 87 && LA259_0 <= 89)||(LA259_0 >= 92 && LA259_0 <= 93)||LA259_0==96||LA259_0==100||LA259_0==103) ) {
+ alt259=1;
+ }
+
+
+ switch (alt259) {
+ case 1 :
+ // Java.g:7748:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ {
+ // Java.g:7748:3: (a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier )
+ // Java.g:7749:4: a0_0= parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_synpred77_Java6033);
+ a0_0=parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop259;
+ }
+ } while (true);
+
+
+ // Java.g:7798:2: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' ) )?
+ int alt261=2;
+ int LA261_0 = input.LA(1);
+
+ if ( (LA261_0==43) ) {
+ alt261=1;
+ }
+ switch (alt261) {
+ case 1 :
+ // Java.g:7799:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ {
+ // Java.g:7799:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>' )
+ // Java.g:7800:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeParameter ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_synpred77_Java6068); if (state.failed) return ;
+
+ // Java.g:7814:4: (a2_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:7815:5: a2_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_synpred77_Java6094);
+ a2_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ // Java.g:7841:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) ) )*
+ loop260:
+ do {
+ int alt260=2;
+ int LA260_0 = input.LA(1);
+
+ if ( (LA260_0==33) ) {
+ alt260=1;
+ }
+
+
+ switch (alt260) {
+ case 1 :
+ // Java.g:7842:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ {
+ // Java.g:7842:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter ) )
+ // Java.g:7843:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_synpred77_Java6135); if (state.failed) return ;
+
+ // Java.g:7857:6: (a4_0= parse_org_emftext_language_java_generics_TypeParameter )
+ // Java.g:7858:7: a4_0= parse_org_emftext_language_java_generics_TypeParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_synpred77_Java6169);
+ a4_0=parse_org_emftext_language_java_generics_TypeParameter();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop260;
+ }
+ } while (true);
+
+
+ a5=(Token)match(input,46,FOLLOW_46_in_synpred77_Java6230); if (state.failed) return ;
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ // Java.g:7933:2: ( (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )* )
+ // Java.g:7934:3: (a6_0= parse_org_emftext_language_java_types_TypeReference ) ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ {
+ // Java.g:7934:3: (a6_0= parse_org_emftext_language_java_types_TypeReference )
+ // Java.g:7935:4: a6_0= parse_org_emftext_language_java_types_TypeReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_synpred77_Java6272);
+ a6_0=parse_org_emftext_language_java_types_TypeReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ // Java.g:7961:3: ( (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop262:
+ do {
+ int alt262=2;
+ int LA262_0 = input.LA(1);
+
+ if ( (LA262_0==49) ) {
+ alt262=1;
+ }
+
+
+ switch (alt262) {
+ case 1 :
+ // Java.g:7962:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:7962:4: (a7_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:7963:5: a7_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_synpred77_Java6306);
+ a7_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop262;
+ }
+ } while (true);
+
+
+ }
+
+
+ // Java.g:7996:2: (a8= IDENTIFIER )
+ // Java.g:7997:3: a8= IDENTIFIER
+ {
+ a8=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred77_Java6350); if (state.failed) return ;
+
+ }
+
+
+ a9=(Token)match(input,26,FOLLOW_26_in_synpred77_Java6371); if (state.failed) return ;
+
+ // Java.g:8069:2: ( ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* ) )?
+ int alt264=2;
+ int LA264_0 = input.LA(1);
+
+ if ( (LA264_0==IDENTIFIER||LA264_0==48||LA264_0==56||LA264_0==58||LA264_0==60||LA264_0==63||LA264_0==68||LA264_0==72||LA264_0==74||LA264_0==80||(LA264_0 >= 82 && LA264_0 <= 83)||(LA264_0 >= 87 && LA264_0 <= 89)||(LA264_0 >= 91 && LA264_0 <= 93)||LA264_0==96||LA264_0==100||(LA264_0 >= 102 && LA264_0 <= 103)) ) {
+ alt264=1;
+ }
+ switch (alt264) {
+ case 1 :
+ // Java.g:8070:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ {
+ // Java.g:8070:3: ( (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )* )
+ // Java.g:8071:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter ) ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ {
+ // Java.g:8071:4: (a10_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:8072:5: a10_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_synpred77_Java6400);
+ a10_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ // Java.g:8098:4: ( (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) ) )*
+ loop263:
+ do {
+ int alt263=2;
+ int LA263_0 = input.LA(1);
+
+ if ( (LA263_0==33) ) {
+ alt263=1;
+ }
+
+
+ switch (alt263) {
+ case 1 :
+ // Java.g:8099:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ {
+ // Java.g:8099:5: (a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter ) )
+ // Java.g:8100:6: a11= ',' (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ {
+ a11=(Token)match(input,33,FOLLOW_33_in_synpred77_Java6441); if (state.failed) return ;
+
+ // Java.g:8136:6: (a12_0= parse_org_emftext_language_java_parameters_Parameter )
+ // Java.g:8137:7: a12_0= parse_org_emftext_language_java_parameters_Parameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_synpred77_Java6475);
+ a12_0=parse_org_emftext_language_java_parameters_Parameter();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop263;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ a13=(Token)match(input,27,FOLLOW_27_in_synpred77_Java6549); if (state.failed) return ;
+
+ // Java.g:8194:2: ( (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension ) )*
+ loop265:
+ do {
+ int alt265=2;
+ int LA265_0 = input.LA(1);
+
+ if ( (LA265_0==49) ) {
+ alt265=1;
+ }
+
+
+ switch (alt265) {
+ case 1 :
+ // Java.g:8195:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ {
+ // Java.g:8195:3: (a14_0= parse_org_emftext_language_java_arrays_ArrayDimension )
+ // Java.g:8196:4: a14_0= parse_org_emftext_language_java_arrays_ArrayDimension
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_synpred77_Java6572);
+ a14_0=parse_org_emftext_language_java_arrays_ArrayDimension();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop265;
+ }
+ } while (true);
+
+
+ // Java.g:8224:2: ( (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* ) )?
+ int alt267=2;
+ int LA267_0 = input.LA(1);
+
+ if ( (LA267_0==99) ) {
+ alt267=1;
+ }
+ switch (alt267) {
+ case 1 :
+ // Java.g:8225:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ {
+ // Java.g:8225:3: (a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )* )
+ // Java.g:8226:4: a15= 'throws' (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ {
+ a15=(Token)match(input,99,FOLLOW_99_in_synpred77_Java6607); if (state.failed) return ;
+
+ // Java.g:8241:4: (a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:8242:5: a16_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_synpred77_Java6633);
+ a16_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ // Java.g:8268:4: ( (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) ) )*
+ loop266:
+ do {
+ int alt266=2;
+ int LA266_0 = input.LA(1);
+
+ if ( (LA266_0==33) ) {
+ alt266=1;
+ }
+
+
+ switch (alt266) {
+ case 1 :
+ // Java.g:8269:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ {
+ // Java.g:8269:5: (a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference ) )
+ // Java.g:8270:6: a17= ',' (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ {
+ a17=(Token)match(input,33,FOLLOW_33_in_synpred77_Java6674); if (state.failed) return ;
+
+ // Java.g:8285:6: (a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:8286:7: a18_0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_synpred77_Java6708);
+ a18_0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop266;
+ }
+ } while (true);
+
+
+ }
+
+
+ }
+ break;
+
+ }
+
+
+ a19=(Token)match(input,42,FOLLOW_42_in_synpred77_Java6782); if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred77_Java
+
+ // $ANTLR start synpred145_Java
+ public final void synpred145_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.expressions.AssignmentExpression a1_0 =null;
+
+
+ // Java.g:15250:5: (a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:15250:5: a1_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_synpred145_Java12594);
+ a1_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred145_Java
+
+ // $ANTLR start synpred146_Java
+ public final void synpred146_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.expressions.AssignmentExpression a3_0 =null;
+
+
+ // Java.g:15355:7: (a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression )
+ // Java.g:15355:7: a3_0= parse_org_emftext_language_java_expressions_AssignmentExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_synpred146_Java12689);
+ a3_0=parse_org_emftext_language_java_expressions_AssignmentExpression();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred146_Java
+
+ // $ANTLR start synpred151_Java
+ public final void synpred151_Java_fragment() throws RecognitionException {
+ Token a0=null;
+ Token a1=null;
+
+ // Java.g:15697:3: ( ( (a0= IDENTIFIER ) a1= '.' ) )
+ // Java.g:15697:3: ( (a0= IDENTIFIER ) a1= '.' )
+ {
+ // Java.g:15697:3: ( (a0= IDENTIFIER ) a1= '.' )
+ // Java.g:15698:4: (a0= IDENTIFIER ) a1= '.'
+ {
+ // Java.g:15698:4: (a0= IDENTIFIER )
+ // Java.g:15699:5: a0= IDENTIFIER
+ {
+ a0=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred151_Java12953); if (state.failed) return ;
+
+ }
+
+
+ a1=(Token)match(input,37,FOLLOW_37_in_synpred151_Java12986); if (state.failed) return ;
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred151_Java
+
+ // $ANTLR start synpred152_Java
+ public final void synpred152_Java_fragment() throws RecognitionException {
+ Token a3=null;
+ org.emftext.language.java.types.ClassifierReference a2_0 =null;
+
+
+ // Java.g:15758:3: ( ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' ) )
+ // Java.g:15758:3: ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' )
+ {
+ // Java.g:15758:3: ( (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.' )
+ // Java.g:15759:4: (a2_0= parse_org_emftext_language_java_types_ClassifierReference ) a3= '.'
+ {
+ // Java.g:15759:4: (a2_0= parse_org_emftext_language_java_types_ClassifierReference )
+ // Java.g:15760:5: a2_0= parse_org_emftext_language_java_types_ClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_synpred152_Java13034);
+ a2_0=parse_org_emftext_language_java_types_ClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ a3=(Token)match(input,37,FOLLOW_37_in_synpred152_Java13062); if (state.failed) return ;
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred152_Java
+
+ // $ANTLR start synpred154_Java
+ public final void synpred154_Java_fragment() throws RecognitionException {
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ org.emftext.language.java.generics.TypeArgument a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+
+ // Java.g:16041:3: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )
+ // Java.g:16041:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ {
+ // Java.g:16041:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ // Java.g:16042:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_synpred154_Java13166); if (state.failed) return ;
+
+ // Java.g:16069:4: (a2_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16070:5: a2_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred154_Java13192);
+ a2_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ // Java.g:16096:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop287:
+ do {
+ int alt287=2;
+ int LA287_0 = input.LA(1);
+
+ if ( (LA287_0==33) ) {
+ alt287=1;
+ }
+
+
+ switch (alt287) {
+ case 1 :
+ // Java.g:16097:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:16097:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:16098:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_synpred154_Java13233); if (state.failed) return ;
+
+ // Java.g:16125:6: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:16126:7: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred154_Java13267);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop287;
+ }
+ } while (true);
+
+
+ a5=(Token)match(input,46,FOLLOW_46_in_synpred154_Java13328); if (state.failed) return ;
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred154_Java
+
+ // $ANTLR start synpred164_Java
+ public final void synpred164_Java_fragment() throws RecognitionException {
+ Token a1=null;
+ Token a3=null;
+ Token a5=null;
+ org.emftext.language.java.generics.TypeArgument a2_0 =null;
+
+ org.emftext.language.java.generics.TypeArgument a4_0 =null;
+
+
+ // Java.g:17340:3: ( (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' ) )
+ // Java.g:17340:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ {
+ // Java.g:17340:3: (a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>' )
+ // Java.g:17341:4: a1= '<' (a2_0= parse_org_emftext_language_java_generics_TypeArgument ) ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )* a5= '>'
+ {
+ a1=(Token)match(input,43,FOLLOW_43_in_synpred164_Java14161); if (state.failed) return ;
+
+ // Java.g:17368:4: (a2_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:17369:5: a2_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred164_Java14187);
+ a2_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ // Java.g:17395:4: ( (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) ) )*
+ loop291:
+ do {
+ int alt291=2;
+ int LA291_0 = input.LA(1);
+
+ if ( (LA291_0==33) ) {
+ alt291=1;
+ }
+
+
+ switch (alt291) {
+ case 1 :
+ // Java.g:17396:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ {
+ // Java.g:17396:5: (a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument ) )
+ // Java.g:17397:6: a3= ',' (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ {
+ a3=(Token)match(input,33,FOLLOW_33_in_synpred164_Java14228); if (state.failed) return ;
+
+ // Java.g:17424:6: (a4_0= parse_org_emftext_language_java_generics_TypeArgument )
+ // Java.g:17425:7: a4_0= parse_org_emftext_language_java_generics_TypeArgument
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred164_Java14262);
+ a4_0=parse_org_emftext_language_java_generics_TypeArgument();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+ break;
+
+ default :
+ break loop291;
+ }
+ } while (true);
+
+
+ a5=(Token)match(input,46,FOLLOW_46_in_synpred164_Java14323); if (state.failed) return ;
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred164_Java
+
+ // $ANTLR start synpred177_Java
+ public final void synpred177_Java_fragment() throws RecognitionException {
+ Token a5=null;
+ org.emftext.language.java.statements.Statement a6_0 =null;
+
+
+ // Java.g:20417:3: ( (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) ) )
+ // Java.g:20417:3: (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) )
+ {
+ // Java.g:20417:3: (a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement ) )
+ // Java.g:20418:4: a5= 'else' (a6_0= parse_org_emftext_language_java_statements_Statement )
+ {
+ a5=(Token)match(input,69,FOLLOW_69_in_synpred177_Java15635); if (state.failed) return ;
+
+ // Java.g:20507:4: (a6_0= parse_org_emftext_language_java_statements_Statement )
+ // Java.g:20508:5: a6_0= parse_org_emftext_language_java_statements_Statement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Statement_in_synpred177_Java15661);
+ a6_0=parse_org_emftext_language_java_statements_Statement();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred177_Java
+
+ // $ANTLR start synpred206_Java
+ public final void synpred206_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.operators.ShiftOperator a1_0 =null;
+
+ org.emftext.language.java.expressions.AdditiveExpression a2_0 =null;
+
+
+ // Java.g:29317:3: ( ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) ) )
+ // Java.g:29317:3: ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) )
+ {
+ // Java.g:29317:3: ( (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression ) )
+ // Java.g:29318:4: (a1_0= parse_org_emftext_language_java_operators_ShiftOperator ) (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression )
+ {
+ // Java.g:29318:4: (a1_0= parse_org_emftext_language_java_operators_ShiftOperator )
+ // Java.g:29319:5: a1_0= parse_org_emftext_language_java_operators_ShiftOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_ShiftOperator_in_synpred206_Java19308);
+ a1_0=parse_org_emftext_language_java_operators_ShiftOperator();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ // Java.g:29386:4: (a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression )
+ // Java.g:29387:5: a2_0= parse_org_emftext_language_java_expressions_AdditiveExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_AdditiveExpression_in_synpred206_Java19342);
+ a2_0=parse_org_emftext_language_java_expressions_AdditiveExpression();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred206_Java
+
+ // $ANTLR start synpred210_Java
+ public final void synpred210_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.operators.UnaryModificationOperator a1_0 =null;
+
+
+ // Java.g:30489:3: ( ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) ) )
+ // Java.g:30489:3: ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) )
+ {
+ // Java.g:30489:3: ( (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator ) )
+ // Java.g:30490:4: (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator )
+ {
+ // Java.g:30490:4: (a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator )
+ // Java.g:30491:5: a1_0= parse_org_emftext_language_java_operators_UnaryModificationOperator
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_operators_UnaryModificationOperator_in_synpred210_Java19761);
+ a1_0=parse_org_emftext_language_java_operators_UnaryModificationOperator();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+
+ }
+
+
+ }
+
+ }
+ // $ANTLR end synpred210_Java
+
+ // $ANTLR start synpred218_Java
+ public final void synpred218_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Class c0 =null;
+
+
+ // Java.g:36866:2: (c0= parse_org_emftext_language_java_classifiers_Class )
+ // Java.g:36866:2: c0= parse_org_emftext_language_java_classifiers_Class
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_synpred218_Java22456);
+ c0=parse_org_emftext_language_java_classifiers_Class();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred218_Java
+
+ // $ANTLR start synpred219_Java
+ public final void synpred219_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Interface c1 =null;
+
+
+ // Java.g:36867:4: (c1= parse_org_emftext_language_java_classifiers_Interface )
+ // Java.g:36867:4: c1= parse_org_emftext_language_java_classifiers_Interface
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_synpred219_Java22466);
+ c1=parse_org_emftext_language_java_classifiers_Interface();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred219_Java
+
+ // $ANTLR start synpred220_Java
+ public final void synpred220_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Enumeration c2 =null;
+
+
+ // Java.g:36868:4: (c2= parse_org_emftext_language_java_classifiers_Enumeration )
+ // Java.g:36868:4: c2= parse_org_emftext_language_java_classifiers_Enumeration
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_synpred220_Java22476);
+ c2=parse_org_emftext_language_java_classifiers_Enumeration();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred220_Java
+
+ // $ANTLR start synpred232_Java
+ public final void synpred232_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.types.NamespaceClassifierReference c0 =null;
+
+
+ // Java.g:36892:2: (c0= parse_org_emftext_language_java_types_NamespaceClassifierReference )
+ // Java.g:36892:2: c0= parse_org_emftext_language_java_types_NamespaceClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_synpred232_Java22638);
+ c0=parse_org_emftext_language_java_types_NamespaceClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred232_Java
+
+ // $ANTLR start synpred233_Java
+ public final void synpred233_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.types.ClassifierReference c1 =null;
+
+
+ // Java.g:36893:4: (c1= parse_org_emftext_language_java_types_ClassifierReference )
+ // Java.g:36893:4: c1= parse_org_emftext_language_java_types_ClassifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_synpred233_Java22648);
+ c1=parse_org_emftext_language_java_types_ClassifierReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred233_Java
+
+ // $ANTLR start synpred242_Java
+ public final void synpred242_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Class c0 =null;
+
+
+ // Java.g:36908:2: (c0= parse_org_emftext_language_java_classifiers_Class )
+ // Java.g:36908:2: c0= parse_org_emftext_language_java_classifiers_Class
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_synpred242_Java22759);
+ c0=parse_org_emftext_language_java_classifiers_Class();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred242_Java
+
+ // $ANTLR start synpred243_Java
+ public final void synpred243_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Interface c1 =null;
+
+
+ // Java.g:36909:4: (c1= parse_org_emftext_language_java_classifiers_Interface )
+ // Java.g:36909:4: c1= parse_org_emftext_language_java_classifiers_Interface
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_synpred243_Java22769);
+ c1=parse_org_emftext_language_java_classifiers_Interface();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred243_Java
+
+ // $ANTLR start synpred244_Java
+ public final void synpred244_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Enumeration c2 =null;
+
+
+ // Java.g:36910:4: (c2= parse_org_emftext_language_java_classifiers_Enumeration )
+ // Java.g:36910:4: c2= parse_org_emftext_language_java_classifiers_Enumeration
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_synpred244_Java22779);
+ c2=parse_org_emftext_language_java_classifiers_Enumeration();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred244_Java
+
+ // $ANTLR start synpred245_Java
+ public final void synpred245_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Annotation c3 =null;
+
+
+ // Java.g:36911:4: (c3= parse_org_emftext_language_java_classifiers_Annotation )
+ // Java.g:36911:4: c3= parse_org_emftext_language_java_classifiers_Annotation
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_synpred245_Java22789);
+ c3=parse_org_emftext_language_java_classifiers_Annotation();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred245_Java
+
+ // $ANTLR start synpred246_Java
+ public final void synpred246_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.Block c4 =null;
+
+
+ // Java.g:36912:4: (c4= parse_org_emftext_language_java_statements_Block )
+ // Java.g:36912:4: c4= parse_org_emftext_language_java_statements_Block
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Block_in_synpred246_Java22799);
+ c4=parse_org_emftext_language_java_statements_Block();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred246_Java
+
+ // $ANTLR start synpred247_Java
+ public final void synpred247_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.members.Constructor c5 =null;
+
+
+ // Java.g:36913:4: (c5= parse_org_emftext_language_java_members_Constructor )
+ // Java.g:36913:4: c5= parse_org_emftext_language_java_members_Constructor
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Constructor_in_synpred247_Java22809);
+ c5=parse_org_emftext_language_java_members_Constructor();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred247_Java
+
+ // $ANTLR start synpred248_Java
+ public final void synpred248_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.members.InterfaceMethod c6 =null;
+
+
+ // Java.g:36914:4: (c6= parse_org_emftext_language_java_members_InterfaceMethod )
+ // Java.g:36914:4: c6= parse_org_emftext_language_java_members_InterfaceMethod
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_InterfaceMethod_in_synpred248_Java22819);
+ c6=parse_org_emftext_language_java_members_InterfaceMethod();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred248_Java
+
+ // $ANTLR start synpred249_Java
+ public final void synpred249_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.members.ClassMethod c7 =null;
+
+
+ // Java.g:36915:4: (c7= parse_org_emftext_language_java_members_ClassMethod )
+ // Java.g:36915:4: c7= parse_org_emftext_language_java_members_ClassMethod
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_ClassMethod_in_synpred249_Java22829);
+ c7=parse_org_emftext_language_java_members_ClassMethod();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred249_Java
+
+ // $ANTLR start synpred250_Java
+ public final void synpred250_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.annotations.AnnotationAttribute c8 =null;
+
+
+ // Java.g:36916:4: (c8= parse_org_emftext_language_java_annotations_AnnotationAttribute )
+ // Java.g:36916:4: c8= parse_org_emftext_language_java_annotations_AnnotationAttribute
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttribute_in_synpred250_Java22839);
+ c8=parse_org_emftext_language_java_annotations_AnnotationAttribute();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred250_Java
+
+ // $ANTLR start synpred251_Java
+ public final void synpred251_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.members.Field c9 =null;
+
+
+ // Java.g:36917:4: (c9= parse_org_emftext_language_java_members_Field )
+ // Java.g:36917:4: c9= parse_org_emftext_language_java_members_Field
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_members_Field_in_synpred251_Java22849);
+ c9=parse_org_emftext_language_java_members_Field();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred251_Java
+
+ // $ANTLR start synpred263_Java
+ public final void synpred263_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Class c0 =null;
+
+
+ // Java.g:36947:2: (c0= parse_org_emftext_language_java_classifiers_Class )
+ // Java.g:36947:2: c0= parse_org_emftext_language_java_classifiers_Class
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_synpred263_Java23032);
+ c0=parse_org_emftext_language_java_classifiers_Class();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred263_Java
+
+ // $ANTLR start synpred264_Java
+ public final void synpred264_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Interface c1 =null;
+
+
+ // Java.g:36948:4: (c1= parse_org_emftext_language_java_classifiers_Interface )
+ // Java.g:36948:4: c1= parse_org_emftext_language_java_classifiers_Interface
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_synpred264_Java23042);
+ c1=parse_org_emftext_language_java_classifiers_Interface();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred264_Java
+
+ // $ANTLR start synpred265_Java
+ public final void synpred265_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Enumeration c2 =null;
+
+
+ // Java.g:36949:4: (c2= parse_org_emftext_language_java_classifiers_Enumeration )
+ // Java.g:36949:4: c2= parse_org_emftext_language_java_classifiers_Enumeration
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_synpred265_Java23052);
+ c2=parse_org_emftext_language_java_classifiers_Enumeration();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred265_Java
+
+ // $ANTLR start synpred266_Java
+ public final void synpred266_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.classifiers.Annotation c3 =null;
+
+
+ // Java.g:36950:4: (c3= parse_org_emftext_language_java_classifiers_Annotation )
+ // Java.g:36950:4: c3= parse_org_emftext_language_java_classifiers_Annotation
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_synpred266_Java23062);
+ c3=parse_org_emftext_language_java_classifiers_Annotation();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred266_Java
+
+ // $ANTLR start synpred267_Java
+ public final void synpred267_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.Block c4 =null;
+
+
+ // Java.g:36951:4: (c4= parse_org_emftext_language_java_statements_Block )
+ // Java.g:36951:4: c4= parse_org_emftext_language_java_statements_Block
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_Block_in_synpred267_Java23072);
+ c4=parse_org_emftext_language_java_statements_Block();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred267_Java
+
+ // $ANTLR start synpred268_Java
+ public final void synpred268_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.LocalVariableStatement c5 =null;
+
+
+ // Java.g:36952:4: (c5= parse_org_emftext_language_java_statements_LocalVariableStatement )
+ // Java.g:36952:4: c5= parse_org_emftext_language_java_statements_LocalVariableStatement
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_LocalVariableStatement_in_synpred268_Java23082);
+ c5=parse_org_emftext_language_java_statements_LocalVariableStatement();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred268_Java
+
+ // $ANTLR start synpred271_Java
+ public final void synpred271_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.ForLoop c8 =null;
+
+
+ // Java.g:36955:4: (c8= parse_org_emftext_language_java_statements_ForLoop )
+ // Java.g:36955:4: c8= parse_org_emftext_language_java_statements_ForLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_ForLoop_in_synpred271_Java23112);
+ c8=parse_org_emftext_language_java_statements_ForLoop();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred271_Java
+
+ // $ANTLR start synpred272_Java
+ public final void synpred272_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.ForEachLoop c9 =null;
+
+
+ // Java.g:36956:4: (c9= parse_org_emftext_language_java_statements_ForEachLoop )
+ // Java.g:36956:4: c9= parse_org_emftext_language_java_statements_ForEachLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_ForEachLoop_in_synpred272_Java23122);
+ c9=parse_org_emftext_language_java_statements_ForEachLoop();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred272_Java
+
+ // $ANTLR start synpred273_Java
+ public final void synpred273_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.WhileLoop c10 =null;
+
+
+ // Java.g:36957:4: (c10= parse_org_emftext_language_java_statements_WhileLoop )
+ // Java.g:36957:4: c10= parse_org_emftext_language_java_statements_WhileLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_WhileLoop_in_synpred273_Java23132);
+ c10=parse_org_emftext_language_java_statements_WhileLoop();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred273_Java
+
+ // $ANTLR start synpred274_Java
+ public final void synpred274_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.DoWhileLoop c11 =null;
+
+
+ // Java.g:36958:4: (c11= parse_org_emftext_language_java_statements_DoWhileLoop )
+ // Java.g:36958:4: c11= parse_org_emftext_language_java_statements_DoWhileLoop
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_DoWhileLoop_in_synpred274_Java23142);
+ c11=parse_org_emftext_language_java_statements_DoWhileLoop();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred274_Java
+
+ // $ANTLR start synpred276_Java
+ public final void synpred276_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.SynchronizedBlock c13 =null;
+
+
+ // Java.g:36960:4: (c13= parse_org_emftext_language_java_statements_SynchronizedBlock )
+ // Java.g:36960:4: c13= parse_org_emftext_language_java_statements_SynchronizedBlock
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_SynchronizedBlock_in_synpred276_Java23162);
+ c13=parse_org_emftext_language_java_statements_SynchronizedBlock();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred276_Java
+
+ // $ANTLR start synpred283_Java
+ public final void synpred283_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.statements.JumpLabel c20 =null;
+
+
+ // Java.g:36967:4: (c20= parse_org_emftext_language_java_statements_JumpLabel )
+ // Java.g:36967:4: c20= parse_org_emftext_language_java_statements_JumpLabel
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_statements_JumpLabel_in_synpred283_Java23232);
+ c20=parse_org_emftext_language_java_statements_JumpLabel();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred283_Java
+
+ // $ANTLR start synpred284_Java
+ public final void synpred284_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.parameters.OrdinaryParameter c0 =null;
+
+
+ // Java.g:36974:2: (c0= parse_org_emftext_language_java_parameters_OrdinaryParameter )
+ // Java.g:36974:2: c0= parse_org_emftext_language_java_parameters_OrdinaryParameter
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_synpred284_Java23263);
+ c0=parse_org_emftext_language_java_parameters_OrdinaryParameter();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred284_Java
+
+ // $ANTLR start synpred289_Java
+ public final void synpred289_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.instantiations.NewConstructorCall c1 =null;
+
+
+ // Java.g:36991:4: (c1= parse_org_emftext_language_java_instantiations_NewConstructorCall )
+ // Java.g:36991:4: c1= parse_org_emftext_language_java_instantiations_NewConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_synpred289_Java23355);
+ c1=parse_org_emftext_language_java_instantiations_NewConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred289_Java
+
+ // $ANTLR start synpred290_Java
+ public final void synpred290_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.instantiations.ExplicitConstructorCall c2 =null;
+
+
+ // Java.g:36992:4: (c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall )
+ // Java.g:36992:4: c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_synpred290_Java23365);
+ c2=parse_org_emftext_language_java_instantiations_ExplicitConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred290_Java
+
+ // $ANTLR start synpred291_Java
+ public final void synpred291_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped c3 =null;
+
+
+ // Java.g:36993:4: (c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped )
+ // Java.g:36993:4: c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_synpred291_Java23375);
+ c3=parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred291_Java
+
+ // $ANTLR start synpred293_Java
+ public final void synpred293_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInstantiationBySize c5 =null;
+
+
+ // Java.g:36995:4: (c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize )
+ // Java.g:36995:4: c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_synpred293_Java23395);
+ c5=parse_org_emftext_language_java_arrays_ArrayInstantiationBySize();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred293_Java
+
+ // $ANTLR start synpred294_Java
+ public final void synpred294_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.references.MethodCall c6 =null;
+
+
+ // Java.g:36996:4: (c6= parse_org_emftext_language_java_references_MethodCall )
+ // Java.g:36996:4: c6= parse_org_emftext_language_java_references_MethodCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_synpred294_Java23405);
+ c6=parse_org_emftext_language_java_references_MethodCall();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred294_Java
+
+ // $ANTLR start synpred295_Java
+ public final void synpred295_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.references.IdentifierReference c7 =null;
+
+
+ // Java.g:36997:4: (c7= parse_org_emftext_language_java_references_IdentifierReference )
+ // Java.g:36997:4: c7= parse_org_emftext_language_java_references_IdentifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_synpred295_Java23415);
+ c7=parse_org_emftext_language_java_references_IdentifierReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred295_Java
+
+ // $ANTLR start synpred297_Java
+ public final void synpred297_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.references.SelfReference c9 =null;
+
+
+ // Java.g:36999:4: (c9= parse_org_emftext_language_java_references_SelfReference )
+ // Java.g:36999:4: c9= parse_org_emftext_language_java_references_SelfReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_synpred297_Java23435);
+ c9=parse_org_emftext_language_java_references_SelfReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred297_Java
+
+ // $ANTLR start synpred309_Java
+ public final void synpred309_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.variables.LocalVariable c0 =null;
+
+
+ // Java.g:37029:2: (c0= parse_org_emftext_language_java_variables_LocalVariable )
+ // Java.g:37029:2: c0= parse_org_emftext_language_java_variables_LocalVariable
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_variables_LocalVariable_in_synpred309_Java23618);
+ c0=parse_org_emftext_language_java_variables_LocalVariable();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred309_Java
+
+ // $ANTLR start synpred334_Java
+ public final void synpred334_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.expressions.SuffixUnaryModificationExpression c0 =null;
+
+
+ // Java.g:37108:2: (c0= parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression )
+ // Java.g:37108:2: c0= parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression_in_synpred334_Java24057);
+ c0=parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred334_Java
+
+ // $ANTLR start synpred336_Java
+ public final void synpred336_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.instantiations.NewConstructorCall c1 =null;
+
+
+ // Java.g:37116:4: (c1= parse_org_emftext_language_java_instantiations_NewConstructorCall )
+ // Java.g:37116:4: c1= parse_org_emftext_language_java_instantiations_NewConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_synpred336_Java24098);
+ c1=parse_org_emftext_language_java_instantiations_NewConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred336_Java
+
+ // $ANTLR start synpred337_Java
+ public final void synpred337_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.instantiations.ExplicitConstructorCall c2 =null;
+
+
+ // Java.g:37117:4: (c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall )
+ // Java.g:37117:4: c2= parse_org_emftext_language_java_instantiations_ExplicitConstructorCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_synpred337_Java24108);
+ c2=parse_org_emftext_language_java_instantiations_ExplicitConstructorCall();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred337_Java
+
+ // $ANTLR start synpred338_Java
+ public final void synpred338_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped c3 =null;
+
+
+ // Java.g:37118:4: (c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped )
+ // Java.g:37118:4: c3= parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_synpred338_Java24118);
+ c3=parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred338_Java
+
+ // $ANTLR start synpred340_Java
+ public final void synpred340_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.arrays.ArrayInstantiationBySize c5 =null;
+
+
+ // Java.g:37120:4: (c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize )
+ // Java.g:37120:4: c5= parse_org_emftext_language_java_arrays_ArrayInstantiationBySize
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_synpred340_Java24138);
+ c5=parse_org_emftext_language_java_arrays_ArrayInstantiationBySize();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred340_Java
+
+ // $ANTLR start synpred341_Java
+ public final void synpred341_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.references.MethodCall c6 =null;
+
+
+ // Java.g:37121:4: (c6= parse_org_emftext_language_java_references_MethodCall )
+ // Java.g:37121:4: c6= parse_org_emftext_language_java_references_MethodCall
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_synpred341_Java24148);
+ c6=parse_org_emftext_language_java_references_MethodCall();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred341_Java
+
+ // $ANTLR start synpred342_Java
+ public final void synpred342_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.references.IdentifierReference c7 =null;
+
+
+ // Java.g:37122:4: (c7= parse_org_emftext_language_java_references_IdentifierReference )
+ // Java.g:37122:4: c7= parse_org_emftext_language_java_references_IdentifierReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_synpred342_Java24158);
+ c7=parse_org_emftext_language_java_references_IdentifierReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred342_Java
+
+ // $ANTLR start synpred344_Java
+ public final void synpred344_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.references.SelfReference c9 =null;
+
+
+ // Java.g:37124:4: (c9= parse_org_emftext_language_java_references_SelfReference )
+ // Java.g:37124:4: c9= parse_org_emftext_language_java_references_SelfReference
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_synpred344_Java24178);
+ c9=parse_org_emftext_language_java_references_SelfReference();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred344_Java
+
+ // $ANTLR start synpred347_Java
+ public final void synpred347_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.expressions.CastExpression c12 =null;
+
+
+ // Java.g:37127:4: (c12= parse_org_emftext_language_java_expressions_CastExpression )
+ // Java.g:37127:4: c12= parse_org_emftext_language_java_expressions_CastExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_CastExpression_in_synpred347_Java24208);
+ c12=parse_org_emftext_language_java_expressions_CastExpression();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred347_Java
+
+ // $ANTLR start synpred348_Java
+ public final void synpred348_Java_fragment() throws RecognitionException {
+ org.emftext.language.java.expressions.NestedExpression c13 =null;
+
+
+ // Java.g:37128:4: (c13= parse_org_emftext_language_java_expressions_NestedExpression )
+ // Java.g:37128:4: c13= parse_org_emftext_language_java_expressions_NestedExpression
+ {
+ pushFollow(FOLLOW_parse_org_emftext_language_java_expressions_NestedExpression_in_synpred348_Java24218);
+ c13=parse_org_emftext_language_java_expressions_NestedExpression();
+
+ state._fsp--;
+ if (state.failed) return ;
+
+ }
+
+ }
+ // $ANTLR end synpred348_Java
+
+ // Delegated rules
+
+ public final boolean synpred341_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred341_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred273_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred273_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred249_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred249_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred336_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred336_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred154_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred154_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred210_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred210_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred334_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred334_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred220_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred220_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred297_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred297_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred340_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred340_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred290_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred290_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred151_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred151_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred268_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred268_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred342_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred342_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred266_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred266_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred271_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred271_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred337_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred337_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred145_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred145_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred77_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred77_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred276_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred276_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred152_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred152_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred284_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred284_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred242_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred242_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred309_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred309_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred348_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred348_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred233_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred233_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred272_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred272_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred338_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred338_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred294_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred294_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred293_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred293_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred244_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred244_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred250_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred250_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred248_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred248_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred251_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred251_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred146_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred146_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred232_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred232_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred291_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred291_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred289_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred289_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred267_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred267_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred274_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred274_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred243_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred243_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred1_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred1_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred264_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred264_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred177_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred177_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred219_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred219_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred246_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred246_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred218_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred218_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred245_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred245_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred295_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred295_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred2_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred2_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred283_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred283_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred347_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred347_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred344_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred344_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred247_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred247_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred265_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred265_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred47_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred47_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred206_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred206_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred50_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred50_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred263_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred263_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred7_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred7_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+ public final boolean synpred164_Java() {
+ state.backtracking++;
+ int start = input.mark();
+ try {
+ synpred164_Java_fragment(); // can never throw exception
+ } catch (RecognitionException re) {
+ System.err.println("impossible: "+re);
+ }
+ boolean success = !state.failed;
+ input.rewind(start);
+ state.backtracking--;
+ state.failed=false;
+ return success;
+ }
+
+
+ protected DFA214 dfa214 = new DFA214(this);
+ protected DFA221 dfa221 = new DFA221(this);
+ static final String DFA214_eotS =
+ "\13\uffff";
+ static final String DFA214_eofS =
+ "\13\uffff";
+ static final String DFA214_minS =
+ "\1\116\1\16\1\45\2\16\1\uffff\1\45\1\uffff\1\16\2\uffff";
+ static final String DFA214_maxS =
+ "\1\116\1\134\1\52\1\16\1\34\1\uffff\1\52\1\uffff\1\34\2\uffff";
+ static final String DFA214_acceptS =
+ "\5\uffff\1\1\1\uffff\1\2\1\uffff\1\3\1\4";
+ static final String DFA214_specialS =
+ "\13\uffff}>";
+ static final String[] DFA214_transitionS = {
+ "\1\1",
+ "\1\2\115\uffff\1\3",
+ "\1\4\4\uffff\1\5",
+ "\1\6",
+ "\1\2\15\uffff\1\7",
+ "",
+ "\1\10\4\uffff\1\11",
+ "",
+ "\1\6\15\uffff\1\12",
+ "",
+ ""
+ };
+
+ static final short[] DFA214_eot = DFA.unpackEncodedString(DFA214_eotS);
+ static final short[] DFA214_eof = DFA.unpackEncodedString(DFA214_eofS);
+ static final char[] DFA214_min = DFA.unpackEncodedStringToUnsignedChars(DFA214_minS);
+ static final char[] DFA214_max = DFA.unpackEncodedStringToUnsignedChars(DFA214_maxS);
+ static final short[] DFA214_accept = DFA.unpackEncodedString(DFA214_acceptS);
+ static final short[] DFA214_special = DFA.unpackEncodedString(DFA214_specialS);
+ static final short[][] DFA214_transition;
+
+ static {
+ int numStates = DFA214_transitionS.length;
+ DFA214_transition = new short[numStates][];
+ for (int i=0; i";
+ static final String[] DFA221_transitionS = {
+ "\12\47\1\21\1\uffff\2\47\1\uffff\1\47\1\uffff\1\47\4\uffff\1"+
+ "\47\3\uffff\2\47\2\uffff\2\47\6\uffff\1\40\1\47\4\uffff\1\1"+
+ "\7\uffff\1\3\1\33\1\23\1\45\1\25\2\uffff\1\24\1\15\1\46\1\uffff"+
+ "\1\37\1\32\1\uffff\1\17\1\uffff\1\6\1\uffff\1\31\1\35\1\34\3"+
+ "\uffff\1\27\1\16\1\30\1\10\2\47\1\uffff\1\5\1\4\1\2\1\43\1\26"+
+ "\1\7\1\14\1\47\1\42\1\11\1\47\1\44\1\uffff\1\12\1\41\1\22\1"+
+ "\13\1\36\1\20\4\uffff\1\47",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "",
+ "",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "\1\uffff",
+ "",
+ "",
+ "\1\uffff",
+ "",
+ "\1\uffff",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ };
+
+ static final short[] DFA221_eot = DFA.unpackEncodedString(DFA221_eotS);
+ static final short[] DFA221_eof = DFA.unpackEncodedString(DFA221_eofS);
+ static final char[] DFA221_min = DFA.unpackEncodedStringToUnsignedChars(DFA221_minS);
+ static final char[] DFA221_max = DFA.unpackEncodedStringToUnsignedChars(DFA221_maxS);
+ static final short[] DFA221_accept = DFA.unpackEncodedString(DFA221_acceptS);
+ static final short[] DFA221_special = DFA.unpackEncodedString(DFA221_specialS);
+ static final short[][] DFA221_transition;
+
+ static {
+ int numStates = DFA221_transitionS.length;
+ DFA221_transition = new short[numStates][];
+ for (int i=0; i=0 ) return s;
+ break;
+ case 1 :
+ int LA221_2 = input.LA(1);
+
+
+ int index221_2 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_2);
+
+ if ( s>=0 ) return s;
+ break;
+ case 2 :
+ int LA221_3 = input.LA(1);
+
+
+ int index221_3 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_3);
+
+ if ( s>=0 ) return s;
+ break;
+ case 3 :
+ int LA221_4 = input.LA(1);
+
+
+ int index221_4 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_4);
+
+ if ( s>=0 ) return s;
+ break;
+ case 4 :
+ int LA221_5 = input.LA(1);
+
+
+ int index221_5 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_5);
+
+ if ( s>=0 ) return s;
+ break;
+ case 5 :
+ int LA221_6 = input.LA(1);
+
+
+ int index221_6 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_6);
+
+ if ( s>=0 ) return s;
+ break;
+ case 6 :
+ int LA221_7 = input.LA(1);
+
+
+ int index221_7 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_7);
+
+ if ( s>=0 ) return s;
+ break;
+ case 7 :
+ int LA221_8 = input.LA(1);
+
+
+ int index221_8 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_8);
+
+ if ( s>=0 ) return s;
+ break;
+ case 8 :
+ int LA221_9 = input.LA(1);
+
+
+ int index221_9 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (synpred276_Java()) ) {s = 68;}
+
+
+ input.seek(index221_9);
+
+ if ( s>=0 ) return s;
+ break;
+ case 9 :
+ int LA221_10 = input.LA(1);
+
+
+ int index221_10 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_10);
+
+ if ( s>=0 ) return s;
+ break;
+ case 10 :
+ int LA221_11 = input.LA(1);
+
+
+ int index221_11 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_11);
+
+ if ( s>=0 ) return s;
+ break;
+ case 11 :
+ int LA221_12 = input.LA(1);
+
+
+ int index221_12 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (synpred264_Java()) ) {s = 14;}
+
+ else if ( (synpred265_Java()) ) {s = 15;}
+
+ else if ( (synpred266_Java()) ) {s = 65;}
+
+ else if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (synpred268_Java()) ) {s = 66;}
+
+
+ input.seek(index221_12);
+
+ if ( s>=0 ) return s;
+ break;
+ case 12 :
+ int LA221_13 = input.LA(1);
+
+
+ int index221_13 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred263_Java()) ) {s = 64;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_13);
+
+ if ( s>=0 ) return s;
+ break;
+ case 13 :
+ int LA221_16 = input.LA(1);
+
+
+ int index221_16 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred267_Java()) ) {s = 67;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_16);
+
+ if ( s>=0 ) return s;
+ break;
+ case 14 :
+ int LA221_17 = input.LA(1);
+
+
+ int index221_17 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (synpred283_Java()) ) {s = 69;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_17);
+
+ if ( s>=0 ) return s;
+ break;
+ case 15 :
+ int LA221_18 = input.LA(1);
+
+
+ int index221_18 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_18);
+
+ if ( s>=0 ) return s;
+ break;
+ case 16 :
+ int LA221_19 = input.LA(1);
+
+
+ int index221_19 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_19);
+
+ if ( s>=0 ) return s;
+ break;
+ case 17 :
+ int LA221_20 = input.LA(1);
+
+
+ int index221_20 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_20);
+
+ if ( s>=0 ) return s;
+ break;
+ case 18 :
+ int LA221_21 = input.LA(1);
+
+
+ int index221_21 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_21);
+
+ if ( s>=0 ) return s;
+ break;
+ case 19 :
+ int LA221_22 = input.LA(1);
+
+
+ int index221_22 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_22);
+
+ if ( s>=0 ) return s;
+ break;
+ case 20 :
+ int LA221_23 = input.LA(1);
+
+
+ int index221_23 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_23);
+
+ if ( s>=0 ) return s;
+ break;
+ case 21 :
+ int LA221_24 = input.LA(1);
+
+
+ int index221_24 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_24);
+
+ if ( s>=0 ) return s;
+ break;
+ case 22 :
+ int LA221_25 = input.LA(1);
+
+
+ int index221_25 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_25);
+
+ if ( s>=0 ) return s;
+ break;
+ case 23 :
+ int LA221_26 = input.LA(1);
+
+
+ int index221_26 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred268_Java()) ) {s = 66;}
+
+ else if ( (true) ) {s = 39;}
+
+
+ input.seek(index221_26);
+
+ if ( s>=0 ) return s;
+ break;
+ case 24 :
+ int LA221_29 = input.LA(1);
+
+
+ int index221_29 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred271_Java()) ) {s = 70;}
+
+ else if ( (synpred272_Java()) ) {s = 71;}
+
+
+ input.seek(index221_29);
+
+ if ( s>=0 ) return s;
+ break;
+ case 25 :
+ int LA221_31 = input.LA(1);
+
+
+ int index221_31 = input.index();
+ input.rewind();
+
+ s = -1;
+ if ( (synpred273_Java()) ) {s = 30;}
+
+ else if ( (synpred274_Java()) ) {s = 72;}
+
+
+ input.seek(index221_31);
+
+ if ( s>=0 ) return s;
+ break;
+ }
+ if (state.backtracking>0) {state.failed=true; return -1;}
+
+ NoViableAltException nvae =
+ new NoViableAltException(getDescription(), 221, _s, input);
+ error(nvae);
+ throw nvae;
+ }
+
+ }
+
+
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_containers_CompilationUnit_in_start82 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_containers_Package_in_start96 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_containers_EmptyModel_in_start110 = new BitSet(new long[]{0x0000000000000000L});
+ public static final BitSet FOLLOW_EOF_in_start117 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_imports_Import_in_parse_org_emftext_language_java_containers_EmptyModel158 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_EmptyModel186 = new BitSet(new long[]{0x0000040000000002L,0x0000000000004000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_EmptyModel228 = new BitSet(new long[]{0x0000040000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_containers_Package285 = new BitSet(new long[]{0x0001000000000000L,0x0000000000400000L});
+ public static final BitSet FOLLOW_86_in_parse_org_emftext_language_java_containers_Package311 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_Package340 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_containers_Package373 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_Package410 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_Package431 = new BitSet(new long[]{0x0000040000000002L,0x0000000000004000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_Package454 = new BitSet(new long[]{0x0000040000000002L,0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_imports_Import_in_parse_org_emftext_language_java_containers_Package502 = new BitSet(new long[]{0x0000040000000002L,0x0000000000004000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_Package552 = new BitSet(new long[]{0x0000040000000002L});
+ public static final BitSet FOLLOW_86_in_parse_org_emftext_language_java_containers_CompilationUnit609 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_CompilationUnit635 = new BitSet(new long[]{0x0000042000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_containers_CompilationUnit681 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_containers_CompilationUnit715 = new BitSet(new long[]{0x0000042000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_CompilationUnit783 = new BitSet(new long[]{0x0101040000000000L,0x00000091338A4141L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_imports_Import_in_parse_org_emftext_language_java_containers_CompilationUnit831 = new BitSet(new long[]{0x0101040000000000L,0x00000091338A4141L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_CompilationUnit881 = new BitSet(new long[]{0x0101040000000000L,0x00000091338A0141L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_ConcreteClassifier_in_parse_org_emftext_language_java_containers_CompilationUnit929 = new BitSet(new long[]{0x0105040000000002L,0x00000091338A0141L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_containers_CompilationUnit970 = new BitSet(new long[]{0x0105040000000002L,0x00000091338A0141L});
+ public static final BitSet FOLLOW_50_in_parse_org_emftext_language_java_containers_CompilationUnit1041 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_78_in_parse_org_emftext_language_java_imports_ClassifierImport1089 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_ClassifierImport1118 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_imports_ClassifierImport1151 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_ClassifierImport1188 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_imports_ClassifierImport1209 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_78_in_parse_org_emftext_language_java_imports_PackageImport1238 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_PackageImport1267 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_imports_PackageImport1300 = new BitSet(new long[]{0x0000000010004000L});
+ public static final BitSet FOLLOW_28_in_parse_org_emftext_language_java_imports_PackageImport1333 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_imports_PackageImport1347 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_78_in_parse_org_emftext_language_java_imports_StaticMemberImport1376 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_imports_StaticMemberImport1394 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_StaticMemberImport1427 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_imports_StaticMemberImport1460 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_StaticMemberImport1497 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_imports_StaticMemberImport1518 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_78_in_parse_org_emftext_language_java_imports_StaticClassifierImport1547 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_imports_StaticClassifierImport1565 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_imports_StaticClassifierImport1598 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_imports_StaticClassifierImport1631 = new BitSet(new long[]{0x0000000010004000L});
+ public static final BitSet FOLLOW_28_in_parse_org_emftext_language_java_imports_StaticClassifierImport1664 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_imports_StaticClassifierImport1678 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Class1716 = new BitSet(new long[]{0x0101000000000000L,0x0000009133880101L});
+ public static final BitSet FOLLOW_64_in_parse_org_emftext_language_java_classifiers_Class1742 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Class1760 = new BitSet(new long[]{0x0000080000000000L,0x0000020000002080L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_classifiers_Class1790 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Class1816 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Class1857 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Class1891 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_classifiers_Class1952 = new BitSet(new long[]{0x0000000000000000L,0x0000020000002080L});
+ public static final BitSet FOLLOW_71_in_parse_org_emftext_language_java_classifiers_Class1994 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Class2020 = new BitSet(new long[]{0x0000000000000000L,0x0000020000002000L});
+ public static final BitSet FOLLOW_77_in_parse_org_emftext_language_java_classifiers_Class2070 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Class2103 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Class2151 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Class2189 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Class2286 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Class2315 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Class2356 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_classifiers_AnonymousClass2385 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_AnonymousClass2414 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_classifiers_AnonymousClass2455 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Interface2493 = new BitSet(new long[]{0x0101000000000000L,0x00000091338A0100L});
+ public static final BitSet FOLLOW_81_in_parse_org_emftext_language_java_classifiers_Interface2519 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Interface2537 = new BitSet(new long[]{0x0000080000000000L,0x0000020000000080L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_classifiers_Interface2567 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Interface2593 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Interface2634 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_classifiers_Interface2668 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_classifiers_Interface2729 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000080L});
+ public static final BitSet FOLLOW_71_in_parse_org_emftext_language_java_classifiers_Interface2771 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Interface2804 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Interface2852 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Interface2890 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Interface2987 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Interface3016 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Interface3057 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Enumeration3095 = new BitSet(new long[]{0x0101000000000000L,0x0000009133880140L});
+ public static final BitSet FOLLOW_70_in_parse_org_emftext_language_java_classifiers_Enumeration3121 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Enumeration3139 = new BitSet(new long[]{0x0000000000000000L,0x0000020000002000L});
+ public static final BitSet FOLLOW_77_in_parse_org_emftext_language_java_classifiers_Enumeration3169 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Enumeration3202 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Enumeration3250 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_classifiers_Enumeration3288 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Enumeration3385 = new BitSet(new long[]{0x0001040200004000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_EnumConstant_in_parse_org_emftext_language_java_classifiers_Enumeration3414 = new BitSet(new long[]{0x0000040200000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Enumeration3455 = new BitSet(new long[]{0x0001000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_EnumConstant_in_parse_org_emftext_language_java_classifiers_Enumeration3489 = new BitSet(new long[]{0x0000040200000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_classifiers_Enumeration3572 = new BitSet(new long[]{0x0000040000000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_classifiers_Enumeration3614 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Enumeration3655 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Enumeration3729 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_classifiers_Annotation3767 = new BitSet(new long[]{0x0101000000000000L,0x0000009133880100L});
+ public static final BitSet FOLLOW_48_in_parse_org_emftext_language_java_classifiers_Annotation3793 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+ public static final BitSet FOLLOW_81_in_parse_org_emftext_language_java_classifiers_Annotation3807 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_classifiers_Annotation3825 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_classifiers_Annotation3846 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Member_in_parse_org_emftext_language_java_classifiers_Annotation3875 = new BitSet(new long[]{0x95010C0000004000L,0x000022D13B8F0551L});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_classifiers_Annotation3916 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_48_in_parse_org_emftext_language_java_annotations_AnnotationInstance3945 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationInstance3974 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_annotations_AnnotationInstance4007 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationInstance4044 = new BitSet(new long[]{0x0000000004000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationParameter_in_parse_org_emftext_language_java_annotations_AnnotationInstance4080 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4136 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4154 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4168 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_annotations_SingleAnnotationParameter4186 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4215 = new BitSet(new long[]{0x0000000008004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4244 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4285 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4319 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_annotations_AnnotationParameterList4393 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4426 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4447 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4465 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_annotations_AnnotationAttributeSetting4479 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_generics_TypeParameter4516 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
+ public static final BitSet FOLLOW_71_in_parse_org_emftext_language_java_generics_TypeParameter4546 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_TypeParameter4572 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_24_in_parse_org_emftext_language_java_generics_TypeParameter4613 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_TypeParameter4647 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_members_EnumConstant4745 = new BitSet(new long[]{0x0001000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_EnumConstant4775 = new BitSet(new long[]{0x0000000004000002L,0x0000020000000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_members_EnumConstant4805 = new BitSet(new long[]{0x9401080CCC2B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_EnumConstant4846 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_EnumConstant4901 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_EnumConstant4943 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_members_EnumConstant5047 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_AnonymousClass_in_parse_org_emftext_language_java_members_EnumConstant5095 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Modifier_in_parse_org_emftext_language_java_statements_Block5160 = new BitSet(new long[]{0x0100000000000000L,0x0000029133880100L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_statements_Block5186 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_Block5215 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_statements_Block5256 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_Constructor5294 = new BitSet(new long[]{0x0101080000004000L,0x0000009133880100L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_members_Constructor5329 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_Constructor5355 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_Constructor5396 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_Constructor5430 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_members_Constructor5491 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_Constructor5528 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_members_Constructor5549 = new BitSet(new long[]{0x9501000008004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_Constructor5578 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_Constructor5619 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_Constructor5653 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_members_Constructor5727 = new BitSet(new long[]{0x0000000000000000L,0x0000020800000000L});
+ public static final BitSet FOLLOW_99_in_parse_org_emftext_language_java_members_Constructor5750 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_Constructor5776 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_Constructor5817 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_Constructor5851 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_members_Constructor5925 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_members_Constructor5954 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_members_Constructor5995 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_InterfaceMethod6033 = new BitSet(new long[]{0x9501080000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_members_InterfaceMethod6068 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_InterfaceMethod6094 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_InterfaceMethod6135 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_InterfaceMethod6169 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_members_InterfaceMethod6230 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_members_InterfaceMethod6272 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_InterfaceMethod6306 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_InterfaceMethod6350 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_members_InterfaceMethod6371 = new BitSet(new long[]{0x9501000008004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_InterfaceMethod6400 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_InterfaceMethod6441 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_InterfaceMethod6475 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_members_InterfaceMethod6549 = new BitSet(new long[]{0x0002040000000000L,0x0000000800000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_InterfaceMethod6572 = new BitSet(new long[]{0x0002040000000000L,0x0000000800000000L});
+ public static final BitSet FOLLOW_99_in_parse_org_emftext_language_java_members_InterfaceMethod6607 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_InterfaceMethod6633 = new BitSet(new long[]{0x0000040200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_InterfaceMethod6674 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_InterfaceMethod6708 = new BitSet(new long[]{0x0000040200000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_members_InterfaceMethod6782 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttribute_in_parse_org_emftext_language_java_members_InterfaceMethod6801 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_ClassMethod6835 = new BitSet(new long[]{0x9501080000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_members_ClassMethod6870 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_ClassMethod6896 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_ClassMethod6937 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_members_ClassMethod6971 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_members_ClassMethod7032 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_members_ClassMethod7074 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_ClassMethod7108 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_ClassMethod7152 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_members_ClassMethod7173 = new BitSet(new long[]{0x9501000008004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_ClassMethod7202 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_ClassMethod7243 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_members_ClassMethod7277 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_members_ClassMethod7351 = new BitSet(new long[]{0x0002000000000000L,0x0000020800000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_ClassMethod7374 = new BitSet(new long[]{0x0002000000000000L,0x0000020800000000L});
+ public static final BitSet FOLLOW_99_in_parse_org_emftext_language_java_members_ClassMethod7409 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_ClassMethod7435 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_ClassMethod7476 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_members_ClassMethod7510 = new BitSet(new long[]{0x0000000200000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_members_ClassMethod7584 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_members_ClassMethod7613 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_members_ClassMethod7654 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7692 = new BitSet(new long[]{0x9501080000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7727 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7753 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7794 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7828 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7889 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7931 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_annotations_AnnotationAttribute7965 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8009 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8030 = new BitSet(new long[]{0x9501000008004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8059 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8100 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8134 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8208 = new BitSet(new long[]{0x0002000000000000L,0x0000000800000004L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8231 = new BitSet(new long[]{0x0002000000000000L,0x0000000800000004L});
+ public static final BitSet FOLLOW_99_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8266 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8292 = new BitSet(new long[]{0x0000000200000000L,0x0000000000000004L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8333 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8367 = new BitSet(new long[]{0x0000000200000000L,0x0000000000000004L});
+ public static final BitSet FOLLOW_66_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8441 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8459 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_annotations_AnnotationAttribute8477 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8515 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8545 = new BitSet(new long[]{0x0002080000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8572 = new BitSet(new long[]{0x0002080000004000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8607 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8633 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8674 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8708 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8769 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8806 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_parameters_OrdinaryParameter8836 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8886 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8916 = new BitSet(new long[]{0x0002084000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8943 = new BitSet(new long[]{0x0002084000000000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_parameters_VariableLengthParameter8978 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9004 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9045 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9079 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9140 = new BitSet(new long[]{0x0000004000000000L});
+ public static final BitSet FOLLOW_38_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9173 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_parameters_VariableLengthParameter9191 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_variables_LocalVariable9236 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_variables_LocalVariable9266 = new BitSet(new long[]{0x0002080000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_variables_LocalVariable9293 = new BitSet(new long[]{0x0002080000004000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_variables_LocalVariable9328 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_variables_LocalVariable9354 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_variables_LocalVariable9395 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_variables_LocalVariable9429 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_variables_LocalVariable9490 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_variables_LocalVariable9527 = new BitSet(new long[]{0x0002100200000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_variables_LocalVariable9557 = new BitSet(new long[]{0x0002100200000002L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_variables_LocalVariable9592 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_variables_LocalVariable9618 = new BitSet(new long[]{0x0000000200000002L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_variables_LocalVariable9668 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_variables_AdditionalLocalVariable_in_parse_org_emftext_language_java_variables_LocalVariable9694 = new BitSet(new long[]{0x0000000200000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_variables_LocalVariable_in_parse_org_emftext_language_java_statements_LocalVariableStatement9754 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_LocalVariableStatement9772 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9805 = new BitSet(new long[]{0x0002100000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9835 = new BitSet(new long[]{0x0002100000000002L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9870 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_variables_AdditionalLocalVariable9896 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_parse_org_emftext_language_java_members_Field9961 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_members_Field9991 = new BitSet(new long[]{0x0002080000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_Field10018 = new BitSet(new long[]{0x0002080000004000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_members_Field10053 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_members_Field10079 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_Field10120 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_members_Field10154 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_members_Field10215 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_Field10252 = new BitSet(new long[]{0x0002140200000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_Field10282 = new BitSet(new long[]{0x0002140200000000L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_members_Field10317 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_Field10343 = new BitSet(new long[]{0x0000040200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_members_Field10393 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_AdditionalField_in_parse_org_emftext_language_java_members_Field10419 = new BitSet(new long[]{0x0000040200000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_members_Field10460 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_members_AdditionalField10493 = new BitSet(new long[]{0x0002100000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_members_AdditionalField10523 = new BitSet(new long[]{0x0002100000000002L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_members_AdditionalField10558 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_members_AdditionalField10584 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_members_EmptyMember10640 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_84_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10669 = new BitSet(new long[]{0x9400080000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10692 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10718 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10759 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10793 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10854 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10891 = new BitSet(new long[]{0x0000080004000000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10918 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10944 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_instantiations_NewConstructorCall10985 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11019 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11080 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11113 = new BitSet(new long[]{0x9401080CCC2B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11142 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11183 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11217 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11291 = new BitSet(new long[]{0x0000002000000002L,0x0000020000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_AnonymousClass_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11314 = new BitSet(new long[]{0x0000002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11349 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_instantiations_NewConstructorCall11375 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11440 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11466 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11507 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11541 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11602 = new BitSet(new long[]{0x0000000000000000L,0x0000000240000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_Self_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11639 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11657 = new BitSet(new long[]{0x9401080CCC2B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11686 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11727 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11761 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11835 = new BitSet(new long[]{0x0000002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11858 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall11884 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_84_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped11940 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped11958 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped11985 = new BitSet(new long[]{0x0002000000000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12015 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12042 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12077 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped12103 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12163 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12190 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12225 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped12251 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_84_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12307 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12325 = new BitSet(new long[]{0x0002000000000000L});
+ public static final BitSet FOLLOW_49_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12352 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12378 = new BitSet(new long[]{0x0020000000000000L});
+ public static final BitSet FOLLOW_53_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12406 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12448 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12483 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize12509 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_arrays_ArrayInitializer12565 = new BitSet(new long[]{0x9401080EC42B7FF0L,0x0000624248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArrayInitializer12594 = new BitSet(new long[]{0x0000000200000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInitializer12614 = new BitSet(new long[]{0x0000000200000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_arrays_ArrayInitializer12655 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArrayInitializer12689 = new BitSet(new long[]{0x0000000200000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_parse_org_emftext_language_java_arrays_ArrayInitializer12715 = new BitSet(new long[]{0x0000000200000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_arrays_ArrayInitializer12798 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_arrays_ArrayInitializer12831 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_parse_org_emftext_language_java_arrays_ArraySelector12860 = new BitSet(new long[]{0x9421080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_arrays_ArraySelector12883 = new BitSet(new long[]{0x0020000000000000L});
+ public static final BitSet FOLLOW_53_in_parse_org_emftext_language_java_arrays_ArraySelector12909 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_types_NamespaceClassifierReference12953 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_types_NamespaceClassifierReference12986 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_parse_org_emftext_language_java_types_NamespaceClassifierReference13034 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_types_NamespaceClassifierReference13062 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_parse_org_emftext_language_java_types_NamespaceClassifierReference13099 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_types_ClassifierReference13136 = new BitSet(new long[]{0x0000080000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_types_ClassifierReference13166 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_types_ClassifierReference13192 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_types_ClassifierReference13233 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_types_ClassifierReference13267 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_types_ClassifierReference13328 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_references_MethodCall13385 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13411 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_references_MethodCall13452 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13486 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_references_MethodCall13547 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_references_MethodCall13584 = new BitSet(new long[]{0x0000080004000000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_references_MethodCall13614 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13640 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_references_MethodCall13681 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_MethodCall13715 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_references_MethodCall13776 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_references_MethodCall13809 = new BitSet(new long[]{0x9401080CCC2B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_references_MethodCall13838 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_references_MethodCall13879 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_references_MethodCall13913 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_references_MethodCall13987 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_references_MethodCall14010 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_references_MethodCall14045 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_MethodCall14071 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_references_IdentifierReference14131 = new BitSet(new long[]{0x0002082000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_references_IdentifierReference14161 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_IdentifierReference14187 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_references_IdentifierReference14228 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_parse_org_emftext_language_java_references_IdentifierReference14262 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_references_IdentifierReference14323 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_references_IdentifierReference14365 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_references_IdentifierReference14400 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_IdentifierReference14426 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_64_in_parse_org_emftext_language_java_references_ReflectiveClassReference14482 = new BitSet(new long[]{0x0000002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_references_ReflectiveClassReference14505 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_ReflectiveClassReference14531 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_Self_in_parse_org_emftext_language_java_references_SelfReference14591 = new BitSet(new long[]{0x0000002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_references_SelfReference14618 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_SelfReference14644 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_PrimitiveType_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14704 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14731 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14766 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_PrimitiveTypeReference14792 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_97_in_parse_org_emftext_language_java_literals_This14848 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_94_in_parse_org_emftext_language_java_literals_Super14877 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_STRING_LITERAL_in_parse_org_emftext_language_java_references_StringReference14910 = new BitSet(new long[]{0x0000002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_references_StringReference14940 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_references_StringReference14966 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_QualifiedTypeArgument15026 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_generics_QualifiedTypeArgument15053 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_47_in_parse_org_emftext_language_java_generics_UnknownTypeArgument15094 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_47_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15123 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+ public static final BitSet FOLLOW_71_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15137 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15155 = new BitSet(new long[]{0x0002000001000002L});
+ public static final BitSet FOLLOW_24_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15182 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15208 = new BitSet(new long[]{0x0002000001000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_generics_ExtendsTypeArgument15258 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_47_in_parse_org_emftext_language_java_generics_SuperTypeArgument15299 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+ public static final BitSet FOLLOW_94_in_parse_org_emftext_language_java_generics_SuperTypeArgument15313 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_generics_SuperTypeArgument15331 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_generics_SuperTypeArgument15358 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_57_in_parse_org_emftext_language_java_statements_Assert15399 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Assert15417 = new BitSet(new long[]{0x0000060000000000L});
+ public static final BitSet FOLLOW_41_in_parse_org_emftext_language_java_statements_Assert15444 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Assert15470 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_Assert15511 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_76_in_parse_org_emftext_language_java_statements_Condition15540 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_Condition15554 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Condition15572 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_Condition15590 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_Condition15608 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+ public static final BitSet FOLLOW_69_in_parse_org_emftext_language_java_statements_Condition15635 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_Condition15661 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_75_in_parse_org_emftext_language_java_statements_ForLoop15717 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_ForLoop15731 = new BitSet(new long[]{0x95010C0CC42B7FF0L,0x000042D37BBD0511L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_ForLoopInitializer_in_parse_org_emftext_language_java_statements_ForLoop15754 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_ForLoop15780 = new BitSet(new long[]{0x94010C0CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForLoop15803 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_ForLoop15829 = new BitSet(new long[]{0x9401080CCC2B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForLoop15858 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_statements_ForLoop15899 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForLoop15933 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_ForLoop16007 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_ForLoop16025 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_75_in_parse_org_emftext_language_java_statements_ForEachLoop16058 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_ForEachLoop16072 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_parse_org_emftext_language_java_statements_ForEachLoop16090 = new BitSet(new long[]{0x0000020000000000L});
+ public static final BitSet FOLLOW_41_in_parse_org_emftext_language_java_statements_ForEachLoop16108 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ForEachLoop16126 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_ForEachLoop16144 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_ForEachLoop16162 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_104_in_parse_org_emftext_language_java_statements_WhileLoop16195 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_WhileLoop16209 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_WhileLoop16227 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_WhileLoop16245 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_WhileLoop16263 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_DoWhileLoop_in_parse_org_emftext_language_java_statements_WhileLoop16286 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_67_in_parse_org_emftext_language_java_statements_DoWhileLoop16311 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_DoWhileLoop16329 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+ public static final BitSet FOLLOW_104_in_parse_org_emftext_language_java_statements_DoWhileLoop16347 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_DoWhileLoop16361 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_DoWhileLoop16379 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_DoWhileLoop16397 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_DoWhileLoop16411 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_EmptyStatement16440 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_96_in_parse_org_emftext_language_java_statements_SynchronizedBlock16469 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_SynchronizedBlock16483 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_SynchronizedBlock16501 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_SynchronizedBlock16519 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_statements_SynchronizedBlock16533 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_SynchronizedBlock16562 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_statements_SynchronizedBlock16603 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_101_in_parse_org_emftext_language_java_statements_TryBlock16632 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_statements_TryBlock16646 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_TryBlock16675 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_statements_TryBlock16716 = new BitSet(new long[]{0x4000000000000002L,0x0000000000000200L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_CatchBlock_in_parse_org_emftext_language_java_statements_TryBlock16739 = new BitSet(new long[]{0x4000000000000002L,0x0000000000000200L});
+ public static final BitSet FOLLOW_73_in_parse_org_emftext_language_java_statements_TryBlock16774 = new BitSet(new long[]{0x0100000000000000L,0x0000029133880100L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Block_in_parse_org_emftext_language_java_statements_TryBlock16800 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_62_in_parse_org_emftext_language_java_statements_CatchBlock16856 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_CatchBlock16870 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_parse_org_emftext_language_java_statements_CatchBlock16888 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_CatchBlock16906 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_statements_CatchBlock16920 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_CatchBlock16949 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000063F7FFBF1D5BL});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_statements_CatchBlock16990 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_95_in_parse_org_emftext_language_java_statements_Switch17019 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_statements_Switch17033 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Switch17051 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_statements_Switch17069 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+ public static final BitSet FOLLOW_105_in_parse_org_emftext_language_java_statements_Switch17083 = new BitSet(new long[]{0x2000000000000000L,0x0000200000000004L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_SwitchCase_in_parse_org_emftext_language_java_statements_Switch17112 = new BitSet(new long[]{0x2000000000000000L,0x0000200000000004L});
+ public static final BitSet FOLLOW_109_in_parse_org_emftext_language_java_statements_Switch17152 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_61_in_parse_org_emftext_language_java_statements_NormalSwitchCase17181 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_NormalSwitchCase17199 = new BitSet(new long[]{0x0000020000000000L});
+ public static final BitSet FOLLOW_41_in_parse_org_emftext_language_java_statements_NormalSwitchCase17217 = new BitSet(new long[]{0x9F010C0CC42B7FF2L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_NormalSwitchCase17246 = new BitSet(new long[]{0x9F010C0CC42B7FF2L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_66_in_parse_org_emftext_language_java_statements_DefaultSwitchCase17302 = new BitSet(new long[]{0x0000020000000000L});
+ public static final BitSet FOLLOW_41_in_parse_org_emftext_language_java_statements_DefaultSwitchCase17316 = new BitSet(new long[]{0x9F010C0CC42B7FF2L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_DefaultSwitchCase17345 = new BitSet(new long[]{0x9F010C0CC42B7FF2L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_90_in_parse_org_emftext_language_java_statements_Return17401 = new BitSet(new long[]{0x94010C0CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Return17424 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_Return17450 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_98_in_parse_org_emftext_language_java_statements_Throw17479 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_Throw17497 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_Throw17515 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_59_in_parse_org_emftext_language_java_statements_Break17544 = new BitSet(new long[]{0x0000040000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_statements_Break17573 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_Break17619 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_65_in_parse_org_emftext_language_java_statements_Continue17648 = new BitSet(new long[]{0x0000040000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_statements_Continue17677 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_Continue17723 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_parse_org_emftext_language_java_statements_JumpLabel17756 = new BitSet(new long[]{0x0000020000000000L});
+ public static final BitSet FOLLOW_41_in_parse_org_emftext_language_java_statements_JumpLabel17777 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_parse_org_emftext_language_java_statements_JumpLabel17795 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_statements_ExpressionStatement17832 = new BitSet(new long[]{0x0000040000000000L});
+ public static final BitSet FOLLOW_42_in_parse_org_emftext_language_java_statements_ExpressionStatement17850 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_ExpressionList17883 = new BitSet(new long[]{0x0000000200000002L});
+ public static final BitSet FOLLOW_33_in_parse_org_emftext_language_java_expressions_ExpressionList17910 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_ExpressionList17936 = new BitSet(new long[]{0x0000000200000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_expressions_AssignmentExpression17996 = new BitSet(new long[]{0x0090591122000002L,0x0000080000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentOperator_in_parse_org_emftext_language_java_expressions_AssignmentExpression18029 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_AssignmentExpression18063 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ConditionalOrExpression_in_parse_org_emftext_language_java_expressions_ConditionalExpression18123 = new BitSet(new long[]{0x0000800000000002L});
+ public static final BitSet FOLLOW_47_in_parse_org_emftext_language_java_expressions_ConditionalExpression18150 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_ConditionalExpression18176 = new BitSet(new long[]{0x0000020000000000L});
+ public static final BitSet FOLLOW_41_in_parse_org_emftext_language_java_expressions_ConditionalExpression18204 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ConditionalExpression_in_parse_org_emftext_language_java_expressions_ConditionalExpression18230 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ConditionalAndExpression_in_parse_org_emftext_language_java_expressions_ConditionalOrExpression18290 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+ public static final BitSet FOLLOW_108_in_parse_org_emftext_language_java_expressions_ConditionalOrExpression18317 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ConditionalAndExpression_in_parse_org_emftext_language_java_expressions_ConditionalOrExpression18343 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_InclusiveOrExpression_in_parse_org_emftext_language_java_expressions_ConditionalAndExpression18403 = new BitSet(new long[]{0x0000000000800002L});
+ public static final BitSet FOLLOW_23_in_parse_org_emftext_language_java_expressions_ConditionalAndExpression18430 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_InclusiveOrExpression_in_parse_org_emftext_language_java_expressions_ConditionalAndExpression18456 = new BitSet(new long[]{0x0000000000800002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ExclusiveOrExpression_in_parse_org_emftext_language_java_expressions_InclusiveOrExpression18516 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+ public static final BitSet FOLLOW_106_in_parse_org_emftext_language_java_expressions_InclusiveOrExpression18543 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ExclusiveOrExpression_in_parse_org_emftext_language_java_expressions_InclusiveOrExpression18569 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AndExpression_in_parse_org_emftext_language_java_expressions_ExclusiveOrExpression18629 = new BitSet(new long[]{0x0040000000000002L});
+ public static final BitSet FOLLOW_54_in_parse_org_emftext_language_java_expressions_ExclusiveOrExpression18656 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AndExpression_in_parse_org_emftext_language_java_expressions_ExclusiveOrExpression18682 = new BitSet(new long[]{0x0040000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_EqualityExpression_in_parse_org_emftext_language_java_expressions_AndExpression18742 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_24_in_parse_org_emftext_language_java_expressions_AndExpression18769 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_EqualityExpression_in_parse_org_emftext_language_java_expressions_AndExpression18795 = new BitSet(new long[]{0x0000000001000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_InstanceOfExpression_in_parse_org_emftext_language_java_expressions_EqualityExpression18855 = new BitSet(new long[]{0x0000200000400002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_EqualityOperator_in_parse_org_emftext_language_java_expressions_EqualityExpression18888 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_InstanceOfExpression_in_parse_org_emftext_language_java_expressions_EqualityExpression18922 = new BitSet(new long[]{0x0000200000400002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_RelationExpression_in_parse_org_emftext_language_java_expressions_InstanceOfExpression18982 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+ public static final BitSet FOLLOW_79_in_parse_org_emftext_language_java_expressions_InstanceOfExpression19009 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_expressions_InstanceOfExpression19035 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_expressions_InstanceOfExpression19076 = new BitSet(new long[]{0x0002000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ShiftExpression_in_parse_org_emftext_language_java_expressions_RelationExpression19148 = new BitSet(new long[]{0x0000480000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_RelationOperator_in_parse_org_emftext_language_java_expressions_RelationExpression19181 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ShiftExpression_in_parse_org_emftext_language_java_expressions_RelationExpression19215 = new BitSet(new long[]{0x0000480000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AdditiveExpression_in_parse_org_emftext_language_java_expressions_ShiftExpression19275 = new BitSet(new long[]{0x0000480000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_ShiftOperator_in_parse_org_emftext_language_java_expressions_ShiftExpression19308 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AdditiveExpression_in_parse_org_emftext_language_java_expressions_ShiftExpression19342 = new BitSet(new long[]{0x0000480000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_MultiplicativeExpression_in_parse_org_emftext_language_java_expressions_AdditiveExpression19402 = new BitSet(new long[]{0x0000000440000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AdditiveOperator_in_parse_org_emftext_language_java_expressions_AdditiveExpression19435 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_MultiplicativeExpression_in_parse_org_emftext_language_java_expressions_AdditiveExpression19469 = new BitSet(new long[]{0x0000000440000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_UnaryExpression_in_parse_org_emftext_language_java_expressions_MultiplicativeExpression19529 = new BitSet(new long[]{0x0008008010000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_MultiplicativeOperator_in_parse_org_emftext_language_java_expressions_MultiplicativeExpression19562 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_UnaryExpression_in_parse_org_emftext_language_java_expressions_MultiplicativeExpression19596 = new BitSet(new long[]{0x0008008010000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_UnaryOperator_in_parse_org_emftext_language_java_expressions_UnaryExpression19661 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_UnaryModificationExpression_in_parse_org_emftext_language_java_expressions_UnaryExpression19691 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild_in_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression19728 = new BitSet(new long[]{0x0000000880000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_UnaryModificationOperator_in_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression19761 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_UnaryModificationOperator_in_parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression19832 = new BitSet(new long[]{0x94010800040B7FF0L,0x0000024248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild_in_parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression19877 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_expressions_CastExpression19910 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_parse_org_emftext_language_java_expressions_CastExpression19928 = new BitSet(new long[]{0x0002000008000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_parse_org_emftext_language_java_expressions_CastExpression19955 = new BitSet(new long[]{0x0002000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_expressions_CastExpression19981 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_UnaryExpression_in_parse_org_emftext_language_java_expressions_CastExpression19999 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_26_in_parse_org_emftext_language_java_expressions_NestedExpression20032 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_parse_org_emftext_language_java_expressions_NestedExpression20050 = new BitSet(new long[]{0x0000000008000000L});
+ public static final BitSet FOLLOW_27_in_parse_org_emftext_language_java_expressions_NestedExpression20068 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArraySelector_in_parse_org_emftext_language_java_expressions_NestedExpression20091 = new BitSet(new long[]{0x0002002000000002L});
+ public static final BitSet FOLLOW_37_in_parse_org_emftext_language_java_expressions_NestedExpression20126 = new BitSet(new long[]{0x9401080004084000L,0x0000024248150411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_Reference_in_parse_org_emftext_language_java_expressions_NestedExpression20152 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_operators_Assignment20208 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_32_in_parse_org_emftext_language_java_operators_AssignmentPlus20237 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_36_in_parse_org_emftext_language_java_operators_AssignmentMinus20266 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_29_in_parse_org_emftext_language_java_operators_AssignmentMultiplication20295 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_40_in_parse_org_emftext_language_java_operators_AssignmentDivision20324 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_25_in_parse_org_emftext_language_java_operators_AssignmentAnd20353 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_107_in_parse_org_emftext_language_java_operators_AssignmentOr20382 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_55_in_parse_org_emftext_language_java_operators_AssignmentExclusiveOr20411 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_52_in_parse_org_emftext_language_java_operators_AssignmentModulo20440 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_operators_AssignmentLeftShift20469 = new BitSet(new long[]{0x0000080000000000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_operators_AssignmentLeftShift20483 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_operators_AssignmentLeftShift20497 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentRightShift20526 = new BitSet(new long[]{0x0000400000000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentRightShift20540 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_operators_AssignmentRightShift20554 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20583 = new BitSet(new long[]{0x0000400000000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20597 = new BitSet(new long[]{0x0000400000000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20611 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift20625 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_30_in_parse_org_emftext_language_java_operators_Addition20654 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_34_in_parse_org_emftext_language_java_operators_Subtraction20683 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_28_in_parse_org_emftext_language_java_operators_Multiplication20712 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_39_in_parse_org_emftext_language_java_operators_Division20741 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_51_in_parse_org_emftext_language_java_operators_Remainder20770 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_operators_LessThan20799 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_operators_LessThanOrEqual20828 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_operators_LessThanOrEqual20842 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_GreaterThan20871 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_GreaterThanOrEqual20900 = new BitSet(new long[]{0x0000100000000000L});
+ public static final BitSet FOLLOW_44_in_parse_org_emftext_language_java_operators_GreaterThanOrEqual20914 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_operators_LeftShift20943 = new BitSet(new long[]{0x0000080000000000L});
+ public static final BitSet FOLLOW_43_in_parse_org_emftext_language_java_operators_LeftShift20957 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_RightShift20986 = new BitSet(new long[]{0x0000400000000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_RightShift21000 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_UnsignedRightShift21029 = new BitSet(new long[]{0x0000400000000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_UnsignedRightShift21043 = new BitSet(new long[]{0x0000400000000000L});
+ public static final BitSet FOLLOW_46_in_parse_org_emftext_language_java_operators_UnsignedRightShift21057 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_45_in_parse_org_emftext_language_java_operators_Equal21086 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_22_in_parse_org_emftext_language_java_operators_NotEqual21115 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_31_in_parse_org_emftext_language_java_operators_PlusPlus21144 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_35_in_parse_org_emftext_language_java_operators_MinusMinus21173 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_110_in_parse_org_emftext_language_java_operators_Complement21202 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_21_in_parse_org_emftext_language_java_operators_Negate21231 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_49_in_parse_org_emftext_language_java_arrays_ArrayDimension21264 = new BitSet(new long[]{0x0020000000000000L});
+ public static final BitSet FOLLOW_53_in_parse_org_emftext_language_java_arrays_ArrayDimension21281 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_85_in_parse_org_emftext_language_java_literals_NullLiteral21320 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_89_in_parse_org_emftext_language_java_modifiers_Public21349 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_56_in_parse_org_emftext_language_java_modifiers_Abstract21378 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_88_in_parse_org_emftext_language_java_modifiers_Protected21407 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_87_in_parse_org_emftext_language_java_modifiers_Private21436 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_72_in_parse_org_emftext_language_java_modifiers_Final21465 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_92_in_parse_org_emftext_language_java_modifiers_Static21494 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_83_in_parse_org_emftext_language_java_modifiers_Native21523 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_96_in_parse_org_emftext_language_java_modifiers_Synchronized21552 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_100_in_parse_org_emftext_language_java_modifiers_Transient21581 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_103_in_parse_org_emftext_language_java_modifiers_Volatile21610 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_93_in_parse_org_emftext_language_java_modifiers_Strictfp21639 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_102_in_parse_org_emftext_language_java_types_Void21668 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_58_in_parse_org_emftext_language_java_types_Boolean21697 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_63_in_parse_org_emftext_language_java_types_Char21726 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_60_in_parse_org_emftext_language_java_types_Byte21755 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_91_in_parse_org_emftext_language_java_types_Short21784 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_80_in_parse_org_emftext_language_java_types_Int21813 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_82_in_parse_org_emftext_language_java_types_Long21842 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_74_in_parse_org_emftext_language_java_types_Float21871 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_68_in_parse_org_emftext_language_java_types_Double21900 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DECIMAL_LONG_LITERAL_in_parse_org_emftext_language_java_literals_DecimalLongLiteral21933 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DECIMAL_FLOAT_LITERAL_in_parse_org_emftext_language_java_literals_DecimalFloatLiteral21973 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DECIMAL_INTEGER_LITERAL_in_parse_org_emftext_language_java_literals_DecimalIntegerLiteral22013 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_DECIMAL_DOUBLE_LITERAL_in_parse_org_emftext_language_java_literals_DecimalDoubleLiteral22053 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_HEX_LONG_LITERAL_in_parse_org_emftext_language_java_literals_HexLongLiteral22093 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_HEX_FLOAT_LITERAL_in_parse_org_emftext_language_java_literals_HexFloatLiteral22133 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_HEX_DOUBLE_LITERAL_in_parse_org_emftext_language_java_literals_HexDoubleLiteral22173 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_HEX_INTEGER_LITERAL_in_parse_org_emftext_language_java_literals_HexIntegerLiteral22213 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_OCTAL_LONG_LITERAL_in_parse_org_emftext_language_java_literals_OctalLongLiteral22253 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_OCTAL_INTEGER_LITERAL_in_parse_org_emftext_language_java_literals_OctalIntegerLiteral22293 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_CHARACTER_LITERAL_in_parse_org_emftext_language_java_literals_CharacterLiteral22333 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_BOOLEAN_LITERAL_in_parse_org_emftext_language_java_literals_BooleanLiteral22373 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_imports_ClassifierImport_in_parse_org_emftext_language_java_imports_Import22405 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_imports_PackageImport_in_parse_org_emftext_language_java_imports_Import22415 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_imports_StaticMemberImport_in_parse_org_emftext_language_java_imports_Import22425 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_imports_StaticClassifierImport_in_parse_org_emftext_language_java_imports_Import22435 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22456 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22466 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22476 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_parse_org_emftext_language_java_classifiers_ConcreteClassifier22486 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22507 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Public_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22517 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Abstract_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22527 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Protected_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22537 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Private_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22547 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Final_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22557 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22567 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Native_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22577 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Synchronized_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22587 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Transient_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22597 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Volatile_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22607 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Strictfp_in_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier22617 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_parse_org_emftext_language_java_types_TypeReference22638 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_parse_org_emftext_language_java_types_TypeReference22648 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Void_in_parse_org_emftext_language_java_types_TypeReference22658 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Boolean_in_parse_org_emftext_language_java_types_TypeReference22668 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Char_in_parse_org_emftext_language_java_types_TypeReference22678 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Byte_in_parse_org_emftext_language_java_types_TypeReference22688 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Short_in_parse_org_emftext_language_java_types_TypeReference22698 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Int_in_parse_org_emftext_language_java_types_TypeReference22708 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Long_in_parse_org_emftext_language_java_types_TypeReference22718 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Float_in_parse_org_emftext_language_java_types_TypeReference22728 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Double_in_parse_org_emftext_language_java_types_TypeReference22738 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_parse_org_emftext_language_java_members_Member22759 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_parse_org_emftext_language_java_members_Member22769 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_parse_org_emftext_language_java_members_Member22779 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_parse_org_emftext_language_java_members_Member22789 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Block_in_parse_org_emftext_language_java_members_Member22799 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Constructor_in_parse_org_emftext_language_java_members_Member22809 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_InterfaceMethod_in_parse_org_emftext_language_java_members_Member22819 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_ClassMethod_in_parse_org_emftext_language_java_members_Member22829 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttribute_in_parse_org_emftext_language_java_members_Member22839 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Field_in_parse_org_emftext_language_java_members_Member22849 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_EmptyMember_in_parse_org_emftext_language_java_members_Member22859 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_SingleAnnotationParameter_in_parse_org_emftext_language_java_annotations_AnnotationParameter22880 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationParameterList_in_parse_org_emftext_language_java_annotations_AnnotationParameter22890 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Public_in_parse_org_emftext_language_java_modifiers_Modifier22911 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Abstract_in_parse_org_emftext_language_java_modifiers_Modifier22921 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Protected_in_parse_org_emftext_language_java_modifiers_Modifier22931 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Private_in_parse_org_emftext_language_java_modifiers_Modifier22941 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Final_in_parse_org_emftext_language_java_modifiers_Modifier22951 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Static_in_parse_org_emftext_language_java_modifiers_Modifier22961 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Native_in_parse_org_emftext_language_java_modifiers_Modifier22971 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Synchronized_in_parse_org_emftext_language_java_modifiers_Modifier22981 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Transient_in_parse_org_emftext_language_java_modifiers_Modifier22991 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Volatile_in_parse_org_emftext_language_java_modifiers_Modifier23001 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_Strictfp_in_parse_org_emftext_language_java_modifiers_Modifier23011 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_parse_org_emftext_language_java_statements_Statement23032 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_parse_org_emftext_language_java_statements_Statement23042 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_parse_org_emftext_language_java_statements_Statement23052 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_parse_org_emftext_language_java_statements_Statement23062 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Block_in_parse_org_emftext_language_java_statements_Statement23072 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_LocalVariableStatement_in_parse_org_emftext_language_java_statements_Statement23082 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Assert_in_parse_org_emftext_language_java_statements_Statement23092 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Condition_in_parse_org_emftext_language_java_statements_Statement23102 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_ForLoop_in_parse_org_emftext_language_java_statements_Statement23112 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_ForEachLoop_in_parse_org_emftext_language_java_statements_Statement23122 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_WhileLoop_in_parse_org_emftext_language_java_statements_Statement23132 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_DoWhileLoop_in_parse_org_emftext_language_java_statements_Statement23142 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_EmptyStatement_in_parse_org_emftext_language_java_statements_Statement23152 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_SynchronizedBlock_in_parse_org_emftext_language_java_statements_Statement23162 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_TryBlock_in_parse_org_emftext_language_java_statements_Statement23172 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Switch_in_parse_org_emftext_language_java_statements_Statement23182 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Return_in_parse_org_emftext_language_java_statements_Statement23192 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Throw_in_parse_org_emftext_language_java_statements_Statement23202 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Break_in_parse_org_emftext_language_java_statements_Statement23212 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Continue_in_parse_org_emftext_language_java_statements_Statement23222 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_JumpLabel_in_parse_org_emftext_language_java_statements_Statement23232 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_ExpressionStatement_in_parse_org_emftext_language_java_statements_Statement23242 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_parse_org_emftext_language_java_parameters_Parameter23263 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_VariableLengthParameter_in_parse_org_emftext_language_java_parameters_Parameter23273 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_QualifiedTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23294 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_UnknownTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23304 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_ExtendsTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23314 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_SuperTypeArgument_in_parse_org_emftext_language_java_generics_TypeArgument23324 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_references_Reference23345 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_parse_org_emftext_language_java_references_Reference23355 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_parse_org_emftext_language_java_references_Reference23365 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_parse_org_emftext_language_java_references_Reference23375 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped_in_parse_org_emftext_language_java_references_Reference23385 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_parse_org_emftext_language_java_references_Reference23395 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_parse_org_emftext_language_java_references_Reference23405 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_parse_org_emftext_language_java_references_Reference23415 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_ReflectiveClassReference_in_parse_org_emftext_language_java_references_Reference23425 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_parse_org_emftext_language_java_references_Reference23435 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_PrimitiveTypeReference_in_parse_org_emftext_language_java_references_Reference23445 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_StringReference_in_parse_org_emftext_language_java_references_Reference23455 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_NestedExpression_in_parse_org_emftext_language_java_references_Reference23465 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_This_in_parse_org_emftext_language_java_literals_Self23486 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_Super_in_parse_org_emftext_language_java_literals_Self23496 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Void_in_parse_org_emftext_language_java_types_PrimitiveType23517 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Boolean_in_parse_org_emftext_language_java_types_PrimitiveType23527 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Char_in_parse_org_emftext_language_java_types_PrimitiveType23537 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Byte_in_parse_org_emftext_language_java_types_PrimitiveType23547 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Short_in_parse_org_emftext_language_java_types_PrimitiveType23557 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Int_in_parse_org_emftext_language_java_types_PrimitiveType23567 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Long_in_parse_org_emftext_language_java_types_PrimitiveType23577 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Float_in_parse_org_emftext_language_java_types_PrimitiveType23587 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_Double_in_parse_org_emftext_language_java_types_PrimitiveType23597 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_variables_LocalVariable_in_parse_org_emftext_language_java_statements_ForLoopInitializer23618 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_ExpressionList_in_parse_org_emftext_language_java_statements_ForLoopInitializer23628 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_NormalSwitchCase_in_parse_org_emftext_language_java_statements_SwitchCase23649 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_DefaultSwitchCase_in_parse_org_emftext_language_java_statements_SwitchCase23659 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Assignment_in_parse_org_emftext_language_java_operators_AssignmentOperator23680 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentPlus_in_parse_org_emftext_language_java_operators_AssignmentOperator23690 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentMinus_in_parse_org_emftext_language_java_operators_AssignmentOperator23700 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentMultiplication_in_parse_org_emftext_language_java_operators_AssignmentOperator23710 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentDivision_in_parse_org_emftext_language_java_operators_AssignmentOperator23720 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentAnd_in_parse_org_emftext_language_java_operators_AssignmentOperator23730 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentOr_in_parse_org_emftext_language_java_operators_AssignmentOperator23740 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentExclusiveOr_in_parse_org_emftext_language_java_operators_AssignmentOperator23750 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentModulo_in_parse_org_emftext_language_java_operators_AssignmentOperator23760 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentLeftShift_in_parse_org_emftext_language_java_operators_AssignmentOperator23770 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentRightShift_in_parse_org_emftext_language_java_operators_AssignmentOperator23780 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_AssignmentUnsignedRightShift_in_parse_org_emftext_language_java_operators_AssignmentOperator23790 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Equal_in_parse_org_emftext_language_java_operators_EqualityOperator23811 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_NotEqual_in_parse_org_emftext_language_java_operators_EqualityOperator23821 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_LessThan_in_parse_org_emftext_language_java_operators_RelationOperator23842 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_LessThanOrEqual_in_parse_org_emftext_language_java_operators_RelationOperator23852 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_GreaterThan_in_parse_org_emftext_language_java_operators_RelationOperator23862 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_GreaterThanOrEqual_in_parse_org_emftext_language_java_operators_RelationOperator23872 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_LeftShift_in_parse_org_emftext_language_java_operators_ShiftOperator23893 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_RightShift_in_parse_org_emftext_language_java_operators_ShiftOperator23903 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_UnsignedRightShift_in_parse_org_emftext_language_java_operators_ShiftOperator23913 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Addition_in_parse_org_emftext_language_java_operators_AdditiveOperator23934 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Subtraction_in_parse_org_emftext_language_java_operators_AdditiveOperator23944 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Multiplication_in_parse_org_emftext_language_java_operators_MultiplicativeOperator23965 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Division_in_parse_org_emftext_language_java_operators_MultiplicativeOperator23975 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Remainder_in_parse_org_emftext_language_java_operators_MultiplicativeOperator23985 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Addition_in_parse_org_emftext_language_java_operators_UnaryOperator24006 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Subtraction_in_parse_org_emftext_language_java_operators_UnaryOperator24016 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Complement_in_parse_org_emftext_language_java_operators_UnaryOperator24026 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_Negate_in_parse_org_emftext_language_java_operators_UnaryOperator24036 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpression24057 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_PrefixUnaryModificationExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpression24067 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationInstance_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24088 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24098 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24108 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24118 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesUntyped_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24128 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24138 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24148 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24158 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_ReflectiveClassReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24168 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24178 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_PrimitiveTypeReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24188 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_StringReference_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24198 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_CastExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24208 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_NestedExpression_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24218 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_NullLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24228 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_DecimalLongLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24238 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_DecimalFloatLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24248 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_DecimalIntegerLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24258 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_DecimalDoubleLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24268 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_HexLongLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24278 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_HexFloatLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24288 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_HexDoubleLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24298 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_HexIntegerLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24308 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_OctalLongLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24318 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_OctalIntegerLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24328 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_CharacterLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24338 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_literals_BooleanLiteral_in_parse_org_emftext_language_java_expressions_UnaryModificationExpressionChild24348 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_PlusPlus_in_parse_org_emftext_language_java_operators_UnaryModificationOperator24369 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_MinusMinus_in_parse_org_emftext_language_java_operators_UnaryModificationOperator24379 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_containers_CompilationUnit_in_synpred1_Java82 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_containers_Package_in_synpred2_Java96 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_42_in_synpred7_Java454 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_synpred47_Java4154 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInitializer_in_synpred50_Java4465 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_modifiers_AnnotationInstanceOrModifier_in_synpred77_Java6033 = new BitSet(new long[]{0x9501080000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_43_in_synpred77_Java6068 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_synpred77_Java6094 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_synpred77_Java6135 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeParameter_in_synpred77_Java6169 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_synpred77_Java6230 = new BitSet(new long[]{0x9400000000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_TypeReference_in_synpred77_Java6272 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_synpred77_Java6306 = new BitSet(new long[]{0x0002000000004000L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_synpred77_Java6350 = new BitSet(new long[]{0x0000000004000000L});
+ public static final BitSet FOLLOW_26_in_synpred77_Java6371 = new BitSet(new long[]{0x9501000008004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_synpred77_Java6400 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_33_in_synpred77_Java6441 = new BitSet(new long[]{0x9501000000004000L,0x000000D13B8D0510L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_Parameter_in_synpred77_Java6475 = new BitSet(new long[]{0x0000000208000000L});
+ public static final BitSet FOLLOW_27_in_synpred77_Java6549 = new BitSet(new long[]{0x0002040000000000L,0x0000000800000000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayDimension_in_synpred77_Java6572 = new BitSet(new long[]{0x0002040000000000L,0x0000000800000000L});
+ public static final BitSet FOLLOW_99_in_synpred77_Java6607 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_synpred77_Java6633 = new BitSet(new long[]{0x0000040200000000L});
+ public static final BitSet FOLLOW_33_in_synpred77_Java6674 = new BitSet(new long[]{0x0000000000004000L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_synpred77_Java6708 = new BitSet(new long[]{0x0000040200000000L});
+ public static final BitSet FOLLOW_42_in_synpred77_Java6782 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_synpred145_Java12594 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AssignmentExpression_in_synpred146_Java12689 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_IDENTIFIER_in_synpred151_Java12953 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_synpred151_Java12986 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_synpred152_Java13034 = new BitSet(new long[]{0x0000002000000000L});
+ public static final BitSet FOLLOW_37_in_synpred152_Java13062 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_synpred154_Java13166 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred154_Java13192 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_synpred154_Java13233 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred154_Java13267 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_synpred154_Java13328 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_43_in_synpred164_Java14161 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred164_Java14187 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_33_in_synpred164_Java14228 = new BitSet(new long[]{0x9400800000004000L,0x0000004008050410L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_generics_TypeArgument_in_synpred164_Java14262 = new BitSet(new long[]{0x0000400200000000L});
+ public static final BitSet FOLLOW_46_in_synpred164_Java14323 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_69_in_synpred177_Java15635 = new BitSet(new long[]{0x9F010C0CC42B7FF0L,0x000043F7FFBF1D5BL});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Statement_in_synpred177_Java15661 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_ShiftOperator_in_synpred206_Java19308 = new BitSet(new long[]{0x9401080CC42B7FF0L,0x0000424248350411L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_AdditiveExpression_in_synpred206_Java19342 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_operators_UnaryModificationOperator_in_synpred210_Java19761 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_synpred218_Java22456 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_synpred219_Java22466 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_synpred220_Java22476 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_NamespaceClassifierReference_in_synpred232_Java22638 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_types_ClassifierReference_in_synpred233_Java22648 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_synpred242_Java22759 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_synpred243_Java22769 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_synpred244_Java22779 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_synpred245_Java22789 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Block_in_synpred246_Java22799 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Constructor_in_synpred247_Java22809 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_InterfaceMethod_in_synpred248_Java22819 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_ClassMethod_in_synpred249_Java22829 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_annotations_AnnotationAttribute_in_synpred250_Java22839 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_members_Field_in_synpred251_Java22849 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Class_in_synpred263_Java23032 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Interface_in_synpred264_Java23042 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Enumeration_in_synpred265_Java23052 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_classifiers_Annotation_in_synpred266_Java23062 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_Block_in_synpred267_Java23072 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_LocalVariableStatement_in_synpred268_Java23082 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_ForLoop_in_synpred271_Java23112 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_ForEachLoop_in_synpred272_Java23122 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_WhileLoop_in_synpred273_Java23132 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_DoWhileLoop_in_synpred274_Java23142 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_SynchronizedBlock_in_synpred276_Java23162 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_statements_JumpLabel_in_synpred283_Java23232 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_parameters_OrdinaryParameter_in_synpred284_Java23263 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_synpred289_Java23355 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_synpred290_Java23365 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_synpred291_Java23375 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_synpred293_Java23395 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_synpred294_Java23405 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_synpred295_Java23415 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_synpred297_Java23435 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_variables_LocalVariable_in_synpred309_Java23618 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_SuffixUnaryModificationExpression_in_synpred334_Java24057 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_NewConstructorCall_in_synpred336_Java24098 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_instantiations_ExplicitConstructorCall_in_synpred337_Java24108 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationByValuesTyped_in_synpred338_Java24118 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_arrays_ArrayInstantiationBySize_in_synpred340_Java24138 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_MethodCall_in_synpred341_Java24148 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_IdentifierReference_in_synpred342_Java24158 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_references_SelfReference_in_synpred344_Java24178 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_CastExpression_in_synpred347_Java24208 = new BitSet(new long[]{0x0000000000000002L});
+ public static final BitSet FOLLOW_parse_org_emftext_language_java_expressions_NestedExpression_in_synpred348_Java24218 = new BitSet(new long[]{0x0000000000000002L});
+
+}
\ No newline at end of file
diff --git a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaResourcePostProcessor.java b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaResourcePostProcessor.java
index d9ad4550..38505ff2 100644
--- a/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaResourcePostProcessor.java
+++ b/Core/org.emftext.language.java.resource.java/src/org/emftext/language/java/resource/java/mopp/JavaResourcePostProcessor.java
@@ -1,62 +1,67 @@
-/*******************************************************************************
- * Copyright (c) 2006-2012
- * Software Technology Group, Dresden University of Technology
- * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Software Technology Group - TU Dresden, Germany;
- * DevBoost GmbH - Berlin, Germany
- * - initial API and implementation
- ******************************************************************************/
-package org.emftext.language.java.resource.java.mopp;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.emftext.language.java.references.ElementReference;
-import org.emftext.language.java.references.IdentifierReference;
-import org.emftext.language.java.references.ReferenceableElement;
-import org.emftext.language.java.resource.java.IJavaResourcePostProcessor;
-import org.emftext.language.java.util.JavaModelCompletion;
-import org.emftext.language.java.util.JavaModelRepairer;
-
-public class JavaResourcePostProcessor implements IJavaResourcePostProcessor {
-
- public void process(JavaResource resource) {
- repairAndComplete(resource);
- }
-
- public void terminate() {
- // To signal termination to the process() method, setting a boolean field is
- // recommended. Depending on the value of this field process() can stop its
- // computation. However, this is only required for computation intensive
- // post-processors.
- }
-
- protected void repairAndComplete(JavaResource resource) {
- new JavaModelRepairer() {
- protected void registerContextDependentProxy(
- Resource resource,
- IdentifierReference mainIdReference, EReference targetReference,
- String id, EObject proxy) {
- assert !targetReference.isMany();
-
- ((JavaResource)resource).registerContextDependentProxy(
- new JavaContextDependentURIFragmentFactory(
- new JavaReferenceResolverSwitch().getElementReferenceTargetReferenceResolver()),
- mainIdReference,
- targetReference,
- id,
- proxy,
- -1);
- }
- }.repair(resource);
-
- JavaModelCompletion.complete(resource);
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2006-2012
+ * Software Technology Group, Dresden University of Technology
+ * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Software Technology Group - TU Dresden, Germany;
+ * DevBoost GmbH - Berlin, Germany
+ * - initial API and implementation
+ ******************************************************************************/
+package org.emftext.language.java.resource.java.mopp;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.emftext.language.java.references.ElementReference;
+import org.emftext.language.java.references.IdentifierReference;
+import org.emftext.language.java.references.ReferenceableElement;
+import org.emftext.language.java.resource.java.IJavaResourcePostProcessor;
+import org.emftext.language.java.resource.java.JavaReferenceResolverSwitchFactory;
+import org.emftext.language.java.util.JavaModelCompletion;
+import org.emftext.language.java.util.JavaModelRepairer;
+
+public class JavaResourcePostProcessor implements IJavaResourcePostProcessor {
+
+ public void process(JavaResource resource) {
+ repairAndComplete(resource);
+ }
+
+ public void terminate() {
+ // To signal termination to the process() method, setting a boolean field is
+ // recommended. Depending on the value of this field process() can stop its
+ // computation. However, this is only required for computation intensive
+ // post-processors.
+ }
+
+ /** Thread safe singleton instance of the factory to create uri fragments. */
+ private static JavaContextDependentURIFragmentFactory uriFragmentFactory = new JavaContextDependentURIFragmentFactory(
+ JavaReferenceResolverSwitchFactory.getSwitch().getElementReferenceTargetReferenceResolver());
+
+ protected void repairAndComplete(JavaResource resource) {
+ new JavaModelRepairer() {
+ protected void registerContextDependentProxy(
+ Resource resource,
+ IdentifierReference mainIdReference, EReference targetReference,
+ String id, EObject proxy) {
+ assert !targetReference.isMany();
+
+
+ ((JavaResource)resource).registerContextDependentProxy(
+ uriFragmentFactory,
+ mainIdReference,
+ targetReference,
+ id,
+ proxy,
+ -1);
+ }
+ }.repair(resource);
+
+ JavaModelCompletion.complete(resource);
+ }
+}
diff --git a/Core/org.emftext.language.java.resource/.classpath b/Core/org.emftext.language.java.resource/.classpath
index 065ac06e..48482498 100755
--- a/Core/org.emftext.language.java.resource/.classpath
+++ b/Core/org.emftext.language.java.resource/.classpath
@@ -1,7 +1,7 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Core/org.emftext.language.java.resource/plugin.xml b/Core/org.emftext.language.java.resource/plugin.xml
index 155d0e0a..71e0cc4c 100755
--- a/Core/org.emftext.language.java.resource/plugin.xml
+++ b/Core/org.emftext.language.java.resource/plugin.xml
@@ -1,18 +1,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/ClassFileModelLoader.java b/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/ClassFileModelLoader.java
index 4f8c2d97..7d2c0216 100755
--- a/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/ClassFileModelLoader.java
+++ b/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/ClassFileModelLoader.java
@@ -2,12 +2,12 @@
* Copyright (c) 2006-2012
* Software Technology Group, Dresden University of Technology
* DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
- *
+ *
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Software Technology Group - TU Dresden, Germany;
* DevBoost GmbH - Berlin, Germany
@@ -29,6 +29,7 @@
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.emftext.language.java.JavaClasspath;
+import org.emftext.language.java.JavaUniquePathConstructor;
import org.emftext.language.java.annotations.AnnotationsFactory;
import org.emftext.language.java.arrays.ArraysFactory;
import org.emftext.language.java.classifiers.Annotation;
@@ -86,10 +87,10 @@ public CompilationUnit parse(InputStream inputStream, String classFileName) thro
ConcreteClassifier classifier = constructClassifier(myClass);
CompilationUnit cu = ContainersFactory.eINSTANCE.createCompilationUnit();
cu.setName(classFileName);
- List namespace1 = Arrays.asList(myClass.getClassName().split("\\."));
- List namespace2 = Arrays.asList(namespace1.get(namespace1.size() - 1).split("\\$"));
+ List namespace1 = Arrays.asList(JavaUniquePathConstructor.PACKAGE_SEPARATOR_REGEX_PATTERN.split(myClass.getClassName()));
+ List namespace2 = Arrays.asList(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR_REGEX_PATTERN.split(namespace1.get(namespace1.size() - 1)));
cu.getNamespaces().addAll(namespace1.subList(0, namespace1.size() - 1));
- if (myClass.getClassName().endsWith("$")) {
+ if (myClass.getClassName().endsWith(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR)) {
//empty class name
cu.getNamespaces().addAll(namespace2.subList(0, namespace2.size()));
}
@@ -124,12 +125,12 @@ else if (clazz.isInterface()) {
}
String className = clazz.getClassName();
- int idx = clazz.getClassName().lastIndexOf("$");
+ int idx = clazz.getClassName().lastIndexOf(JavaUniquePathConstructor.CLASSIFIER_SEPARATOR);
if (idx >= 0) {
className = className.substring(idx + 1);
}
else {
- idx = clazz.getClassName().lastIndexOf(".");
+ idx = clazz.getClassName().lastIndexOf(JavaUniquePathConstructor.PACKAGE_SEPARATOR);
if (idx >= 0) {
className = className.substring(idx + 1);
}
@@ -269,7 +270,7 @@ else if(emfClassifier instanceof Interface) {
}
List parameterNames = extractParameterNames(method);
-
+
for(int i = 0; i < method.getArgumentTypes().length; i++) {
org.apache.bcel5_2_0.generic.Type argType = method.getArgumentTypes()[i];
String paramName;
@@ -793,7 +794,7 @@ protected String constructTypeArguments(String s, ClassifierReference typeRef, T
}
protected TypeReference createReferenceToClassifier(String fullClassifierName) {
- fullClassifierName = fullClassifierName.replaceAll("/", ".");
+ fullClassifierName = fullClassifierName.replaceAll("/", JavaUniquePathConstructor.PACKAGE_SEPARATOR);
Classifier classifier = (Classifier) javaClasspath.getClassifier(fullClassifierName);
ClassifierReference classifierReference =
TypesFactory.eINSTANCE.createClassifierReference();
@@ -809,7 +810,7 @@ protected int getArrayDimension(String signature) {
}
return arrayDimension;
}
-
+
protected List extractParameterNames(final org.apache.bcel5_2_0.classfile.Method method) {
final List names = new ArrayList();
if (method.getLocalVariableTable() != null) {
diff --git a/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/JavaSourceOrClassFileResource.java b/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/JavaSourceOrClassFileResource.java
index 1b0878d1..048d860f 100755
--- a/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/JavaSourceOrClassFileResource.java
+++ b/Core/org.emftext.language.java.resource/src/org/emftext/language/java/resource/JavaSourceOrClassFileResource.java
@@ -2,16 +2,17 @@
* Copyright (c) 2006-2013
* Software Technology Group, Dresden University of Technology
* DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
- *
+ *
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Software Technology Group - TU Dresden, Germany;
* DevBoost GmbH - Berlin, Germany
* - initial API and implementation
+ * Benjamin Klatt - Adaptation for performance improvement
******************************************************************************/
package org.emftext.language.java.resource;
@@ -50,6 +51,7 @@
import org.emftext.language.java.resource.java.IJavaOptions;
import org.emftext.language.java.resource.java.IJavaReferenceResolverSwitch;
import org.emftext.language.java.resource.java.IJavaTextPrinter;
+import org.emftext.language.java.resource.java.JavaReferenceResolverSwitchFactory;
import org.emftext.language.java.resource.java.mopp.JavaInputStreamProcessor;
import org.emftext.language.java.resource.java.mopp.JavaParser;
import org.emftext.language.java.resource.java.mopp.JavaResource;
@@ -64,36 +66,47 @@
*/
public class JavaSourceOrClassFileResource extends JavaResource {
- private final JavaLayoutUtil layoutUtil = new JavaLayoutUtil();
-
+ private final static JavaLayoutUtil layoutUtil = new JavaLayoutUtil();
+
public JavaSourceOrClassFileResource(URI uri) {
super(uri);
}
+ /**
+ * Override the {@link JavaResource} getReferenceResolverSwitch() to make use of the
+ * {@link JavaReferenceResolverSwitchFactory}.
+ *
+ * {@inheritDoc}
+ */
+ @Override
+ public IJavaReferenceResolverSwitch getReferenceResolverSwitch() {
+ return JavaReferenceResolverSwitchFactory.getSwitch();
+ }
+
protected boolean isClassFile() {
if (uri == null) {
return false;
}
-
+
// Is there a physical source file behind this URI?
URI normalizedURI = getURIConverter().normalize(uri);
String fileExtension = normalizedURI.fileExtension();
if ("class".equals(fileExtension)) {
return true;
}
-
+
return false;
}
-
+
protected boolean isPackage() {
List contents = getContentsInternal();
if (contents.isEmpty()) {
return false;
}
-
+
return contents.get(0) instanceof Package;
}
-
+
protected boolean hasJavaClassifierURI() {
if (uri == null) {
return false;
@@ -105,7 +118,7 @@ protected boolean hasJavaClassifierURI() {
@Override
protected void doLoad(InputStream inputStream, Map, ?> options)
throws IOException {
-
+
if (isClassFile()) {
JavaClasspath javaClasspath = JavaClasspath.get(this);
ClassFileModelLoader classFileParser = new ClassFileModelLoader(javaClasspath);
@@ -119,11 +132,11 @@ protected void doLoad(InputStream inputStream, Map, ?> options)
}
if (!optionsWithUnicodeConverter.containsKey(IJavaOptions.INPUT_STREAM_PREPROCESSOR_PROVIDER)) {
optionsWithUnicodeConverter.put(
- IJavaOptions.INPUT_STREAM_PREPROCESSOR_PROVIDER,
+ IJavaOptions.INPUT_STREAM_PREPROCESSOR_PROVIDER,
new IJavaInputStreamProcessorProvider() {
-
+
public JavaInputStreamProcessor getInputStreamProcessor(InputStream inputStream) {
- return new JavaUnicodeConverter(inputStream);
+ return new JavaUnicodeConverter(inputStream);
}
});
}
@@ -179,13 +192,13 @@ public void regis
@Override
public EObject getEObject(String id) {
EObject result = null;
-
+
// check whether proxy resolving is turned off
Object disableProxyResolvingValue = getResourceSet().getLoadOptions().get(IExtendedJavaOptions.DISABLE_ON_DEMAND_PROXY_RESOLVING);
if (Boolean.TRUE.equals(disableProxyResolvingValue)) {
return null;
}
-
+
if ((isClassFile() || isPackage()) &&
id.startsWith("//" + JavaUniquePathConstructor.CLASSIFIERS_ROOT_PATH_PREFIX)) {
if (!getContentsInternal().isEmpty()) {
@@ -297,12 +310,12 @@ protected void register() throws IOException {
CompilationUnit cu = (CompilationUnit) root;
setCompilationUnitName(cu);
}
-
+
//only for physical URIs
if(hasJavaClassifierURI()) {
return;
}
-
+
//could also be a package-info.java without CU
if (root instanceof CompilationUnit) {
CompilationUnit cu = (CompilationUnit) root;
@@ -338,7 +351,7 @@ protected void populatePackage(Package p) {
JavaClasspath classpath = JavaClasspath.get(this);
List classifiers = classpath.getClassifiers(
fullPackageName, "*");
-
+
for (EObject classifier : classifiers) {
classifier = (ConcreteClassifier) EcoreUtil.resolve(classifier, getResourceSet());
@@ -351,7 +364,7 @@ protected void populatePackage(Package p) {
if (cu == null) {
continue;
}
-
+
p.getCompilationUnits().add(cu);
}
}
@@ -359,7 +372,7 @@ protected void populatePackage(Package p) {
@Override
protected void doSave(OutputStream outputStream, Map, ?> options)
throws IOException {
-
+
if (isClassFile()) {
// Saving is not supported for class files.
return;
@@ -444,7 +457,7 @@ protected boolean containsMultipleCompilationUnits() {
}
return false;
}
-
+
/**
* This method adds a package declaration (namespaces) to the given
* compilation unit if none is defined and this resource has a logical URI.
@@ -456,7 +469,7 @@ protected void addPackageDeclaration(CompilationUnit cu) {
// If there is no package and this is a logical URI, we guess the
// package based on the URI.
String[] fullName = uri.lastSegment().split("\\.");
- for (int i = 0; i < fullName.length - 2; i++) {
+ for (int i = 0; i < fullName.length - 2; i++) {
cu.getNamespaces().add(fullName[i]);
}
}
diff --git a/Core/org.emftext.language.java/.checkstyle b/Core/org.emftext.language.java/.checkstyle
index 61cb55e4..fe0b70ee 100644
--- a/Core/org.emftext.language.java/.checkstyle
+++ b/Core/org.emftext.language.java/.checkstyle
@@ -1,7 +1,7 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Core/org.emftext.language.java/.classpath b/Core/org.emftext.language.java/.classpath
index fe87a083..a1e4b83a 100644
--- a/Core/org.emftext.language.java/.classpath
+++ b/Core/org.emftext.language.java/.classpath
@@ -1,8 +1,8 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/Core/org.emftext.language.java/.project b/Core/org.emftext.language.java/.project
index 390a3d8a..df1baedf 100644
--- a/Core/org.emftext.language.java/.project
+++ b/Core/org.emftext.language.java/.project
@@ -1,46 +1,46 @@
-
-
- org.emftext.language.java
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.pde.ManifestBuilder
-
-
-
-
- org.eclipse.pde.SchemaBuilder
-
-
-
-
- com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder
-
-
-
-
- org.emftext.language.java.ejava.resource.ejava.builder
-
-
-
-
- org.emftext.sdk.concretesyntax.resource.cs.builder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
- org.eclipse.pde.PluginNature
- com.atlassw.tools.eclipse.checkstyle.CheckstyleNature
- org.emftext.language.java.ejava.resource.ejava.nature
- org.emftext.sdk.concretesyntax.resource.cs.nature
-
-
+
+
+ org.emftext.language.java
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder
+
+
+
+
+ org.emftext.language.java.ejava.resource.ejava.builder
+
+
+
+
+ org.emftext.sdk.concretesyntax.resource.cs.builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.PluginNature
+ com.atlassw.tools.eclipse.checkstyle.CheckstyleNature
+ org.emftext.language.java.ejava.resource.ejava.nature
+ org.emftext.sdk.concretesyntax.resource.cs.nature
+
+
diff --git a/Core/org.emftext.language.java/.settings/org.eclipse.jdt.core.prefs b/Core/org.emftext.language.java/.settings/org.eclipse.jdt.core.prefs
index e5109ece..f0c083e5 100644
--- a/Core/org.emftext.language.java/.settings/org.eclipse.jdt.core.prefs
+++ b/Core/org.emftext.language.java/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,12 @@
-#Fri Jun 19 09:34:06 CEST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+#Fri Jun 19 09:34:06 CEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/Core/org.emftext.language.java/documentation/antlr_java.g b/Core/org.emftext.language.java/documentation/antlr_java.g
index fa5342a8..35173e54 100755
--- a/Core/org.emftext.language.java/documentation/antlr_java.g
+++ b/Core/org.emftext.language.java/documentation/antlr_java.g
@@ -1,1042 +1,1042 @@
-/*
- * This Java grammar inspired java.ecore and java.cs
- * source: http://www.antlr.org/grammar/1152141644268/Java.g
- * (more information at the end of the file)
- */
-grammar Java;
-options {backtrack=true; memoize=true;}
-
-@lexer::members {
- protected boolean enumIsKeyword = true;
- protected boolean assertIsKeyword = true;
-}
-
-// starting point for parsing a java file
-/* The annotations are separated out to make parsing faster, but must be associated with
- a packageDeclaration or a typeDeclaration (and not an empty one). */
-compilationUnit
- : annotations
- ( packageDeclaration importDeclaration* typeDeclaration*
- | classOrInterfaceDeclaration typeDeclaration*
- )
- | packageDeclaration? importDeclaration* typeDeclaration*
- ;
-
-packageDeclaration
- : 'package' qualifiedName ';'
- ;
-
-importDeclaration
- : 'import' 'static'? qualifiedName ('.' '*')? ';'
- ;
-
-typeDeclaration
- : classOrInterfaceDeclaration
- | ';'
- ;
-
-classOrInterfaceDeclaration
- : classOrInterfaceModifiers (classDeclaration | interfaceDeclaration)
- ;
-
-classOrInterfaceModifiers
- : classOrInterfaceModifier*
- ;
-
-classOrInterfaceModifier
- : annotation // class or interface
- | 'public' // class or interface
- | 'protected' // class or interface
- | 'private' // class or interface
- | 'abstract' // class or interface
- | 'static' // class or interface
- | 'final' // class only -- does not apply to interfaces
- | 'strictfp' // class or interface
- ;
-
-modifiers
- : modifier*
- ;
-
-classDeclaration
- : normalClassDeclaration
- | enumDeclaration
- ;
-
-normalClassDeclaration
- : 'class' Identifier typeParameters?
- ('extends' type)?
- ('implements' typeList)?
- classBody
- ;
-
-typeParameters
- : '<' typeParameter (',' typeParameter)* '>'
- ;
-
-typeParameter
- : Identifier ('extends' typeBound)?
- ;
-
-typeBound
- : type ('&' type)*
- ;
-
-enumDeclaration
- : ENUM Identifier ('implements' typeList)? enumBody
- ;
-
-enumBody
- : '{' enumConstants? ','? enumBodyDeclarations? '}'
- ;
-
-enumConstants
- : enumConstant (',' enumConstant)*
- ;
-
-enumConstant
- : annotations? Identifier arguments? classBody?
- ;
-
-enumBodyDeclarations
- : ';' (classBodyDeclaration)*
- ;
-
-
-interfaceDeclaration
- : normalInterfaceDeclaration
- | annotationTypeDeclaration
- ;
-
-normalInterfaceDeclaration
- : 'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody
- ;
-
-typeList
- : type (',' type)*
- ;
-
-classBody
- : '{' classBodyDeclaration* '}'
- ;
-
-interfaceBody
- : '{' interfaceBodyDeclaration* '}'
- ;
-
-classBodyDeclaration
- : ';'
- | 'static'? block
- | modifiers memberDecl
- ;
-
-memberDecl
- : genericMethodOrConstructorDecl
- | memberDeclaration
- | 'void' Identifier voidMethodDeclaratorRest
- | Identifier constructorDeclaratorRest
- | interfaceDeclaration
- | classDeclaration
- ;
-
-memberDeclaration
- : type (methodDeclaration | fieldDeclaration)
- ;
-
-genericMethodOrConstructorDecl
- : typeParameters genericMethodOrConstructorRest
- ;
-
-genericMethodOrConstructorRest
- : (type | 'void') Identifier methodDeclaratorRest
- | Identifier constructorDeclaratorRest
- ;
-
-methodDeclaration
- : Identifier methodDeclaratorRest
- ;
-
-fieldDeclaration
- : variableDeclarators ';'
- ;
-
-interfaceBodyDeclaration
- : modifiers interfaceMemberDecl
- | ';'
- ;
-
-interfaceMemberDecl
- : interfaceMethodOrFieldDecl
- | interfaceGenericMethodDecl
- | 'void' Identifier voidInterfaceMethodDeclaratorRest
- | interfaceDeclaration
- | classDeclaration
- ;
-
-interfaceMethodOrFieldDecl
- : type Identifier interfaceMethodOrFieldRest
- ;
-
-interfaceMethodOrFieldRest
- : constantDeclaratorsRest ';'
- | interfaceMethodDeclaratorRest
- ;
-
-methodDeclaratorRest
- : formalParameters ('[' ']')*
- ('throws' qualifiedNameList)?
- ( methodBody
- | ';'
- )
- ;
-
-voidMethodDeclaratorRest
- : formalParameters ('throws' qualifiedNameList)?
- ( methodBody
- | ';'
- )
- ;
-
-interfaceMethodDeclaratorRest
- : formalParameters ('[' ']')* ('throws' qualifiedNameList)? ';'
- ;
-
-interfaceGenericMethodDecl
- : typeParameters (type | 'void') Identifier
- interfaceMethodDeclaratorRest
- ;
-
-voidInterfaceMethodDeclaratorRest
- : formalParameters ('throws' qualifiedNameList)? ';'
- ;
-
-constructorDeclaratorRest
- : formalParameters ('throws' qualifiedNameList)? constructorBody
- ;
-
-constantDeclarator
- : Identifier constantDeclaratorRest
- ;
-
-variableDeclarators
- : variableDeclarator (',' variableDeclarator)*
- ;
-
-variableDeclarator
- : variableDeclaratorId ('=' variableInitializer)?
- ;
-
-constantDeclaratorsRest
- : constantDeclaratorRest (',' constantDeclarator)*
- ;
-
-constantDeclaratorRest
- : ('[' ']')* '=' variableInitializer
- ;
-
-variableDeclaratorId
- : Identifier ('[' ']')*
- ;
-
-variableInitializer
- : arrayInitializer
- | expression
- ;
-
-arrayInitializer
- : '{' (variableInitializer (',' variableInitializer)* (',')? )? '}'
- ;
-
-modifier
- : annotation
- | 'public'
- | 'protected'
- | 'private'
- | 'static'
- | 'abstract'
- | 'final'
- | 'native'
- | 'synchronized'
- | 'transient'
- | 'volatile'
- | 'strictfp'
- ;
-
-packageOrTypeName
- : qualifiedName
- ;
-
-enumConstantName
- : Identifier
- ;
-
-typeName
- : qualifiedName
- ;
-
-type
- : classOrInterfaceType ('[' ']')*
- | primitiveType ('[' ']')*
- ;
-
-classOrInterfaceType
- : Identifier typeArguments? ('.' Identifier typeArguments? )*
- ;
-
-primitiveType
- : 'boolean'
- | 'char'
- | 'byte'
- | 'short'
- | 'int'
- | 'long'
- | 'float'
- | 'double'
- ;
-
-variableModifier
- : 'final'
- | annotation
- ;
-
-typeArguments
- : '<' typeArgument (',' typeArgument)* '>'
- ;
-
-typeArgument
- : type
- | '?' (('extends' | 'super') type)?
- ;
-
-qualifiedNameList
- : qualifiedName (',' qualifiedName)*
- ;
-
-formalParameters
- : '(' formalParameterDecls? ')'
- ;
-
-formalParameterDecls
- : variableModifiers type formalParameterDeclsRest
- ;
-
-formalParameterDeclsRest
- : variableDeclaratorId (',' formalParameterDecls)?
- | '...' variableDeclaratorId
- ;
-
-methodBody
- : block
- ;
-
-constructorBody
- : '{' explicitConstructorInvocation? blockStatement* '}'
- ;
-
-// done? - i can't see support for the second case (with primary upfront)
-explicitConstructorInvocation
- : nonWildcardTypeArguments? ('this' | 'super') arguments ';'
- | primary '.' nonWildcardTypeArguments? 'super' arguments ';'
- ;
-
-qualifiedName
- : Identifier ('.' Identifier)*
- ;
-
-literal
- : integerLiteral
- | FloatingPointLiteral
- | CharacterLiteral
- | StringLiteral
- | booleanLiteral
- | 'null'
- ;
-
-integerLiteral
- : HexLiteral
- | OctalLiteral
- | DecimalLiteral
- ;
-
-booleanLiteral
- : 'true'
- | 'false'
- ;
-
-// ANNOTATIONS
-annotations
- : annotation+
- ;
-
-annotation
- : '@' annotationName ( '(' ( elementValuePairs | elementValue )? ')' )?
- ;
-
-annotationName
- : Identifier ('.' Identifier)*
- ;
-
-elementValuePairs
- : elementValuePair (',' elementValuePair)*
- ;
-
-elementValuePair
- : Identifier '=' elementValue
- ;
-
-elementValue
- : conditionalExpression
- | annotation
- | elementValueArrayInitializer
- ;
-
-elementValueArrayInitializer
- : '{' (elementValue (',' elementValue)*)? (',')? '}'
- ;
-
-annotationTypeDeclaration
- : '@' 'interface' Identifier annotationTypeBody
- ;
-
-annotationTypeBody
- : '{' (annotationTypeElementDeclaration)* '}'
- ;
-
-annotationTypeElementDeclaration
- : modifiers annotationTypeElementRest
- ;
-
-annotationTypeElementRest
- : type annotationMethodOrConstantRest ';'
- | normalClassDeclaration ';'?
- | normalInterfaceDeclaration ';'?
- | enumDeclaration ';'?
- | annotationTypeDeclaration ';'?
- ;
-
-annotationMethodOrConstantRest
- : annotationMethodRest
- | annotationConstantRest
- ;
-
-annotationMethodRest
- : Identifier '(' ')' defaultValue?
- ;
-
-annotationConstantRest
- : variableDeclarators
- ;
-
-defaultValue
- : 'default' elementValue
- ;
-
-// STATEMENTS / BLOCKS
-block
- : '{' blockStatement* '}'
- ;
-
-blockStatement
- : localVariableDeclarationStatement
- | classOrInterfaceDeclaration
- | statement
- ;
-
-localVariableDeclarationStatement
- : localVariableDeclaration ';'
- ;
-
-localVariableDeclaration
- : variableModifiers type variableDeclarators
- ;
-
-variableModifiers
- : variableModifier*
- ;
-
-statement
- : block
- | ASSERT expression (':' expression)? ';'
- | 'if' parExpression statement (options {k=1;}:'else' statement)?
- | 'for' '(' forControl ')' statement
- | 'while' parExpression statement
- | 'do' statement 'while' parExpression ';'
- | 'try' block
- ( catches 'finally' block
- | catches
- | 'finally' block
- )
- | 'switch' parExpression '{' switchBlockStatementGroups '}'
- | 'synchronized' parExpression block
- | 'return' expression? ';'
- | 'throw' expression ';'
- | 'break' Identifier? ';'
- | 'continue' Identifier? ';'
- | ';'
- | statementExpression ';'
- | Identifier ':' statement
- ;
-
-catches
- : catchClause (catchClause)*
- ;
-
-catchClause
- : 'catch' '(' formalParameter ')' block
- ;
-
-formalParameter
- : variableModifiers type variableDeclaratorId
- ;
-
-
-switchBlockStatementGroups
- : (switchBlockStatementGroup)*
- ;
-
-/* The change here (switchLabel -> switchLabel+) technically makes this grammar
- ambiguous; but with appropriately greedy parsing it yields the most
- appropriate AST, one in which each group, except possibly the last one, has
- labels and statements. */
-switchBlockStatementGroup
- : switchLabel+ blockStatement*
- ;
-
-switchLabel
- : 'case' constantExpression ':'
- | 'case' enumConstantName ':'
- | 'default' ':'
- ;
-forControl
-options {k=3;} // be efficient for common case: for (ID ID : ID) ...
- : enhancedForControl
- | forInit? ';' expression? ';' forUpdate?
- ;
-
-forInit
- : localVariableDeclaration
- | expressionList
- ;
-
-enhancedForControl
- : variableModifiers type Identifier ':' expression
- ;
-
-forUpdate
- : expressionList
- ;
-
-// currently transferred to java.cs up to this line
-// EXPRESSIONS
-
-parExpression
- : '(' expression ')'
- ;
-
-expressionList
- : expression (',' expression)*
- ;
-
-statementExpression
- : expression
- ;
-
-constantExpression
- : expression
- ;
-
-expression
- : conditionalExpression (assignmentOperator expression)?
- ;
-
-assignmentOperator
- : '='
- | '+='
- | '-='
- | '*='
- | '/='
- | '&='
- | '|='
- | '^='
- | '%='
- | ('<' '<' '=')=> t1='<' t2='<' t3='='
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
- $t2.getLine() == $t3.getLine() &&
- $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
- | ('>' '>' '>' '=')=> t1='>' t2='>' t3='>' t4='='
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
- $t2.getLine() == $t3.getLine() &&
- $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() &&
- $t3.getLine() == $t4.getLine() &&
- $t3.getCharPositionInLine() + 1 == $t4.getCharPositionInLine() }?
- | ('>' '>' '=')=> t1='>' t2='>' t3='='
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
- $t2.getLine() == $t3.getLine() &&
- $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
- ;
-
-conditionalExpression
- : conditionalOrExpression ( '?' expression ':' expression )?
- ;
-
-conditionalOrExpression
- : conditionalAndExpression ( '||' conditionalAndExpression )*
- ;
-
-conditionalAndExpression
- : inclusiveOrExpression ( '&&' inclusiveOrExpression )*
- ;
-
-inclusiveOrExpression
- : exclusiveOrExpression ( '|' exclusiveOrExpression )*
- ;
-
-exclusiveOrExpression
- : andExpression ( '^' andExpression )*
- ;
-
-andExpression
- : equalityExpression ( '&' equalityExpression )*
- ;
-
-equalityExpression
- : instanceOfExpression ( ('==' | '!=') instanceOfExpression )*
- ;
-
-instanceOfExpression
- : relationalExpression ('instanceof' type)?
- ;
-
-relationalExpression
- : shiftExpression ( relationalOp shiftExpression )*
- ;
-
-relationalOp
- : ('<' '=')=> t1='<' t2='='
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
- | ('>' '=')=> t1='>' t2='='
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
- | '<'
- | '>'
- ;
-
-shiftExpression
- : additiveExpression ( shiftOp additiveExpression )*
- ;
-
-shiftOp
- : ('<' '<')=> t1='<' t2='<'
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
- | ('>' '>' '>')=> t1='>' t2='>' t3='>'
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
- $t2.getLine() == $t3.getLine() &&
- $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
- | ('>' '>')=> t1='>' t2='>'
- { $t1.getLine() == $t2.getLine() &&
- $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
- ;
-
-// done
-additiveExpression
- : multiplicativeExpression ( ('+' | '-') multiplicativeExpression )*
- ;
-
-// done
-multiplicativeExpression
- : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
- ;
-
-// done
-unaryExpression
- : '+' unaryExpression
- | '-' unaryExpression
- | '++' unaryExpression
- | '--' unaryExpression
- | unaryExpressionNotPlusMinus
- ;
-
-// done
-unaryExpressionNotPlusMinus
- : '~' unaryExpression
- | '!' unaryExpression
- | castExpression
- | primary selector* ('++'|'--')?
- ;
-
-// done
-castExpression
- : '(' primitiveType ')' unaryExpression
- | '(' (type | expression) ')' unaryExpressionNotPlusMinus //without expression, is it necessary?
- ;
-
-//done, split only in "reference", "literal" and "parExpression"
-primary
- : parExpression // DONE
- | 'this' ('.' Identifier)* identifierSuffix? // DONE without the suffix
- | 'super' superSuffix // DONE
- | literal // DONE
- | 'new' creator // DONE
- | Identifier ('.' Identifier)* identifierSuffix? // DONE without the suffix
- | primitiveType ('[' ']')* '.' 'class' // DONE
- | 'void' '.' 'class' // DONE
- ;
-
-// done
-identifierSuffix
- : ('[' ']')+ '.' 'class' // DONE
- | ('[' expression ']')+ // DONE (can also be matched by selector, but do here)
- | arguments // DONE
- | '.' 'class' // DONE
- | '.' explicitGenericInvocation // DONE
- | '.' 'this' // DONE
- | '.' 'super' arguments // TODO can't find an example for this case
- | '.' 'new' innerCreator // DONE
- ;
-
-// done
-creator
- : nonWildcardTypeArguments createdName classCreatorRest
- | createdName (arrayCreatorRest | classCreatorRest)
- ;
-
-// done
-createdName
- : classOrInterfaceType
- | primitiveType
- ;
-
-// done
-innerCreator
- : nonWildcardTypeArguments? Identifier classCreatorRest
- ;
-
-// done
-arrayCreatorRest
- : '['
- ( ']' ('[' ']')* arrayInitializer
- | expression ']' ('[' expression ']')* ('[' ']')*
- )
- ;
-
-// done
-classCreatorRest
- : arguments classBody?
- ;
-
-// done
-explicitGenericInvocation
- : nonWildcardTypeArguments Identifier arguments
- ;
-
-// done
-nonWildcardTypeArguments
- : '<' typeList '>'
- ;
-
-// done
-selector
- : '.' Identifier arguments? // DONE
- | '.' 'this' // DONE
- | '.' 'super' superSuffix // DONE
- | '.' 'new' innerCreator // DONE
- | '[' expression ']' // DONE
- ;
-
-// done
-superSuffix
- : arguments
- | '.' Identifier arguments?
- ;
-
-// done
-arguments
- : '(' expressionList? ')'
- ;
-
-// LEXER
-
-HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
-
-DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
-
-OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;
-
-fragment
-HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-IntegerTypeSuffix : ('l'|'L') ;
-
-FloatingPointLiteral
- : ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
- | '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
- | ('0'..'9')+ Exponent FloatTypeSuffix?
- | ('0'..'9')+ FloatTypeSuffix
- ;
-
-fragment
-Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
-
-fragment
-FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
-
-CharacterLiteral
- : '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
- ;
-
-StringLiteral
- : '"' ( EscapeSequence | ~('\\'|'"') )* '"'
- ;
-
-fragment
-EscapeSequence
- : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
- | UnicodeEscape
- | OctalEscape
- ;
-
-fragment
-OctalEscape
- : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7') ('0'..'7')
- | '\\' ('0'..'7')
- ;
-
-fragment
-UnicodeEscape
- : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
- ;
-
-ENUM: 'enum' {if (!enumIsKeyword) $type=Identifier;}
- ;
-
-ASSERT
- : 'assert' {if (!assertIsKeyword) $type=Identifier;}
- ;
-
-Identifier
- : Letter (Letter|JavaIDDigit)*
- ;
-
-/**I found this char range in JavaCC's grammar, but Letter and Digit overlap.
- Still works, but...
- */
-fragment
-Letter
- : '\u0024' |
- '\u0041'..'\u005a' |
- '\u005f' |
- '\u0061'..'\u007a' |
- '\u00c0'..'\u00d6' |
- '\u00d8'..'\u00f6' |
- '\u00f8'..'\u00ff' |
- '\u0100'..'\u1fff' |
- '\u3040'..'\u318f' |
- '\u3300'..'\u337f' |
- '\u3400'..'\u3d2d' |
- '\u4e00'..'\u9fff' |
- '\uf900'..'\ufaff'
- ;
-
-fragment
-JavaIDDigit
- : '\u0030'..'\u0039' |
- '\u0660'..'\u0669' |
- '\u06f0'..'\u06f9' |
- '\u0966'..'\u096f' |
- '\u09e6'..'\u09ef' |
- '\u0a66'..'\u0a6f' |
- '\u0ae6'..'\u0aef' |
- '\u0b66'..'\u0b6f' |
- '\u0be7'..'\u0bef' |
- '\u0c66'..'\u0c6f' |
- '\u0ce6'..'\u0cef' |
- '\u0d66'..'\u0d6f' |
- '\u0e50'..'\u0e59' |
- '\u0ed0'..'\u0ed9' |
- '\u1040'..'\u1049'
- ;
-
-WS : (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;}
- ;
-
-COMMENT
- : '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
- ;
-
-LINE_COMMENT
- : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
- ;
-/*
- [The "BSD licence"]
- Copyright (c) 2007-2008 Terence Parr
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-/** A Java 1.5 grammar for ANTLR v3 derived from the spec
- *
- * This is a very close representation of the spec; the changes
- * are comestic (remove left recursion) and also fixes (the spec
- * isn't exactly perfect). I have run this on the 1.4.2 source
- * and some nasty looking enums from 1.5, but have not really
- * tested for 1.5 compatibility.
- *
- * I built this with: java -Xmx100M org.antlr.Tool java.g
- * and got two errors that are ok (for now):
- * java.g:691:9: Decision can match input such as
- * "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
- * using multiple alternatives: 3, 4
- * As a result, alternative(s) 4 were disabled for that input
- * java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
- * '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
- * '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
- * '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
- * using multiple alternatives: 1, 2
- * As a result, alternative(s) 2 were disabled for that input
- *
- * You can turn enum on/off as a keyword :)
- *
- * Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
- *
- * Primary author: Terence Parr, July 2006
- *
- * Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
- * October 25, 2006;
- * fixed normalInterfaceDeclaration: now uses typeParameters instead
- * of typeParameter (according to JLS, 3rd edition)
- * fixed castExpression: no longer allows expression next to type
- * (according to semantics in JLS, in contrast with syntax in JLS)
- *
- * Version 1.0.2 -- Terence Parr, Nov 27, 2006
- * java spec I built this from had some bizarre for-loop control.
- * Looked weird and so I looked elsewhere...Yep, it's messed up.
- * simplified.
- *
- * Version 1.0.3 -- Chris Hogue, Feb 26, 2007
- * Factored out an annotationName rule and used it in the annotation rule.
- * Not sure why, but typeName wasn't recognizing references to inner
- * annotations (e.g. @InterfaceName.InnerAnnotation())
- * Factored out the elementValue section of an annotation reference. Created
- * elementValuePair and elementValuePairs rules, then used them in the
- * annotation rule. Allows it to recognize annotation references with
- * multiple, comma separated attributes.
- * Updated elementValueArrayInitializer so that it allows multiple elements.
- * (It was only allowing 0 or 1 element).
- * Updated localVariableDeclaration to allow annotations. Interestingly the JLS
- * doesn't appear to indicate this is legal, but it does work as of at least
- * JDK 1.5.0_06.
- * Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
- * Because annotationConstantRest already references variableDeclarator which
- * has the Identifier portion in it, the parser would fail on constants in
- * annotation definitions because it expected two identifiers.
- * Added optional trailing ';' to the alternatives in annotationTypeElementRest.
- * Wouldn't handle an inner interface that has a trailing ';'.
- * Swapped the expression and type rule reference order in castExpression to
- * make it check for genericized casts first. It was failing to recognize a
- * statement like "Class TYPE = (Class)...;" because it was seeing
- * 'Class'.
- * Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
- * Again, JLS doesn't seem to allow this, but java.lang.Class has an example of
- * of this construct.
- * Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
- * just 'arguments'. The case it couldn't handle was a call to an explicit
- * generic method invocation (e.g. this.doSomething()). Using identifierSuffix
- * may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
- *
- * Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
- *
- * Fixed formalParameterDecls, localVariableDeclaration, forInit,
- * and forVarControl to use variableModifier* not 'final'? (annotation)?
- *
- * Version 1.0.5 -- Terence, June 21, 2007
- * --a[i].foo didn't work. Fixed unaryExpression
- *
- * Version 1.0.6 -- John Ridgway, March 17, 2008
- * Made "assert" a switchable keyword like "enum".
- * Fixed compilationUnit to disallow "annotation importDeclaration ...".
- * Changed "Identifier ('.' Identifier)*" to "qualifiedName" in more
- * places.
- * Changed modifier* and/or variableModifier* to classOrInterfaceModifiers,
- * modifiers or variableModifiers, as appropriate.
- * Renamed "bound" to "typeBound" to better match language in the JLS.
- * Added "memberDeclaration" which rewrites to methodDeclaration or
- * fieldDeclaration and pulled type into memberDeclaration. So we parse
- * type and then move on to decide whether we're dealing with a field
- * or a method.
- * Modified "constructorDeclaration" to use "constructorBody" instead of
- * "methodBody". constructorBody starts with explicitConstructorInvocation,
- * then goes on to blockStatement*. Pulling explicitConstructorInvocation
- * out of expressions allowed me to simplify "primary".
- * Changed variableDeclarator to simplify it.
- * Changed type to use classOrInterfaceType, thus simplifying it; of course
- * I then had to add classOrInterfaceType, but it is used in several
- * places.
- * Fixed annotations, old version allowed "@X(y,z)", which is illegal.
- * Added optional comma to end of "elementValueArrayInitializer"; as per JLS.
- * Changed annotationTypeElementRest to use normalClassDeclaration and
- * normalInterfaceDeclaration rather than classDeclaration and
- * interfaceDeclaration, thus getting rid of a couple of grammar ambiguities.
- * Split localVariableDeclaration into localVariableDeclarationStatement
- * (includes the terminating semi-colon) and localVariableDeclaration.
- * This allowed me to use localVariableDeclaration in "forInit" clauses,
- * simplifying them.
- * Changed switchBlockStatementGroup to use multiple labels. This adds an
- * ambiguity, but if one uses appropriately greedy parsing it yields the
- * parse that is closest to the meaning of the switch statement.
- * Renamed "forVarControl" to "enhancedForControl" -- JLS language.
- * Added semantic predicates to test for shift operations rather than other
- * things. Thus, for instance, the string "< <" will never be treated
- * as a left-shift operator.
- * In "creator" we rule out "nonWildcardTypeArguments" on arrayCreation,
- * which are illegal.
- * Moved "nonWildcardTypeArguments into innerCreator.
- * Removed 'super' superSuffix from explicitGenericInvocation, since that
- * is only used in explicitConstructorInvocation at the beginning of a
- * constructorBody. (This is part of the simplification of expressions
- * mentioned earlier.)
- * Simplified primary (got rid of those things that are only used in
- * explicitConstructorInvocation).
- * Lexer -- removed "Exponent?" from FloatingPointLiteral choice 4, since it
- * led to an ambiguity.
- *
- * This grammar successfully parses every .java file in the JDK 1.5 source
- * tree (excluding those whose file names include '-', which are not
- * valid Java compilation units).
- *
- * Known remaining problems:
- * "Letter" and "JavaIDDigit" are wrong. The actual specification of
- * "Letter" should be "a character for which the method
- * Character.isJavaIdentifierStart(int) returns true." A "Java
- * letter-or-digit is a character for which the method
- * Character.isJavaIdentifierPart(int) returns true."
- */
+/*
+ * This Java grammar inspired java.ecore and java.cs
+ * source: http://www.antlr.org/grammar/1152141644268/Java.g
+ * (more information at the end of the file)
+ */
+grammar Java;
+options {backtrack=true; memoize=true;}
+
+@lexer::members {
+ protected boolean enumIsKeyword = true;
+ protected boolean assertIsKeyword = true;
+}
+
+// starting point for parsing a java file
+/* The annotations are separated out to make parsing faster, but must be associated with
+ a packageDeclaration or a typeDeclaration (and not an empty one). */
+compilationUnit
+ : annotations
+ ( packageDeclaration importDeclaration* typeDeclaration*
+ | classOrInterfaceDeclaration typeDeclaration*
+ )
+ | packageDeclaration? importDeclaration* typeDeclaration*
+ ;
+
+packageDeclaration
+ : 'package' qualifiedName ';'
+ ;
+
+importDeclaration
+ : 'import' 'static'? qualifiedName ('.' '*')? ';'
+ ;
+
+typeDeclaration
+ : classOrInterfaceDeclaration
+ | ';'
+ ;
+
+classOrInterfaceDeclaration
+ : classOrInterfaceModifiers (classDeclaration | interfaceDeclaration)
+ ;
+
+classOrInterfaceModifiers
+ : classOrInterfaceModifier*
+ ;
+
+classOrInterfaceModifier
+ : annotation // class or interface
+ | 'public' // class or interface
+ | 'protected' // class or interface
+ | 'private' // class or interface
+ | 'abstract' // class or interface
+ | 'static' // class or interface
+ | 'final' // class only -- does not apply to interfaces
+ | 'strictfp' // class or interface
+ ;
+
+modifiers
+ : modifier*
+ ;
+
+classDeclaration
+ : normalClassDeclaration
+ | enumDeclaration
+ ;
+
+normalClassDeclaration
+ : 'class' Identifier typeParameters?
+ ('extends' type)?
+ ('implements' typeList)?
+ classBody
+ ;
+
+typeParameters
+ : '<' typeParameter (',' typeParameter)* '>'
+ ;
+
+typeParameter
+ : Identifier ('extends' typeBound)?
+ ;
+
+typeBound
+ : type ('&' type)*
+ ;
+
+enumDeclaration
+ : ENUM Identifier ('implements' typeList)? enumBody
+ ;
+
+enumBody
+ : '{' enumConstants? ','? enumBodyDeclarations? '}'
+ ;
+
+enumConstants
+ : enumConstant (',' enumConstant)*
+ ;
+
+enumConstant
+ : annotations? Identifier arguments? classBody?
+ ;
+
+enumBodyDeclarations
+ : ';' (classBodyDeclaration)*
+ ;
+
+
+interfaceDeclaration
+ : normalInterfaceDeclaration
+ | annotationTypeDeclaration
+ ;
+
+normalInterfaceDeclaration
+ : 'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody
+ ;
+
+typeList
+ : type (',' type)*
+ ;
+
+classBody
+ : '{' classBodyDeclaration* '}'
+ ;
+
+interfaceBody
+ : '{' interfaceBodyDeclaration* '}'
+ ;
+
+classBodyDeclaration
+ : ';'
+ | 'static'? block
+ | modifiers memberDecl
+ ;
+
+memberDecl
+ : genericMethodOrConstructorDecl
+ | memberDeclaration
+ | 'void' Identifier voidMethodDeclaratorRest
+ | Identifier constructorDeclaratorRest
+ | interfaceDeclaration
+ | classDeclaration
+ ;
+
+memberDeclaration
+ : type (methodDeclaration | fieldDeclaration)
+ ;
+
+genericMethodOrConstructorDecl
+ : typeParameters genericMethodOrConstructorRest
+ ;
+
+genericMethodOrConstructorRest
+ : (type | 'void') Identifier methodDeclaratorRest
+ | Identifier constructorDeclaratorRest
+ ;
+
+methodDeclaration
+ : Identifier methodDeclaratorRest
+ ;
+
+fieldDeclaration
+ : variableDeclarators ';'
+ ;
+
+interfaceBodyDeclaration
+ : modifiers interfaceMemberDecl
+ | ';'
+ ;
+
+interfaceMemberDecl
+ : interfaceMethodOrFieldDecl
+ | interfaceGenericMethodDecl
+ | 'void' Identifier voidInterfaceMethodDeclaratorRest
+ | interfaceDeclaration
+ | classDeclaration
+ ;
+
+interfaceMethodOrFieldDecl
+ : type Identifier interfaceMethodOrFieldRest
+ ;
+
+interfaceMethodOrFieldRest
+ : constantDeclaratorsRest ';'
+ | interfaceMethodDeclaratorRest
+ ;
+
+methodDeclaratorRest
+ : formalParameters ('[' ']')*
+ ('throws' qualifiedNameList)?
+ ( methodBody
+ | ';'
+ )
+ ;
+
+voidMethodDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)?
+ ( methodBody
+ | ';'
+ )
+ ;
+
+interfaceMethodDeclaratorRest
+ : formalParameters ('[' ']')* ('throws' qualifiedNameList)? ';'
+ ;
+
+interfaceGenericMethodDecl
+ : typeParameters (type | 'void') Identifier
+ interfaceMethodDeclaratorRest
+ ;
+
+voidInterfaceMethodDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)? ';'
+ ;
+
+constructorDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)? constructorBody
+ ;
+
+constantDeclarator
+ : Identifier constantDeclaratorRest
+ ;
+
+variableDeclarators
+ : variableDeclarator (',' variableDeclarator)*
+ ;
+
+variableDeclarator
+ : variableDeclaratorId ('=' variableInitializer)?
+ ;
+
+constantDeclaratorsRest
+ : constantDeclaratorRest (',' constantDeclarator)*
+ ;
+
+constantDeclaratorRest
+ : ('[' ']')* '=' variableInitializer
+ ;
+
+variableDeclaratorId
+ : Identifier ('[' ']')*
+ ;
+
+variableInitializer
+ : arrayInitializer
+ | expression
+ ;
+
+arrayInitializer
+ : '{' (variableInitializer (',' variableInitializer)* (',')? )? '}'
+ ;
+
+modifier
+ : annotation
+ | 'public'
+ | 'protected'
+ | 'private'
+ | 'static'
+ | 'abstract'
+ | 'final'
+ | 'native'
+ | 'synchronized'
+ | 'transient'
+ | 'volatile'
+ | 'strictfp'
+ ;
+
+packageOrTypeName
+ : qualifiedName
+ ;
+
+enumConstantName
+ : Identifier
+ ;
+
+typeName
+ : qualifiedName
+ ;
+
+type
+ : classOrInterfaceType ('[' ']')*
+ | primitiveType ('[' ']')*
+ ;
+
+classOrInterfaceType
+ : Identifier typeArguments? ('.' Identifier typeArguments? )*
+ ;
+
+primitiveType
+ : 'boolean'
+ | 'char'
+ | 'byte'
+ | 'short'
+ | 'int'
+ | 'long'
+ | 'float'
+ | 'double'
+ ;
+
+variableModifier
+ : 'final'
+ | annotation
+ ;
+
+typeArguments
+ : '<' typeArgument (',' typeArgument)* '>'
+ ;
+
+typeArgument
+ : type
+ | '?' (('extends' | 'super') type)?
+ ;
+
+qualifiedNameList
+ : qualifiedName (',' qualifiedName)*
+ ;
+
+formalParameters
+ : '(' formalParameterDecls? ')'
+ ;
+
+formalParameterDecls
+ : variableModifiers type formalParameterDeclsRest
+ ;
+
+formalParameterDeclsRest
+ : variableDeclaratorId (',' formalParameterDecls)?
+ | '...' variableDeclaratorId
+ ;
+
+methodBody
+ : block
+ ;
+
+constructorBody
+ : '{' explicitConstructorInvocation? blockStatement* '}'
+ ;
+
+// done? - i can't see support for the second case (with primary upfront)
+explicitConstructorInvocation
+ : nonWildcardTypeArguments? ('this' | 'super') arguments ';'
+ | primary '.' nonWildcardTypeArguments? 'super' arguments ';'
+ ;
+
+qualifiedName
+ : Identifier ('.' Identifier)*
+ ;
+
+literal
+ : integerLiteral
+ | FloatingPointLiteral
+ | CharacterLiteral
+ | StringLiteral
+ | booleanLiteral
+ | 'null'
+ ;
+
+integerLiteral
+ : HexLiteral
+ | OctalLiteral
+ | DecimalLiteral
+ ;
+
+booleanLiteral
+ : 'true'
+ | 'false'
+ ;
+
+// ANNOTATIONS
+annotations
+ : annotation+
+ ;
+
+annotation
+ : '@' annotationName ( '(' ( elementValuePairs | elementValue )? ')' )?
+ ;
+
+annotationName
+ : Identifier ('.' Identifier)*
+ ;
+
+elementValuePairs
+ : elementValuePair (',' elementValuePair)*
+ ;
+
+elementValuePair
+ : Identifier '=' elementValue
+ ;
+
+elementValue
+ : conditionalExpression
+ | annotation
+ | elementValueArrayInitializer
+ ;
+
+elementValueArrayInitializer
+ : '{' (elementValue (',' elementValue)*)? (',')? '}'
+ ;
+
+annotationTypeDeclaration
+ : '@' 'interface' Identifier annotationTypeBody
+ ;
+
+annotationTypeBody
+ : '{' (annotationTypeElementDeclaration)* '}'
+ ;
+
+annotationTypeElementDeclaration
+ : modifiers annotationTypeElementRest
+ ;
+
+annotationTypeElementRest
+ : type annotationMethodOrConstantRest ';'
+ | normalClassDeclaration ';'?
+ | normalInterfaceDeclaration ';'?
+ | enumDeclaration ';'?
+ | annotationTypeDeclaration ';'?
+ ;
+
+annotationMethodOrConstantRest
+ : annotationMethodRest
+ | annotationConstantRest
+ ;
+
+annotationMethodRest
+ : Identifier '(' ')' defaultValue?
+ ;
+
+annotationConstantRest
+ : variableDeclarators
+ ;
+
+defaultValue
+ : 'default' elementValue
+ ;
+
+// STATEMENTS / BLOCKS
+block
+ : '{' blockStatement* '}'
+ ;
+
+blockStatement
+ : localVariableDeclarationStatement
+ | classOrInterfaceDeclaration
+ | statement
+ ;
+
+localVariableDeclarationStatement
+ : localVariableDeclaration ';'
+ ;
+
+localVariableDeclaration
+ : variableModifiers type variableDeclarators
+ ;
+
+variableModifiers
+ : variableModifier*
+ ;
+
+statement
+ : block
+ | ASSERT expression (':' expression)? ';'
+ | 'if' parExpression statement (options {k=1;}:'else' statement)?
+ | 'for' '(' forControl ')' statement
+ | 'while' parExpression statement
+ | 'do' statement 'while' parExpression ';'
+ | 'try' block
+ ( catches 'finally' block
+ | catches
+ | 'finally' block
+ )
+ | 'switch' parExpression '{' switchBlockStatementGroups '}'
+ | 'synchronized' parExpression block
+ | 'return' expression? ';'
+ | 'throw' expression ';'
+ | 'break' Identifier? ';'
+ | 'continue' Identifier? ';'
+ | ';'
+ | statementExpression ';'
+ | Identifier ':' statement
+ ;
+
+catches
+ : catchClause (catchClause)*
+ ;
+
+catchClause
+ : 'catch' '(' formalParameter ')' block
+ ;
+
+formalParameter
+ : variableModifiers type variableDeclaratorId
+ ;
+
+
+switchBlockStatementGroups
+ : (switchBlockStatementGroup)*
+ ;
+
+/* The change here (switchLabel -> switchLabel+) technically makes this grammar
+ ambiguous; but with appropriately greedy parsing it yields the most
+ appropriate AST, one in which each group, except possibly the last one, has
+ labels and statements. */
+switchBlockStatementGroup
+ : switchLabel+ blockStatement*
+ ;
+
+switchLabel
+ : 'case' constantExpression ':'
+ | 'case' enumConstantName ':'
+ | 'default' ':'
+ ;
+forControl
+options {k=3;} // be efficient for common case: for (ID ID : ID) ...
+ : enhancedForControl
+ | forInit? ';' expression? ';' forUpdate?
+ ;
+
+forInit
+ : localVariableDeclaration
+ | expressionList
+ ;
+
+enhancedForControl
+ : variableModifiers type Identifier ':' expression
+ ;
+
+forUpdate
+ : expressionList
+ ;
+
+// currently transferred to java.cs up to this line
+// EXPRESSIONS
+
+parExpression
+ : '(' expression ')'
+ ;
+
+expressionList
+ : expression (',' expression)*
+ ;
+
+statementExpression
+ : expression
+ ;
+
+constantExpression
+ : expression
+ ;
+
+expression
+ : conditionalExpression (assignmentOperator expression)?
+ ;
+
+assignmentOperator
+ : '='
+ | '+='
+ | '-='
+ | '*='
+ | '/='
+ | '&='
+ | '|='
+ | '^='
+ | '%='
+ | ('<' '<' '=')=> t1='<' t2='<' t3='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ | ('>' '>' '>' '=')=> t1='>' t2='>' t3='>' t4='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() &&
+ $t3.getLine() == $t4.getLine() &&
+ $t3.getCharPositionInLine() + 1 == $t4.getCharPositionInLine() }?
+ | ('>' '>' '=')=> t1='>' t2='>' t3='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ ;
+
+conditionalExpression
+ : conditionalOrExpression ( '?' expression ':' expression )?
+ ;
+
+conditionalOrExpression
+ : conditionalAndExpression ( '||' conditionalAndExpression )*
+ ;
+
+conditionalAndExpression
+ : inclusiveOrExpression ( '&&' inclusiveOrExpression )*
+ ;
+
+inclusiveOrExpression
+ : exclusiveOrExpression ( '|' exclusiveOrExpression )*
+ ;
+
+exclusiveOrExpression
+ : andExpression ( '^' andExpression )*
+ ;
+
+andExpression
+ : equalityExpression ( '&' equalityExpression )*
+ ;
+
+equalityExpression
+ : instanceOfExpression ( ('==' | '!=') instanceOfExpression )*
+ ;
+
+instanceOfExpression
+ : relationalExpression ('instanceof' type)?
+ ;
+
+relationalExpression
+ : shiftExpression ( relationalOp shiftExpression )*
+ ;
+
+relationalOp
+ : ('<' '=')=> t1='<' t2='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | ('>' '=')=> t1='>' t2='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | '<'
+ | '>'
+ ;
+
+shiftExpression
+ : additiveExpression ( shiftOp additiveExpression )*
+ ;
+
+shiftOp
+ : ('<' '<')=> t1='<' t2='<'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | ('>' '>' '>')=> t1='>' t2='>' t3='>'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ | ('>' '>')=> t1='>' t2='>'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ ;
+
+// done
+additiveExpression
+ : multiplicativeExpression ( ('+' | '-') multiplicativeExpression )*
+ ;
+
+// done
+multiplicativeExpression
+ : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
+ ;
+
+// done
+unaryExpression
+ : '+' unaryExpression
+ | '-' unaryExpression
+ | '++' unaryExpression
+ | '--' unaryExpression
+ | unaryExpressionNotPlusMinus
+ ;
+
+// done
+unaryExpressionNotPlusMinus
+ : '~' unaryExpression
+ | '!' unaryExpression
+ | castExpression
+ | primary selector* ('++'|'--')?
+ ;
+
+// done
+castExpression
+ : '(' primitiveType ')' unaryExpression
+ | '(' (type | expression) ')' unaryExpressionNotPlusMinus //without expression, is it necessary?
+ ;
+
+//done, split only in "reference", "literal" and "parExpression"
+primary
+ : parExpression // DONE
+ | 'this' ('.' Identifier)* identifierSuffix? // DONE without the suffix
+ | 'super' superSuffix // DONE
+ | literal // DONE
+ | 'new' creator // DONE
+ | Identifier ('.' Identifier)* identifierSuffix? // DONE without the suffix
+ | primitiveType ('[' ']')* '.' 'class' // DONE
+ | 'void' '.' 'class' // DONE
+ ;
+
+// done
+identifierSuffix
+ : ('[' ']')+ '.' 'class' // DONE
+ | ('[' expression ']')+ // DONE (can also be matched by selector, but do here)
+ | arguments // DONE
+ | '.' 'class' // DONE
+ | '.' explicitGenericInvocation // DONE
+ | '.' 'this' // DONE
+ | '.' 'super' arguments // TODO can't find an example for this case
+ | '.' 'new' innerCreator // DONE
+ ;
+
+// done
+creator
+ : nonWildcardTypeArguments createdName classCreatorRest
+ | createdName (arrayCreatorRest | classCreatorRest)
+ ;
+
+// done
+createdName
+ : classOrInterfaceType
+ | primitiveType
+ ;
+
+// done
+innerCreator
+ : nonWildcardTypeArguments? Identifier classCreatorRest
+ ;
+
+// done
+arrayCreatorRest
+ : '['
+ ( ']' ('[' ']')* arrayInitializer
+ | expression ']' ('[' expression ']')* ('[' ']')*
+ )
+ ;
+
+// done
+classCreatorRest
+ : arguments classBody?
+ ;
+
+// done
+explicitGenericInvocation
+ : nonWildcardTypeArguments Identifier arguments
+ ;
+
+// done
+nonWildcardTypeArguments
+ : '<' typeList '>'
+ ;
+
+// done
+selector
+ : '.' Identifier arguments? // DONE
+ | '.' 'this' // DONE
+ | '.' 'super' superSuffix // DONE
+ | '.' 'new' innerCreator // DONE
+ | '[' expression ']' // DONE
+ ;
+
+// done
+superSuffix
+ : arguments
+ | '.' Identifier arguments?
+ ;
+
+// done
+arguments
+ : '(' expressionList? ')'
+ ;
+
+// LEXER
+
+HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
+
+DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
+
+OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+IntegerTypeSuffix : ('l'|'L') ;
+
+FloatingPointLiteral
+ : ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
+ | '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
+ | ('0'..'9')+ Exponent FloatTypeSuffix?
+ | ('0'..'9')+ FloatTypeSuffix
+ ;
+
+fragment
+Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
+
+fragment
+FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
+
+CharacterLiteral
+ : '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
+ ;
+
+StringLiteral
+ : '"' ( EscapeSequence | ~('\\'|'"') )* '"'
+ ;
+
+fragment
+EscapeSequence
+ : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
+ | UnicodeEscape
+ | OctalEscape
+ ;
+
+fragment
+OctalEscape
+ : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7')
+ ;
+
+fragment
+UnicodeEscape
+ : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+ ;
+
+ENUM: 'enum' {if (!enumIsKeyword) $type=Identifier;}
+ ;
+
+ASSERT
+ : 'assert' {if (!assertIsKeyword) $type=Identifier;}
+ ;
+
+Identifier
+ : Letter (Letter|JavaIDDigit)*
+ ;
+
+/**I found this char range in JavaCC's grammar, but Letter and Digit overlap.
+ Still works, but...
+ */
+fragment
+Letter
+ : '\u0024' |
+ '\u0041'..'\u005a' |
+ '\u005f' |
+ '\u0061'..'\u007a' |
+ '\u00c0'..'\u00d6' |
+ '\u00d8'..'\u00f6' |
+ '\u00f8'..'\u00ff' |
+ '\u0100'..'\u1fff' |
+ '\u3040'..'\u318f' |
+ '\u3300'..'\u337f' |
+ '\u3400'..'\u3d2d' |
+ '\u4e00'..'\u9fff' |
+ '\uf900'..'\ufaff'
+ ;
+
+fragment
+JavaIDDigit
+ : '\u0030'..'\u0039' |
+ '\u0660'..'\u0669' |
+ '\u06f0'..'\u06f9' |
+ '\u0966'..'\u096f' |
+ '\u09e6'..'\u09ef' |
+ '\u0a66'..'\u0a6f' |
+ '\u0ae6'..'\u0aef' |
+ '\u0b66'..'\u0b6f' |
+ '\u0be7'..'\u0bef' |
+ '\u0c66'..'\u0c6f' |
+ '\u0ce6'..'\u0cef' |
+ '\u0d66'..'\u0d6f' |
+ '\u0e50'..'\u0e59' |
+ '\u0ed0'..'\u0ed9' |
+ '\u1040'..'\u1049'
+ ;
+
+WS : (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;}
+ ;
+
+COMMENT
+ : '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
+ ;
+
+LINE_COMMENT
+ : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
+ ;
+/*
+ [The "BSD licence"]
+ Copyright (c) 2007-2008 Terence Parr
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/** A Java 1.5 grammar for ANTLR v3 derived from the spec
+ *
+ * This is a very close representation of the spec; the changes
+ * are comestic (remove left recursion) and also fixes (the spec
+ * isn't exactly perfect). I have run this on the 1.4.2 source
+ * and some nasty looking enums from 1.5, but have not really
+ * tested for 1.5 compatibility.
+ *
+ * I built this with: java -Xmx100M org.antlr.Tool java.g
+ * and got two errors that are ok (for now):
+ * java.g:691:9: Decision can match input such as
+ * "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
+ * using multiple alternatives: 3, 4
+ * As a result, alternative(s) 4 were disabled for that input
+ * java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
+ * '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
+ * '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
+ * '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
+ * using multiple alternatives: 1, 2
+ * As a result, alternative(s) 2 were disabled for that input
+ *
+ * You can turn enum on/off as a keyword :)
+ *
+ * Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
+ *
+ * Primary author: Terence Parr, July 2006
+ *
+ * Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
+ * October 25, 2006;
+ * fixed normalInterfaceDeclaration: now uses typeParameters instead
+ * of typeParameter (according to JLS, 3rd edition)
+ * fixed castExpression: no longer allows expression next to type
+ * (according to semantics in JLS, in contrast with syntax in JLS)
+ *
+ * Version 1.0.2 -- Terence Parr, Nov 27, 2006
+ * java spec I built this from had some bizarre for-loop control.
+ * Looked weird and so I looked elsewhere...Yep, it's messed up.
+ * simplified.
+ *
+ * Version 1.0.3 -- Chris Hogue, Feb 26, 2007
+ * Factored out an annotationName rule and used it in the annotation rule.
+ * Not sure why, but typeName wasn't recognizing references to inner
+ * annotations (e.g. @InterfaceName.InnerAnnotation())
+ * Factored out the elementValue section of an annotation reference. Created
+ * elementValuePair and elementValuePairs rules, then used them in the
+ * annotation rule. Allows it to recognize annotation references with
+ * multiple, comma separated attributes.
+ * Updated elementValueArrayInitializer so that it allows multiple elements.
+ * (It was only allowing 0 or 1 element).
+ * Updated localVariableDeclaration to allow annotations. Interestingly the JLS
+ * doesn't appear to indicate this is legal, but it does work as of at least
+ * JDK 1.5.0_06.
+ * Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
+ * Because annotationConstantRest already references variableDeclarator which
+ * has the Identifier portion in it, the parser would fail on constants in
+ * annotation definitions because it expected two identifiers.
+ * Added optional trailing ';' to the alternatives in annotationTypeElementRest.
+ * Wouldn't handle an inner interface that has a trailing ';'.
+ * Swapped the expression and type rule reference order in castExpression to
+ * make it check for genericized casts first. It was failing to recognize a
+ * statement like "Class TYPE = (Class)...;" because it was seeing
+ * 'Class'.
+ * Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
+ * Again, JLS doesn't seem to allow this, but java.lang.Class has an example of
+ * of this construct.
+ * Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
+ * just 'arguments'. The case it couldn't handle was a call to an explicit
+ * generic method invocation (e.g. this.doSomething()). Using identifierSuffix
+ * may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
+ *
+ * Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
+ *
+ * Fixed formalParameterDecls, localVariableDeclaration, forInit,
+ * and forVarControl to use variableModifier* not 'final'? (annotation)?
+ *
+ * Version 1.0.5 -- Terence, June 21, 2007
+ * --a[i].foo didn't work. Fixed unaryExpression
+ *
+ * Version 1.0.6 -- John Ridgway, March 17, 2008
+ * Made "assert" a switchable keyword like "enum".
+ * Fixed compilationUnit to disallow "annotation importDeclaration ...".
+ * Changed "Identifier ('.' Identifier)*" to "qualifiedName" in more
+ * places.
+ * Changed modifier* and/or variableModifier* to classOrInterfaceModifiers,
+ * modifiers or variableModifiers, as appropriate.
+ * Renamed "bound" to "typeBound" to better match language in the JLS.
+ * Added "memberDeclaration" which rewrites to methodDeclaration or
+ * fieldDeclaration and pulled type into memberDeclaration. So we parse
+ * type and then move on to decide whether we're dealing with a field
+ * or a method.
+ * Modified "constructorDeclaration" to use "constructorBody" instead of
+ * "methodBody". constructorBody starts with explicitConstructorInvocation,
+ * then goes on to blockStatement*. Pulling explicitConstructorInvocation
+ * out of expressions allowed me to simplify "primary".
+ * Changed variableDeclarator to simplify it.
+ * Changed type to use classOrInterfaceType, thus simplifying it; of course
+ * I then had to add classOrInterfaceType, but it is used in several
+ * places.
+ * Fixed annotations, old version allowed "@X(y,z)", which is illegal.
+ * Added optional comma to end of "elementValueArrayInitializer"; as per JLS.
+ * Changed annotationTypeElementRest to use normalClassDeclaration and
+ * normalInterfaceDeclaration rather than classDeclaration and
+ * interfaceDeclaration, thus getting rid of a couple of grammar ambiguities.
+ * Split localVariableDeclaration into localVariableDeclarationStatement
+ * (includes the terminating semi-colon) and localVariableDeclaration.
+ * This allowed me to use localVariableDeclaration in "forInit" clauses,
+ * simplifying them.
+ * Changed switchBlockStatementGroup to use multiple labels. This adds an
+ * ambiguity, but if one uses appropriately greedy parsing it yields the
+ * parse that is closest to the meaning of the switch statement.
+ * Renamed "forVarControl" to "enhancedForControl" -- JLS language.
+ * Added semantic predicates to test for shift operations rather than other
+ * things. Thus, for instance, the string "< <" will never be treated
+ * as a left-shift operator.
+ * In "creator" we rule out "nonWildcardTypeArguments" on arrayCreation,
+ * which are illegal.
+ * Moved "nonWildcardTypeArguments into innerCreator.
+ * Removed 'super' superSuffix from explicitGenericInvocation, since that
+ * is only used in explicitConstructorInvocation at the beginning of a
+ * constructorBody. (This is part of the simplification of expressions
+ * mentioned earlier.)
+ * Simplified primary (got rid of those things that are only used in
+ * explicitConstructorInvocation).
+ * Lexer -- removed "Exponent?" from FloatingPointLiteral choice 4, since it
+ * led to an ambiguity.
+ *
+ * This grammar successfully parses every .java file in the JDK 1.5 source
+ * tree (excluding those whose file names include '-', which are not
+ * valid Java compilation units).
+ *
+ * Known remaining problems:
+ * "Letter" and "JavaIDDigit" are wrong. The actual specification of
+ * "Letter" should be "a character for which the method
+ * Character.isJavaIdentifierStart(int) returns true." A "Java
+ * letter-or-digit is a character for which the method
+ * Character.isJavaIdentifierPart(int) returns true."
+ */
\ No newline at end of file
diff --git a/Core/org.emftext.language.java/metamodel/java.cs b/Core/org.emftext.language.java/metamodel/java.cs
index 5f0ff9ad..73caabc0 100755
--- a/Core/org.emftext.language.java/metamodel/java.cs
+++ b/Core/org.emftext.language.java/metamodel/java.cs
@@ -1,670 +1,673 @@
-//*******************************************************************************
-// Copyright (c) 2006-2012
-// Software Technology Group, Dresden University of Technology
-//
-// All rights reserved. This program and the accompanying materials
-// are made available under the terms of the Eclipse Public License v1.0
-// which accompanies this distribution, and is available at
-// http://www.eclipse.org/legal/epl-v10.html
-//
-// Contributors:
-// Software Technology Group - TU Dresden, Germany
-// - initial API and implementation
-// ******************************************************************************/
-
-SYNTAXDEF java
-FOR
-START containers.CompilationUnit, containers.Package, containers.EmptyModel
-
-IMPORTS {
- annotations :
- arrays :
- classifiers :
- commons :
- containers :
- expressions :
- generics :
- imports :
- instantiations :
- literals :
- members :
- modifiers :
- operators :
- parameters :
- references :
- statements :
- types :
- variables :
-}
-
-OPTIONS {
- licenceHeader ="../../org.dropsbox/licence.txt";
- defaultTokenName = "IDENTIFIER";
- generateCodeFromGeneratorModel = "false";
- memoize = "true";
- usePredefinedTokens = "false";
- resolveProxyElementsAfterParsing = "false";
- disableLaunchSupport = "true";
- disableDebugSupport = "true";
- ignoreTypeRestrictionsForPrinting = "true";
- overrideResourcePostProcessor = "false";
-}
-
-TOKENS {
- DEFINE SL_COMMENT $'//'(~('\n'|'\r'|'\uffff'))* $;
- DEFINE ML_COMMENT $'/*'.*'*/'$;
-
- DEFINE BOOLEAN_LITERAL $'true'|'false'$;
-
- DEFINE CHARACTER_LITERAL $'\''('\\'('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')|('\\''u'('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F'))|('\\'('0'..'3')('0'..'7')('0'..'7')|'\\'('0'..'7')('0'..'7')|'\\'('0'..'7'))|~('\''|'\\'))'\''$;
- DEFINE STRING_LITERAL $'"'('\\'('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')|('\\''u'('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F'))|'\\'('0'..'7')|~('\\'|'"'))*'"'$;
-
- @SuppressWarnings(tokenOverlapping)
- DEFINE IDENTIFIER $('\u0024'|'\u0041'..'\u005a'|'\u005f'|'\u0061'..'\u007a'|'\u00a2'..'\u00a5'|'\u00aa'|'\u00b5'|'\u00ba'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00f6'|'\u00f8'..'\u0236'|'\u0250'..'\u02c1'|'\u02c6'..'\u02d1'|'\u02e0'..'\u02e4'|'\u02ee'|'\u037a'|'\u0386'|'\u0388'..'\u038a'|'\u038c'|'\u038e'..'\u03a1'|'\u03a3'..'\u03ce'|'\u03d0'..'\u03f5'|'\u03f7'..'\u03fb'|'\u0400'..'\u0481'|'\u048a'..'\u04ce'|'\u04d0'..'\u04f5'|'\u04f8'..'\u04f9'|'\u0500'..'\u050f'|'\u0531'..'\u0556'|'\u0559'|'\u0561'..'\u0587'|'\u05d0'..'\u05ea'|'\u05f0'..'\u05f2'|'\u0621'..'\u063a'|'\u0640'..'\u064a'|'\u066e'..'\u066f'|'\u0671'..'\u06d3'|'\u06d5'|'\u06e5'..'\u06e6'|'\u06ee'..'\u06ef'|'\u06fa'..'\u06fc'|'\u06ff'|'\u0710'|'\u0712'..'\u072f'|'\u074d'..'\u074f'|'\u0780'..'\u07a5'|'\u07b1'|'\u0904'..'\u0939'|'\u093d'|'\u0950'|'\u0958'..'\u0961'|'\u0985'..'\u098c'|'\u098f'..'\u0990'|'\u0993'..'\u09a8'|'\u09aa'..'\u09b0'|'\u09b2'|'\u09b6'..'\u09b9'|'\u09bd'|'\u09dc'..'\u09dd'|'\u09df'..'\u09e1'|'\u09f0'..'\u09f3'|'\u0a05'..'\u0a0a'|'\u0a0f'..'\u0a10'|'\u0a13'..'\u0a28'|'\u0a2a'..'\u0a30'|'\u0a32'..'\u0a33'|'\u0a35'..'\u0a36'|'\u0a38'..'\u0a39'|'\u0a59'..'\u0a5c'|'\u0a5e'|'\u0a72'..'\u0a74'|'\u0a85'..'\u0a8d'|'\u0a8f'..'\u0a91'|'\u0a93'..'\u0aa8'|'\u0aaa'..'\u0ab0'|'\u0ab2'..'\u0ab3'|'\u0ab5'..'\u0ab9'|'\u0abd'|'\u0ad0'|'\u0ae0'..'\u0ae1'|'\u0af1'|'\u0b05'..'\u0b0c'|'\u0b0f'..'\u0b10'|'\u0b13'..'\u0b28'|'\u0b2a'..'\u0b30'|'\u0b32'..'\u0b33'|'\u0b35'..'\u0b39'|'\u0b3d'|'\u0b5c'..'\u0b5d'|'\u0b5f'..'\u0b61'|'\u0b71'|'\u0b83'|'\u0b85'..'\u0b8a'|'\u0b8e'..'\u0b90'|'\u0b92'..'\u0b95'|'\u0b99'..'\u0b9a'|'\u0b9c'|'\u0b9e'..'\u0b9f'|'\u0ba3'..'\u0ba4'|'\u0ba8'..'\u0baa'|'\u0bae'..'\u0bb5'|'\u0bb7'..'\u0bb9'|'\u0bf9'|'\u0c05'..'\u0c0c'|'\u0c0e'..'\u0c10'|'\u0c12'..'\u0c28'|'\u0c2a'..'\u0c33'|'\u0c35'..'\u0c39'|'\u0c60'..'\u0c61'|'\u0c85'..'\u0c8c'|'\u0c8e'..'\u0c90'|'\u0c92'..'\u0ca8'|'\u0caa'..'\u0cb3'|'\u0cb5'..'\u0cb9'|'\u0cbd'|'\u0cde'|'\u0ce0'..'\u0ce1'|'\u0d05'..'\u0d0c'|'\u0d0e'..'\u0d10'|'\u0d12'..'\u0d28'|'\u0d2a'..'\u0d39'|'\u0d60'..'\u0d61'|'\u0d85'..'\u0d96'|'\u0d9a'..'\u0db1'|'\u0db3'..'\u0dbb'|'\u0dbd'|'\u0dc0'..'\u0dc6'|'\u0e01'..'\u0e30'|'\u0e32'..'\u0e33'|'\u0e3f'..'\u0e46'|'\u0e81'..'\u0e82'|'\u0e84'|'\u0e87'..'\u0e88'|'\u0e8a'|'\u0e8d'|'\u0e94'..'\u0e97'|'\u0e99'..'\u0e9f'|'\u0ea1'..'\u0ea3'|'\u0ea5'|'\u0ea7'|'\u0eaa'..'\u0eab'|'\u0ead'..'\u0eb0'|'\u0eb2'..'\u0eb3'|'\u0ebd'|'\u0ec0'..'\u0ec4'|'\u0ec6'|'\u0edc'..'\u0edd'|'\u0f00'|'\u0f40'..'\u0f47'|'\u0f49'..'\u0f6a'|'\u0f88'..'\u0f8b'|'\u1000'..'\u1021'|'\u1023'..'\u1027'|'\u1029'..'\u102a'|'\u1050'..'\u1055'|'\u10a0'..'\u10c5'|'\u10d0'..'\u10f8'|'\u1100'..'\u1159'|'\u115f'..'\u11a2'|'\u11a8'..'\u11f9'|'\u1200'..'\u1206'|'\u1208'..'\u1246'|'\u1248'|'\u124a'..'\u124d'|'\u1250'..'\u1256'|'\u1258'|'\u125a'..'\u125d'|'\u1260'..'\u1286'|'\u1288'|'\u128a'..'\u128d'|'\u1290'..'\u12ae'|'\u12b0'|'\u12b2'..'\u12b5'|'\u12b8'..'\u12be'|'\u12c0'|'\u12c2'..'\u12c5'|'\u12c8'..'\u12ce'|'\u12d0'..'\u12d6'|'\u12d8'..'\u12ee'|'\u12f0'..'\u130e'|'\u1310'|'\u1312'..'\u1315'|'\u1318'..'\u131e'|'\u1320'..'\u1346'|'\u1348'..'\u135a'|'\u13a0'..'\u13f4'|'\u1401'..'\u166c'|'\u166f'..'\u1676'|'\u1681'..'\u169a'|'\u16a0'..'\u16ea'|'\u16ee'..'\u16f0'|'\u1700'..'\u170c'|'\u170e'..'\u1711'|'\u1720'..'\u1731'|'\u1740'..'\u1751'|'\u1760'..'\u176c'|'\u176e'..'\u1770'|'\u1780'..'\u17b3'|'\u17d7'|'\u17db'..'\u17dc'|'\u1820'..'\u1877'|'\u1880'..'\u18a8'|'\u1900'..'\u191c'|'\u1950'..'\u196d'|'\u1970'..'\u1974'|'\u1d00'..'\u1d6b'|'\u1e00'..'\u1e9b'|'\u1ea0'..'\u1ef9'|'\u1f00'..'\u1f15'|'\u1f18'..'\u1f1d'|'\u1f20'..'\u1f45'|'\u1f48'..'\u1f4d'|'\u1f50'..'\u1f57'|'\u1f59'|'\u1f5b'|'\u1f5d'|'\u1f5f'..'\u1f7d'|'\u1f80'..'\u1fb4'|'\u1fb6'..'\u1fbc'|'\u1fbe'|'\u1fc2'..'\u1fc4'|'\u1fc6'..'\u1fcc'|'\u1fd0'..'\u1fd3'|'\u1fd6'..'\u1fdb'|'\u1fe0'..'\u1fec'|'\u1ff2'..'\u1ff4'|'\u1ff6'..'\u1ffc'|'\u203f'..'\u2040'|'\u2054'|'\u2071'|'\u207f'|'\u20a0'..'\u20b1'|'\u2102'|'\u2107'|'\u210a'..'\u2113'|'\u2115'|'\u2119'..'\u211d'|'\u2124'|'\u2126'|'\u2128'|'\u212a'..'\u212d'|'\u212f'..'\u2131'|'\u2133'..'\u2139'|'\u213d'..'\u213f'|'\u2145'..'\u2149'|'\u2160'..'\u2183'|'\u3005'..'\u3007'|'\u3021'..'\u3029'|'\u3031'..'\u3035'|'\u3038'..'\u303c'|'\u3041'..'\u3096'|'\u309d'..'\u309f'|'\u30a1'..'\u30ff'|'\u3105'..'\u312c'|'\u3131'..'\u318e'|'\u31a0'..'\u31b7'|'\u31f0'..'\u31ff'|'\u3400'..'\u4db5'|'\u4e00'..'\u9fa5'|'\ua000'..'\ua48c'|'\uac00'..'\ud7a3'|'\ud800'..'\udbff'|'\uf900'..'\ufa2d'|'\ufa30'..'\ufa6a'|'\ufb00'..'\ufb06'|'\ufb13'..'\ufb17'|'\ufb1d'|'\ufb1f'..'\ufb28'|'\ufb2a'..'\ufb36'|'\ufb38'..'\ufb3c'|'\ufb3e'|'\ufb40'..'\ufb41'|'\ufb43'..'\ufb44'|'\ufb46'..'\ufbb1'|'\ufbd3'..'\ufd3d'|'\ufd50'..'\ufd8f'|'\ufd92'..'\ufdc7'|'\ufdf0'..'\ufdfc'|'\ufe33'..'\ufe34'|'\ufe4d'..'\ufe4f'|'\ufe69'|'\ufe70'..'\ufe74'|'\ufe76'..'\ufefc'|'\uff04'|'\uff21'..'\uff3a'|'\uff3f'|'\uff41'..'\uff5a'|'\uff65'..'\uffbe'|'\uffc2'..'\uffc7'|'\uffca'..'\uffcf'|'\uffd2'..'\uffd7'|'\uffda'..'\uffdc'|'\uffe0'..'\uffe1'|'\uffe5'..'\uffe6')('\u0000'..'\u0008'|'\u000e'..'\u001b'|'\u0024'|'\u0030'..'\u0039'|'\u0041'..'\u005a'|'\u005f'|'\u0061'..'\u007a'|'\u007f'..'\u009f'|'\u00a2'..'\u00a5'|'\u00aa'|'\u00ad'|'\u00b5'|'\u00ba'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00f6'|'\u00f8'..'\u0236'|'\u0250'..'\u02c1'|'\u02c6'..'\u02d1'|'\u02e0'..'\u02e4'|'\u02ee'|'\u0300'..'\u0357'|'\u035d'..'\u036f'|'\u037a'|'\u0386'|'\u0388'..'\u038a'|'\u038c'|'\u038e'..'\u03a1'|'\u03a3'..'\u03ce'|'\u03d0'..'\u03f5'|'\u03f7'..'\u03fb'|'\u0400'..'\u0481'|'\u0483'..'\u0486'|'\u048a'..'\u04ce'|'\u04d0'..'\u04f5'|'\u04f8'..'\u04f9'|'\u0500'..'\u050f'|'\u0531'..'\u0556'|'\u0559'|'\u0561'..'\u0587'|'\u0591'..'\u05a1'|'\u05a3'..'\u05b9'|'\u05bb'..'\u05bd'|'\u05bf'|'\u05c1'..'\u05c2'|'\u05c4'|'\u05d0'..'\u05ea'|'\u05f0'..'\u05f2'|'\u0600'..'\u0603'|'\u0610'..'\u0615'|'\u0621'..'\u063a'|'\u0640'..'\u0658'|'\u0660'..'\u0669'|'\u066e'..'\u06d3'|'\u06d5'..'\u06dd'|'\u06df'..'\u06e8'|'\u06ea'..'\u06fc'|'\u06ff'|'\u070f'..'\u074a'|'\u074d'..'\u074f'|'\u0780'..'\u07b1'|'\u0901'..'\u0939'|'\u093c'..'\u094d'|'\u0950'..'\u0954'|'\u0958'..'\u0963'|'\u0966'..'\u096f'|'\u0981'..'\u0983'|'\u0985'..'\u098c'|'\u098f'..'\u0990'|'\u0993'..'\u09a8'|'\u09aa'..'\u09b0'|'\u09b2'|'\u09b6'..'\u09b9'|'\u09bc'..'\u09c4'|'\u09c7'..'\u09c8'|'\u09cb'..'\u09cd'|'\u09d7'|'\u09dc'..'\u09dd'|'\u09df'..'\u09e3'|'\u09e6'..'\u09f3'|'\u0a01'..'\u0a03'|'\u0a05'..'\u0a0a'|'\u0a0f'..'\u0a10'|'\u0a13'..'\u0a28'|'\u0a2a'..'\u0a30'|'\u0a32'..'\u0a33'|'\u0a35'..'\u0a36'|'\u0a38'..'\u0a39'|'\u0a3c'|'\u0a3e'..'\u0a42'|'\u0a47'..'\u0a48'|'\u0a4b'..'\u0a4d'|'\u0a59'..'\u0a5c'|'\u0a5e'|'\u0a66'..'\u0a74'|'\u0a81'..'\u0a83'|'\u0a85'..'\u0a8d'|'\u0a8f'..'\u0a91'|'\u0a93'..'\u0aa8'|'\u0aaa'..'\u0ab0'|'\u0ab2'..'\u0ab3'|'\u0ab5'..'\u0ab9'|'\u0abc'..'\u0ac5'|'\u0ac7'..'\u0ac9'|'\u0acb'..'\u0acd'|'\u0ad0'|'\u0ae0'..'\u0ae3'|'\u0ae6'..'\u0aef'|'\u0af1'|'\u0b01'..'\u0b03'|'\u0b05'..'\u0b0c'|'\u0b0f'..'\u0b10'|'\u0b13'..'\u0b28'|'\u0b2a'..'\u0b30'|'\u0b32'..'\u0b33'|'\u0b35'..'\u0b39'|'\u0b3c'..'\u0b43'|'\u0b47'..'\u0b48'|'\u0b4b'..'\u0b4d'|'\u0b56'..'\u0b57'|'\u0b5c'..'\u0b5d'|'\u0b5f'..'\u0b61'|'\u0b66'..'\u0b6f'|'\u0b71'|'\u0b82'..'\u0b83'|'\u0b85'..'\u0b8a'|'\u0b8e'..'\u0b90'|'\u0b92'..'\u0b95'|'\u0b99'..'\u0b9a'|'\u0b9c'|'\u0b9e'..'\u0b9f'|'\u0ba3'..'\u0ba4'|'\u0ba8'..'\u0baa'|'\u0bae'..'\u0bb5'|'\u0bb7'..'\u0bb9'|'\u0bbe'..'\u0bc2'|'\u0bc6'..'\u0bc8'|'\u0bca'..'\u0bcd'|'\u0bd7'|'\u0be7'..'\u0bef'|'\u0bf9'|'\u0c01'..'\u0c03'|'\u0c05'..'\u0c0c'|'\u0c0e'..'\u0c10'|'\u0c12'..'\u0c28'|'\u0c2a'..'\u0c33'|'\u0c35'..'\u0c39'|'\u0c3e'..'\u0c44'|'\u0c46'..'\u0c48'|'\u0c4a'..'\u0c4d'|'\u0c55'..'\u0c56'|'\u0c60'..'\u0c61'|'\u0c66'..'\u0c6f'|'\u0c82'..'\u0c83'|'\u0c85'..'\u0c8c'|'\u0c8e'..'\u0c90'|'\u0c92'..'\u0ca8'|'\u0caa'..'\u0cb3'|'\u0cb5'..'\u0cb9'|'\u0cbc'..'\u0cc4'|'\u0cc6'..'\u0cc8'|'\u0cca'..'\u0ccd'|'\u0cd5'..'\u0cd6'|'\u0cde'|'\u0ce0'..'\u0ce1'|'\u0ce6'..'\u0cef'|'\u0d02'..'\u0d03'|'\u0d05'..'\u0d0c'|'\u0d0e'..'\u0d10'|'\u0d12'..'\u0d28'|'\u0d2a'..'\u0d39'|'\u0d3e'..'\u0d43'|'\u0d46'..'\u0d48'|'\u0d4a'..'\u0d4d'|'\u0d57'|'\u0d60'..'\u0d61'|'\u0d66'..'\u0d6f'|'\u0d82'..'\u0d83'|'\u0d85'..'\u0d96'|'\u0d9a'..'\u0db1'|'\u0db3'..'\u0dbb'|'\u0dbd'|'\u0dc0'..'\u0dc6'|'\u0dca'|'\u0dcf'..'\u0dd4'|'\u0dd6'|'\u0dd8'..'\u0ddf'|'\u0df2'..'\u0df3'|'\u0e01'..'\u0e3a'|'\u0e3f'..'\u0e4e'|'\u0e50'..'\u0e59'|'\u0e81'..'\u0e82'|'\u0e84'|'\u0e87'..'\u0e88'|'\u0e8a'|'\u0e8d'|'\u0e94'..'\u0e97'|'\u0e99'..'\u0e9f'|'\u0ea1'..'\u0ea3'|'\u0ea5'|'\u0ea7'|'\u0eaa'..'\u0eab'|'\u0ead'..'\u0eb9'|'\u0ebb'..'\u0ebd'|'\u0ec0'..'\u0ec4'|'\u0ec6'|'\u0ec8'..'\u0ecd'|'\u0ed0'..'\u0ed9'|'\u0edc'..'\u0edd'|'\u0f00'|'\u0f18'..'\u0f19'|'\u0f20'..'\u0f29'|'\u0f35'|'\u0f37'|'\u0f39'|'\u0f3e'..'\u0f47'|'\u0f49'..'\u0f6a'|'\u0f71'..'\u0f84'|'\u0f86'..'\u0f8b'|'\u0f90'..'\u0f97'|'\u0f99'..'\u0fbc'|'\u0fc6'|'\u1000'..'\u1021'|'\u1023'..'\u1027'|'\u1029'..'\u102a'|'\u102c'..'\u1032'|'\u1036'..'\u1039'|'\u1040'..'\u1049'|'\u1050'..'\u1059'|'\u10a0'..'\u10c5'|'\u10d0'..'\u10f8'|'\u1100'..'\u1159'|'\u115f'..'\u11a2'|'\u11a8'..'\u11f9'|'\u1200'..'\u1206'|'\u1208'..'\u1246'|'\u1248'|'\u124a'..'\u124d'|'\u1250'..'\u1256'|'\u1258'|'\u125a'..'\u125d'|'\u1260'..'\u1286'|'\u1288'|'\u128a'..'\u128d'|'\u1290'..'\u12ae'|'\u12b0'|'\u12b2'..'\u12b5'|'\u12b8'..'\u12be'|'\u12c0'|'\u12c2'..'\u12c5'|'\u12c8'..'\u12ce'|'\u12d0'..'\u12d6'|'\u12d8'..'\u12ee'|'\u12f0'..'\u130e'|'\u1310'|'\u1312'..'\u1315'|'\u1318'..'\u131e'|'\u1320'..'\u1346'|'\u1348'..'\u135a'|'\u1369'..'\u1371'|'\u13a0'..'\u13f4'|'\u1401'..'\u166c'|'\u166f'..'\u1676'|'\u1681'..'\u169a'|'\u16a0'..'\u16ea'|'\u16ee'..'\u16f0'|'\u1700'..'\u170c'|'\u170e'..'\u1714'|'\u1720'..'\u1734'|'\u1740'..'\u1753'|'\u1760'..'\u176c'|'\u176e'..'\u1770'|'\u1772'..'\u1773'|'\u1780'..'\u17d3'|'\u17d7'|'\u17db'..'\u17dd'|'\u17e0'..'\u17e9'|'\u180b'..'\u180d'|'\u1810'..'\u1819'|'\u1820'..'\u1877'|'\u1880'..'\u18a9'|'\u1900'..'\u191c'|'\u1920'..'\u192b'|'\u1930'..'\u193b'|'\u1946'..'\u196d'|'\u1970'..'\u1974'|'\u1d00'..'\u1d6b'|'\u1e00'..'\u1e9b'|'\u1ea0'..'\u1ef9'|'\u1f00'..'\u1f15'|'\u1f18'..'\u1f1d'|'\u1f20'..'\u1f45'|'\u1f48'..'\u1f4d'|'\u1f50'..'\u1f57'|'\u1f59'|'\u1f5b'|'\u1f5d'|'\u1f5f'..'\u1f7d'|'\u1f80'..'\u1fb4'|'\u1fb6'..'\u1fbc'|'\u1fbe'|'\u1fc2'..'\u1fc4'|'\u1fc6'..'\u1fcc'|'\u1fd0'..'\u1fd3'|'\u1fd6'..'\u1fdb'|'\u1fe0'..'\u1fec'|'\u1ff2'..'\u1ff4'|'\u1ff6'..'\u1ffc'|'\u200c'..'\u200f'|'\u202a'..'\u202e'|'\u203f'..'\u2040'|'\u2054'|'\u2060'..'\u2063'|'\u206a'..'\u206f'|'\u2071'|'\u207f'|'\u20a0'..'\u20b1'|'\u20d0'..'\u20dc'|'\u20e1'|'\u20e5'..'\u20ea'|'\u2102'|'\u2107'|'\u210a'..'\u2113'|'\u2115'|'\u2119'..'\u211d'|'\u2124'|'\u2126'|'\u2128'|'\u212a'..'\u212d'|'\u212f'..'\u2131'|'\u2133'..'\u2139'|'\u213d'..'\u213f'|'\u2145'..'\u2149'|'\u2160'..'\u2183'|'\u3005'..'\u3007'|'\u3021'..'\u302f'|'\u3031'..'\u3035'|'\u3038'..'\u303c'|'\u3041'..'\u3096'|'\u3099'..'\u309a'|'\u309d'..'\u309f'|'\u30a1'..'\u30ff'|'\u3105'..'\u312c'|'\u3131'..'\u318e'|'\u31a0'..'\u31b7'|'\u31f0'..'\u31ff'|'\u3400'..'\u4db5'|'\u4e00'..'\u9fa5'|'\ua000'..'\ua48c'|'\uac00'..'\ud7a3'|'\ud800'..'\udfff'|'\uf900'..'\ufa2d'|'\ufa30'..'\ufa6a'|'\ufb00'..'\ufb06'|'\ufb13'..'\ufb17'|'\ufb1d'..'\ufb28'|'\ufb2a'..'\ufb36'|'\ufb38'..'\ufb3c'|'\ufb3e'|'\ufb40'..'\ufb41'|'\ufb43'..'\ufb44'|'\ufb46'..'\ufbb1'|'\ufbd3'..'\ufd3d'|'\ufd50'..'\ufd8f'|'\ufd92'..'\ufdc7'|'\ufdf0'..'\ufdfc'|'\ufe00'..'\ufe0f'|'\ufe20'..'\ufe23'|'\ufe33'..'\ufe34'|'\ufe4d'..'\ufe4f'|'\ufe69'|'\ufe70'..'\ufe74'|'\ufe76'..'\ufefc'|'\ufeff'|'\uff04'|'\uff10'..'\uff19'|'\uff21'..'\uff3a'|'\uff3f'|'\uff41'..'\uff5a'|'\uff65'..'\uffbe'|'\uffc2'..'\uffc7'|'\uffca'..'\uffcf'|'\uffd2'..'\uffd7'|'\uffda'..'\uffdc'|'\uffe0'..'\uffe1'|'\uffe5'..'\uffe6'|'\ufff9'..'\ufffb')*$;
-
- DEFINE HEX_FLOAT_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')* (('.' ('0'..'9'|'a'..'f'|'A'..'F')+ (('p'|'P') ('+'|'-')? ('0'..'9')+ ('f'|'F') )?) | ((('p'|'P') ('+'|'-')? ('0'..'9')+ ('f'|'F') )))$;
- @SuppressWarnings(tokenOverlapping)
- DEFINE HEX_DOUBLE_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')* (('.' ('0'..'9'|'a'..'f'|'A'..'F')+ (('p'|'P') ('+'|'-')? ('0'..'9')+ ('d'|'D')?)?) | ((('p'|'P') ('+'|'-')? ('0'..'9')+ ('d'|'D')?)))$;
- DEFINE HEX_LONG_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')+ ('l'|'L')$;
- DEFINE HEX_INTEGER_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')+$;
-
- DEFINE DECIMAL_FLOAT_LITERAL $('0'..'9')+ '.' ('0'..'9')* (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)? ('f'|'F') | ('.' ('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)?) ('f'|'F') | (('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+) ('f'|'F') | ('0'..'9')+ ('f'|'F'))$;
- DEFINE DECIMAL_DOUBLE_LITERAL $('0'..'9')+ '.' ('0'..'9')* (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)? ('d'|'D')? | ('.' ('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)?) ('d'|'D')? | (('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+) ('d'|'D')? | ('0'..'9')+ ('d'|'D'))$;
- DEFINE DECIMAL_LONG_LITERAL $('0'|'1'..'9''0'..'9'*)('l'|'L')$;
- DEFINE DECIMAL_INTEGER_LITERAL $('0'|'1'..'9''0'..'9'*)$;
-
- DEFINE OCTAL_LONG_LITERAL $'0'('0'..'7')+('l'|'L')$;
- DEFINE OCTAL_INTEGER_LITERAL $'0'('0'..'7')+$;
-
- @SuppressWarnings(unusedToken)
- DEFINE WHITESPACE $(' '|'\t'|'\f'|'\r'|'\n')+$;
-}
-
-TOKENSTYLES {
- "ML_COMMENT" COLOR #008000, ITALIC;
- "SL_COMMENT" COLOR #000080, ITALIC;
- "STRING_LITERAL" COLOR #2A00FF;
- "IDENTIFIER" COLOR #000000;
-
- "abstract", "assert",
- "boolean", "byte",
- "case", "catch", "class", "continue", "char",
- "default", "double", "do",
- "enum", "extends", "else",
- "for", "float", "final",
- "if", "import", "implements", "int", "interface", "instanceof",
- "package", "private", "protected", "public",
- "super", "switch", "strictfp", "static", "synchronized",
- "this", "try", "throws", "transient",
- "new", "null",
- "while",
- "void",
- "long",
- "return" COLOR #7F0055, BOLD;
-}
-
-RULES {
-
-@SuppressWarnings(optionalKeyword)
-@SuppressWarnings(featureWithoutSyntax) //name is set by JavaSourceOrClassFileResource.load()
-containers.EmptyModel
- ::= (imports ";" !0 )* (";")*
- ;
-
-@SuppressWarnings(optionalKeyword)
-@SuppressWarnings(featureWithoutSyntax) //subpackages is filled by JavaSourceOrClassFileResource.load()
-containers.Package
- ::= annotations* "package" (namespaces[] "." )* name[] ";"
- (";")? //TODO this is required to let T7312 of JacksTest pass... not sure if this is correct or if it should be * instead of ?
- !0 !0
- (imports !0 )* (";")*
- ;
-
-@SuppressWarnings(optionalKeyword)
-@SuppressWarnings(featureWithoutSyntax) //name is set by JavaSourceOrClassFileResource or ClassFileModelLoader
-containers.CompilationUnit
- ::= ("package" namespaces[] ( "." namespaces[])* ";" )?
- !0 !0
- (imports !0 )*
- (";" !0)*
- !0
- (classifiers (";")* !0 !0)+
- ("\u001a")?
- ;
-
-imports.ClassifierImport
- ::= "import" (namespaces[] "." )* classifier[] ";";
-
-@SuppressWarnings(minOccurenceMismatch) //the minimal occurence of namespaces[] is in other cases 0
-imports.PackageImport
- ::= "import" (namespaces[] "." )+ "*" ";";
-
-imports.StaticMemberImport
- ::= "import" static (namespaces[] "." )* staticMembers[] ";";
-
-@SuppressWarnings(minOccurenceMismatch) //the minimal occurence of namespaces[] is in other cases 0
-imports.StaticClassifierImport
- ::= "import" static (namespaces[] "." )+ "*" ";";
-
-@SuppressWarnings(featureWithoutSyntax) //defaultExtends is filled by post processor
-classifiers.Class
- ::= annotationsAndModifiers*
- "class" name[] ("<" typeParameters ("," typeParameters)* ">")?
- ("extends" extends)?
- ("implements" (implements ("," implements)*))?
- #1 "{"
- (!1 members)* !0
- "}"
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //defaultMembers is filled by post processor
-classifiers.AnonymousClass
- ::= #1 "{"
- (!1 members)* !0
- "}"
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //defaultMembers is set during reference resolving
-classifiers.Interface
- ::= annotationsAndModifiers*
- "interface" name[] ("<" typeParameters ( "," typeParameters)* ">")?
- ("extends" (extends ("," extends)*))?
- #1 "{"
- (!1 members)* !0
- "}"
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //defaultMembers is set during reference resolving
-@SuppressWarnings(optionalKeyword)
-classifiers.Enumeration
- ::= annotationsAndModifiers*
- "enum" name[]
- ("implements" (implements ("," implements)*))?
- #1 "{"
- (!1 constants ("," !1 constants)*)? (",")?
- (";" (!1 members)* !0)?
- "}"
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //defaultMembers is set during reference resolving
-classifiers.Annotation
- ::= annotationsAndModifiers*
- "@" "interface" name[]
- #1 "{"
- (!1 members)* !0
- "}"
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //typeArguments
-annotations.AnnotationInstance
- ::= "@" (namespaces[] "." )* annotation[]
- (parameter)?
- ;
-
-annotations.SingleAnnotationParameter
- ::= "(" value:arrays.ArrayInitializer,expressions.ConditionalExpression ")"
- ;
-
-annotations.AnnotationParameterList
- ::= "(" (settings ("," settings)*)? ")"
- ;
-
-annotations.AnnotationAttributeSetting
- ::= attribute[] #1 "=" #1
- value:arrays.ArrayInitializer,expressions.ConditionalExpression
- ;
-
-generics.TypeParameter
- ::= name[] ("extends" extendTypes ("&" extendTypes)*)?
- ;
-
-@SuppressWarnings(optionalKeyword)
-members.EnumConstant
- ::= annotations* name[] (#1 "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)*)? ")" )?
- (anonymousClass)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //name is set by JavaModelCompletion.setBlockName()
-statements.Block
- ::= modifiers* #1 "{" (!1 statements)* !0 "}"
- ;
-
-members.Constructor
- ::= annotationsAndModifiers* ("<" typeParameters ("," typeParameters)* ">")? name[]
- "(" (parameters ("," parameters)* )? ")"
- ("throws" exceptions ("," exceptions)*)? #1 "{" (!2 statements)* !1 "}"
- ;
-
-members.InterfaceMethod
- ::= annotationsAndModifiers* ("<" typeParameters ( "," typeParameters)* ">")? (typeReference arrayDimensionsBefore*) name[]
- "(" (parameters ("," parameters)* )? ")" arrayDimensionsAfter*
- ("throws" exceptions ("," exceptions)*)? ";"
- ;
-
-members.ClassMethod
- ::= annotationsAndModifiers* ("<" typeParameters ("," typeParameters)* ">")? (typeReference arrayDimensionsBefore*) name[]
- "(" (parameters ("," parameters)* )? ")" arrayDimensionsAfter*
- ("throws" exceptions ("," exceptions)*)? #1 "{" (!2 statements)* !1 "}"
- ;
-
-annotations.AnnotationAttribute
- ::= annotationsAndModifiers* ("<" typeParameters ("," typeParameters)* ">")? (typeReference arrayDimensionsBefore*) name[]
- "(" (parameters ("," parameters)* )? ")" arrayDimensionsAfter*
- ("throws" exceptions ("," exceptions)*)? "default" defaultValue:expressions.AssignmentExpression ";"
- ;
-
-parameters.OrdinaryParameter
- ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? name[] arrayDimensionsAfter*
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-parameters.VariableLengthParameter
- ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? "..." name[]
- ;
-
-variables.LocalVariable
- ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)? ("," additionalLocalVariables)*
- ;
-
-statements.LocalVariableStatement
- ::= variable ";" ;
-
-@SuppressWarnings(featureWithoutSyntax)
-variables.AdditionalLocalVariable
- ::= name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)?
- ;
-
-members.Field
- ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)? ("," additionalFields)* ";"
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-members.AdditionalField
- ::= name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //name is set by JavaModelCompletion.setEmptyMemberName()
-members.EmptyMember
- ::= ";"
- ;
-
-// INSTANTIATIONS
-@SuppressWarnings(featureWithoutSyntax) //arraySelectors
-instantiations.NewConstructorCall
- ::= "new"
- // these are the arguments for the constructor type parameters
- ("<" typeArguments ("," typeArguments)* ">")?
- typeReference
- // these are the arguments for the class type parameters
- ("<" callTypeArguments ("," callTypeArguments)* ">")?
- "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)* )? ")"
- anonymousClass?
- ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //arraySelectors
-instantiations.ExplicitConstructorCall
- ::= ("<" typeArguments ("," typeArguments)* ">")?
- callTarget "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)* )? ")"
- ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //arrayDimensionsAfter
-@SuppressWarnings(minOccurenceMismatch) //arrayDimensionsBefore required here
-arrays.ArrayInstantiationByValuesTyped
- ::= "new" typeReference arrayDimensionsBefore+ arrayInitializer
- arraySelectors* ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //typeArguments not applicable
-arrays.ArrayInstantiationByValuesUntyped
- ::= arrayInitializer
- arraySelectors* ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-arrays.ArrayInstantiationBySize
- ::= "new" typeReference
- ("[" sizes:expressions.AssignmentExpression "]")+
- arrayDimensionsBefore*
- ("." next)?
- ;
-
-@SuppressWarnings(optionalKeyword)
-arrays.ArrayInitializer
- ::= #1 "{" (initialValues:expressions.AssignmentExpression,arrays.ArrayInitializer
- ("," initialValues:expressions.AssignmentExpression,arrays.ArrayInitializer )*)? (",")? "}"
- ;
-
-arrays.ArraySelector
- ::= "[" position:expressions.AssignmentExpression? "]"
- ;
-
-types.NamespaceClassifierReference
- ::= (namespaces[] ".")* (classifierReferences ".")* classifierReferences
- ;
-
-types.ClassifierReference
- ::= target[]
- ("<" typeArguments ("," typeArguments)* ">")?
- ;
-
-
-references.MethodCall
- ::= ("<" callTypeArguments ("," callTypeArguments)* ">")?
- target[]
- ("<" typeArguments ("," typeArguments)* ">")?
- "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)* )? ")"
- arraySelectors* ("." next)?
- ;
-
-references.IdentifierReference
- ::= target[]
- ("<" typeArguments ("," typeArguments)* ">")?
- arraySelectors* ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //typeArguments
-references.ReflectiveClassReference ::= "class"
- ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //typeArguments
-references.SelfReference ::= self
- ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //typeArguments
-references.PrimitiveTypeReference ::= primitiveType
- arraySelectors* ("." next)?
- ;
-
-literals.This ::= "this";
-literals.Super ::= "super";
-
-@SuppressWarnings(featureWithoutSyntax) //typeArguments
-references.StringReference
- ::= value[STRING_LITERAL]
- ("." next)?
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-generics.QualifiedTypeArgument
- ::= typeReference arrayDimensionsBefore*
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-generics.UnknownTypeArgument
- ::= "?"
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-generics.ExtendsTypeArgument
- ::= "?" "extends" extendTypes ("&" extendTypes)* arrayDimensionsBefore*
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-generics.SuperTypeArgument
- ::= "?" "super" superType arrayDimensionsBefore*
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //condition can be empty in other cases
-statements.Assert
- ::= "assert" condition:expressions.AssignmentExpression (":" errorMessage:expressions.AssignmentExpression)? ";" ;
-
-@SuppressWarnings(minOccurenceMismatch) //condition can be empty in other cases
-statements.Condition
- ::= "if" #1 "(" condition:expressions.AssignmentExpression ")" statement ("else" elseStatement)? ;
-
-statements.ForLoop
- ::= "for" #1 "(" init? ";" condition:expressions.AssignmentExpression? ";" (updates:expressions.AssignmentExpression ("," updates:expressions.AssignmentExpression)* )? ")" statement;
-
-statements.ForEachLoop
- ::= "for" #1 "(" next ":" collection:expressions.AssignmentExpression ")" statement;
-
-statements.WhileLoop
- ::= "while" #1 "(" condition:expressions.AssignmentExpression ")" statement;
-
-statements.DoWhileLoop
- ::= "do" statement "while" #1 "(" condition:expressions.AssignmentExpression ")" ";" ;
-
-statements.EmptyStatement
- ::= ";" ;
-
-statements.SynchronizedBlock
- ::= "synchronized" #1 "(" lockProvider:expressions.AssignmentExpression ")" #1 "{" (!1 statements)* !0 "}" ;
-
-statements.TryBlock
- ::= "try" #1 "{" (!1 statements)* !0 "}"
- catcheBlocks*
- ("finally" finallyBlock)?;
-
-statements.CatchBlock
- ::= "catch" #1 "(" parameter ")" #1 "{" (!1 statements)* !0 "}"
- ;
-
-statements.Switch
- ::= "switch" #1 "(" variable:expressions.AssignmentExpression ")" #1 "{" (cases*) "}";
-
-@SuppressWarnings(minOccurenceMismatch) //condition can be empty in other cases
-statements.NormalSwitchCase
- ::= "case" condition:expressions.AssignmentExpression ":" (!1 statements)* !0 ;
-
-statements.DefaultSwitchCase
- ::= "default" ":" (!1 statements)* !0 ;
-
-statements.Return
- ::= "return" returnValue:expressions.AssignmentExpression? ";" ;
-
-statements.Throw
- ::= "throw" throwable:expressions.AssignmentExpression ";" ;
-
-statements.Break
- ::= "break" (target[])? ";" ;
-
-statements.Continue
- ::= "continue" (target[])? ";" ;
-
-statements.JumpLabel
- ::= name[] ":" statement ;
-
-statements.ExpressionStatement
- ::= expression:expressions.AssignmentExpression ";"
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.ExpressionList
- ::= expressions:expressions.AssignmentExpression ("," expressions:expressions.AssignmentExpression)*
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.AssignmentExpression
- ::= child:expressions.ConditionalExpression (#1 assignmentOperator #1 value:expressions.AssignmentExpression)?
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.ConditionalExpression
- ::= child:expressions.ConditionalOrExpression ("?" expressionIf:expressions.AssignmentExpression ":" expressionElse:expressions.ConditionalExpression)?
- ;
-
-expressions.ConditionalOrExpression
- ::= children:expressions.ConditionalAndExpression ( "||" children:expressions.ConditionalAndExpression )*
- ;
-
-expressions.ConditionalAndExpression
- ::= children:expressions.InclusiveOrExpression ( "&&" children:expressions.InclusiveOrExpression )*
- ;
-
-expressions.InclusiveOrExpression
- ::= children:expressions.ExclusiveOrExpression ( "|" children:expressions.ExclusiveOrExpression )*
- ;
-
-expressions.ExclusiveOrExpression
- ::= children:expressions.AndExpression ( "^" children:expressions.AndExpression )*
- ;
-
-expressions.AndExpression
- ::= children:expressions.EqualityExpression ( "&" children:expressions.EqualityExpression )*
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.EqualityExpression
- ::= children:expressions.InstanceOfExpression ( #1 equalityOperators #1 children:expressions.InstanceOfExpression )*
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.InstanceOfExpression
- ::= child:expressions.RelationExpression ("instanceof" typeReference arrayDimensionsBefore*)?
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.RelationExpression
- ::= children:expressions.ShiftExpression ( #1 relationOperators #1 children:expressions.ShiftExpression)*
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.ShiftExpression
- ::= children:expressions.AdditiveExpression ( #1 shiftOperators #1 children:expressions.AdditiveExpression)*
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.AdditiveExpression
- ::= children:expressions.MultiplicativeExpression ( #1 additiveOperators #1 children:expressions.MultiplicativeExpression )*
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.MultiplicativeExpression
- ::= children:expressions.UnaryExpression ( #1 multiplicativeOperators #1 children:expressions.UnaryExpression )*
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.UnaryExpression
- ::= operators* child:expressions.UnaryModificationExpression
- // TODO why does UnaryExpression have multiple operators?
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.SuffixUnaryModificationExpression
- ::= child (operator)?
- ;
-
-@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
-expressions.PrefixUnaryModificationExpression
- ::= (operator)? child
- ;
-
-@SuppressWarnings(featureWithoutSyntax)
-expressions.CastExpression
- ::= "(" typeReference arrayDimensionsBefore* ")" #1 child:expressions.UnaryExpression
- ;
-
-@SuppressWarnings(featureWithoutSyntax) //typeArguments
-expressions.NestedExpression ::= "(" expression:expressions.AssignmentExpression ")" arraySelectors* ("." next)?
- ;
-
-
-
-
-
-operators.Assignment ::= "=";
-operators.AssignmentPlus ::= "+=";
-operators.AssignmentMinus ::= "-=";
-operators.AssignmentMultiplication ::= "*=";
-operators.AssignmentDivision ::= "/=";
-operators.AssignmentAnd ::= "&=";
-operators.AssignmentOr ::= "|=";
-operators.AssignmentExclusiveOr ::= "^=";
-operators.AssignmentModulo ::= "%=";
-operators.AssignmentLeftShift ::= "<" "<" "=";
-operators.AssignmentRightShift ::= ">" ">" "=";
-operators.AssignmentUnsignedRightShift ::= ">" ">" ">" "=";
-
-operators.Addition ::= "+";
-operators.Subtraction ::= "-";
-
-operators.Multiplication ::= "*" ;
-operators.Division ::= "/" ;
-operators.Remainder ::= "%" ;
-
-operators.LessThan ::= "<";
-operators.LessThanOrEqual ::= "<" "=";
-operators.GreaterThan ::= ">";
-operators.GreaterThanOrEqual ::= ">" "=";
-
-operators.LeftShift ::= "<" "<" ;
-operators.RightShift ::= ">" ">" ;
-operators.UnsignedRightShift ::= ">" ">" ">" ;
-
-operators.Equal ::= "==";
-operators.NotEqual ::= "!=";
-operators.PlusPlus ::= "++" ;
-operators.MinusMinus ::= "--" ;
-operators.Complement ::= "~" ;
-operators.Negate ::= "!" ;
-
-arrays.ArrayDimension ::= ("[" "]");
-
-literals.NullLiteral ::= "null";
-
-modifiers.Public ::= "public";
-modifiers.Abstract ::= "abstract";
-modifiers.Protected ::= "protected";
-modifiers.Private ::= "private";
-modifiers.Final ::= "final";
-modifiers.Static ::= "static";
-
-modifiers.Native ::= "native";
-modifiers.Synchronized ::= "synchronized";
-modifiers.Transient ::= "transient";
-modifiers.Volatile ::= "volatile";
-modifiers.Strictfp ::= "strictfp";
-
-types.Void ::= "void";
-types.Boolean ::= "boolean";
-types.Char ::= "char";
-types.Byte ::= "byte";
-types.Short ::= "short";
-types.Int ::= "int";
-types.Long ::= "long";
-types.Float ::= "float";
-types.Double ::= "double";
-
-// do not change the order of the literals!
-literals.DecimalLongLiteral
- ::= decimalValue[DECIMAL_LONG_LITERAL];
-
-literals.DecimalFloatLiteral
- ::= decimalValue[DECIMAL_FLOAT_LITERAL];
-
-literals.DecimalIntegerLiteral
- ::= decimalValue[DECIMAL_INTEGER_LITERAL];
-
-literals.DecimalDoubleLiteral
- ::= decimalValue[DECIMAL_DOUBLE_LITERAL];
-
-literals.HexLongLiteral
- ::= hexValue[HEX_LONG_LITERAL];
-
-literals.HexFloatLiteral
- ::= hexValue[HEX_FLOAT_LITERAL];
-
-literals.HexDoubleLiteral
- ::= hexValue[HEX_DOUBLE_LITERAL];
-
-literals.HexIntegerLiteral
- ::= hexValue[HEX_INTEGER_LITERAL];
-
-literals.OctalLongLiteral
- ::= octalValue[OCTAL_LONG_LITERAL];
-
-literals.OctalIntegerLiteral
- ::= octalValue[OCTAL_INTEGER_LITERAL];
-
-literals.CharacterLiteral
- ::= value[CHARACTER_LITERAL];
-
-literals.BooleanLiteral
- ::= value[BOOLEAN_LITERAL];
-
-}
+//*******************************************************************************
+// Copyright (c) 2006-2012
+// Software Technology Group, Dresden University of Technology
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// Contributors:
+// Software Technology Group - TU Dresden, Germany
+// - initial API and implementation
+// ******************************************************************************/
+
+SYNTAXDEF java
+FOR
+START containers.CompilationUnit, containers.Package, containers.EmptyModel
+
+IMPORTS {
+ annotations :
+ arrays :
+ classifiers :
+ commons :
+ containers :
+ expressions :
+ generics :
+ imports :
+ instantiations :
+ literals :
+ members :
+ modifiers :
+ operators :
+ parameters :
+ references :
+ statements :
+ types :
+ variables :
+}
+
+OPTIONS {
+ licenceHeader ="../../org.dropsbox/licence.txt";
+ defaultTokenName = "IDENTIFIER";
+ generateCodeFromGeneratorModel = "false";
+ memoize = "true";
+ usePredefinedTokens = "false";
+ resolveProxyElementsAfterParsing = "false";
+ disableLaunchSupport = "true";
+ disableDebugSupport = "true";
+ ignoreTypeRestrictionsForPrinting = "true";
+ overrideResourcePostProcessor = "false";
+ overrideGrammarInformationProvider = "false";
+ overrideMetaInformation = "false";
+ overrideParser = "false";
+}
+
+TOKENS {
+ DEFINE SL_COMMENT $'//'(~('\n'|'\r'|'\uffff'))* $;
+ DEFINE ML_COMMENT $'/*'.*'*/'$;
+
+ DEFINE BOOLEAN_LITERAL $'true'|'false'$;
+
+ DEFINE CHARACTER_LITERAL $'\''('\\'('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')|('\\''u'('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F'))|('\\'('0'..'3')('0'..'7')('0'..'7')|'\\'('0'..'7')('0'..'7')|'\\'('0'..'7'))|~('\''|'\\'))'\''$;
+ DEFINE STRING_LITERAL $'"'('\\'('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')|('\\''u'('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F')('0'..'9'|'a'..'f'|'A'..'F'))|'\\'('0'..'7')|~('\\'|'"'))*'"'$;
+
+ @SuppressWarnings(tokenOverlapping)
+ DEFINE IDENTIFIER $('\u0024'|'\u0041'..'\u005a'|'\u005f'|'\u0061'..'\u007a'|'\u00a2'..'\u00a5'|'\u00aa'|'\u00b5'|'\u00ba'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00f6'|'\u00f8'..'\u0236'|'\u0250'..'\u02c1'|'\u02c6'..'\u02d1'|'\u02e0'..'\u02e4'|'\u02ee'|'\u037a'|'\u0386'|'\u0388'..'\u038a'|'\u038c'|'\u038e'..'\u03a1'|'\u03a3'..'\u03ce'|'\u03d0'..'\u03f5'|'\u03f7'..'\u03fb'|'\u0400'..'\u0481'|'\u048a'..'\u04ce'|'\u04d0'..'\u04f5'|'\u04f8'..'\u04f9'|'\u0500'..'\u050f'|'\u0531'..'\u0556'|'\u0559'|'\u0561'..'\u0587'|'\u05d0'..'\u05ea'|'\u05f0'..'\u05f2'|'\u0621'..'\u063a'|'\u0640'..'\u064a'|'\u066e'..'\u066f'|'\u0671'..'\u06d3'|'\u06d5'|'\u06e5'..'\u06e6'|'\u06ee'..'\u06ef'|'\u06fa'..'\u06fc'|'\u06ff'|'\u0710'|'\u0712'..'\u072f'|'\u074d'..'\u074f'|'\u0780'..'\u07a5'|'\u07b1'|'\u0904'..'\u0939'|'\u093d'|'\u0950'|'\u0958'..'\u0961'|'\u0985'..'\u098c'|'\u098f'..'\u0990'|'\u0993'..'\u09a8'|'\u09aa'..'\u09b0'|'\u09b2'|'\u09b6'..'\u09b9'|'\u09bd'|'\u09dc'..'\u09dd'|'\u09df'..'\u09e1'|'\u09f0'..'\u09f3'|'\u0a05'..'\u0a0a'|'\u0a0f'..'\u0a10'|'\u0a13'..'\u0a28'|'\u0a2a'..'\u0a30'|'\u0a32'..'\u0a33'|'\u0a35'..'\u0a36'|'\u0a38'..'\u0a39'|'\u0a59'..'\u0a5c'|'\u0a5e'|'\u0a72'..'\u0a74'|'\u0a85'..'\u0a8d'|'\u0a8f'..'\u0a91'|'\u0a93'..'\u0aa8'|'\u0aaa'..'\u0ab0'|'\u0ab2'..'\u0ab3'|'\u0ab5'..'\u0ab9'|'\u0abd'|'\u0ad0'|'\u0ae0'..'\u0ae1'|'\u0af1'|'\u0b05'..'\u0b0c'|'\u0b0f'..'\u0b10'|'\u0b13'..'\u0b28'|'\u0b2a'..'\u0b30'|'\u0b32'..'\u0b33'|'\u0b35'..'\u0b39'|'\u0b3d'|'\u0b5c'..'\u0b5d'|'\u0b5f'..'\u0b61'|'\u0b71'|'\u0b83'|'\u0b85'..'\u0b8a'|'\u0b8e'..'\u0b90'|'\u0b92'..'\u0b95'|'\u0b99'..'\u0b9a'|'\u0b9c'|'\u0b9e'..'\u0b9f'|'\u0ba3'..'\u0ba4'|'\u0ba8'..'\u0baa'|'\u0bae'..'\u0bb5'|'\u0bb7'..'\u0bb9'|'\u0bf9'|'\u0c05'..'\u0c0c'|'\u0c0e'..'\u0c10'|'\u0c12'..'\u0c28'|'\u0c2a'..'\u0c33'|'\u0c35'..'\u0c39'|'\u0c60'..'\u0c61'|'\u0c85'..'\u0c8c'|'\u0c8e'..'\u0c90'|'\u0c92'..'\u0ca8'|'\u0caa'..'\u0cb3'|'\u0cb5'..'\u0cb9'|'\u0cbd'|'\u0cde'|'\u0ce0'..'\u0ce1'|'\u0d05'..'\u0d0c'|'\u0d0e'..'\u0d10'|'\u0d12'..'\u0d28'|'\u0d2a'..'\u0d39'|'\u0d60'..'\u0d61'|'\u0d85'..'\u0d96'|'\u0d9a'..'\u0db1'|'\u0db3'..'\u0dbb'|'\u0dbd'|'\u0dc0'..'\u0dc6'|'\u0e01'..'\u0e30'|'\u0e32'..'\u0e33'|'\u0e3f'..'\u0e46'|'\u0e81'..'\u0e82'|'\u0e84'|'\u0e87'..'\u0e88'|'\u0e8a'|'\u0e8d'|'\u0e94'..'\u0e97'|'\u0e99'..'\u0e9f'|'\u0ea1'..'\u0ea3'|'\u0ea5'|'\u0ea7'|'\u0eaa'..'\u0eab'|'\u0ead'..'\u0eb0'|'\u0eb2'..'\u0eb3'|'\u0ebd'|'\u0ec0'..'\u0ec4'|'\u0ec6'|'\u0edc'..'\u0edd'|'\u0f00'|'\u0f40'..'\u0f47'|'\u0f49'..'\u0f6a'|'\u0f88'..'\u0f8b'|'\u1000'..'\u1021'|'\u1023'..'\u1027'|'\u1029'..'\u102a'|'\u1050'..'\u1055'|'\u10a0'..'\u10c5'|'\u10d0'..'\u10f8'|'\u1100'..'\u1159'|'\u115f'..'\u11a2'|'\u11a8'..'\u11f9'|'\u1200'..'\u1206'|'\u1208'..'\u1246'|'\u1248'|'\u124a'..'\u124d'|'\u1250'..'\u1256'|'\u1258'|'\u125a'..'\u125d'|'\u1260'..'\u1286'|'\u1288'|'\u128a'..'\u128d'|'\u1290'..'\u12ae'|'\u12b0'|'\u12b2'..'\u12b5'|'\u12b8'..'\u12be'|'\u12c0'|'\u12c2'..'\u12c5'|'\u12c8'..'\u12ce'|'\u12d0'..'\u12d6'|'\u12d8'..'\u12ee'|'\u12f0'..'\u130e'|'\u1310'|'\u1312'..'\u1315'|'\u1318'..'\u131e'|'\u1320'..'\u1346'|'\u1348'..'\u135a'|'\u13a0'..'\u13f4'|'\u1401'..'\u166c'|'\u166f'..'\u1676'|'\u1681'..'\u169a'|'\u16a0'..'\u16ea'|'\u16ee'..'\u16f0'|'\u1700'..'\u170c'|'\u170e'..'\u1711'|'\u1720'..'\u1731'|'\u1740'..'\u1751'|'\u1760'..'\u176c'|'\u176e'..'\u1770'|'\u1780'..'\u17b3'|'\u17d7'|'\u17db'..'\u17dc'|'\u1820'..'\u1877'|'\u1880'..'\u18a8'|'\u1900'..'\u191c'|'\u1950'..'\u196d'|'\u1970'..'\u1974'|'\u1d00'..'\u1d6b'|'\u1e00'..'\u1e9b'|'\u1ea0'..'\u1ef9'|'\u1f00'..'\u1f15'|'\u1f18'..'\u1f1d'|'\u1f20'..'\u1f45'|'\u1f48'..'\u1f4d'|'\u1f50'..'\u1f57'|'\u1f59'|'\u1f5b'|'\u1f5d'|'\u1f5f'..'\u1f7d'|'\u1f80'..'\u1fb4'|'\u1fb6'..'\u1fbc'|'\u1fbe'|'\u1fc2'..'\u1fc4'|'\u1fc6'..'\u1fcc'|'\u1fd0'..'\u1fd3'|'\u1fd6'..'\u1fdb'|'\u1fe0'..'\u1fec'|'\u1ff2'..'\u1ff4'|'\u1ff6'..'\u1ffc'|'\u203f'..'\u2040'|'\u2054'|'\u2071'|'\u207f'|'\u20a0'..'\u20b1'|'\u2102'|'\u2107'|'\u210a'..'\u2113'|'\u2115'|'\u2119'..'\u211d'|'\u2124'|'\u2126'|'\u2128'|'\u212a'..'\u212d'|'\u212f'..'\u2131'|'\u2133'..'\u2139'|'\u213d'..'\u213f'|'\u2145'..'\u2149'|'\u2160'..'\u2183'|'\u3005'..'\u3007'|'\u3021'..'\u3029'|'\u3031'..'\u3035'|'\u3038'..'\u303c'|'\u3041'..'\u3096'|'\u309d'..'\u309f'|'\u30a1'..'\u30ff'|'\u3105'..'\u312c'|'\u3131'..'\u318e'|'\u31a0'..'\u31b7'|'\u31f0'..'\u31ff'|'\u3400'..'\u4db5'|'\u4e00'..'\u9fa5'|'\ua000'..'\ua48c'|'\uac00'..'\ud7a3'|'\ud800'..'\udbff'|'\uf900'..'\ufa2d'|'\ufa30'..'\ufa6a'|'\ufb00'..'\ufb06'|'\ufb13'..'\ufb17'|'\ufb1d'|'\ufb1f'..'\ufb28'|'\ufb2a'..'\ufb36'|'\ufb38'..'\ufb3c'|'\ufb3e'|'\ufb40'..'\ufb41'|'\ufb43'..'\ufb44'|'\ufb46'..'\ufbb1'|'\ufbd3'..'\ufd3d'|'\ufd50'..'\ufd8f'|'\ufd92'..'\ufdc7'|'\ufdf0'..'\ufdfc'|'\ufe33'..'\ufe34'|'\ufe4d'..'\ufe4f'|'\ufe69'|'\ufe70'..'\ufe74'|'\ufe76'..'\ufefc'|'\uff04'|'\uff21'..'\uff3a'|'\uff3f'|'\uff41'..'\uff5a'|'\uff65'..'\uffbe'|'\uffc2'..'\uffc7'|'\uffca'..'\uffcf'|'\uffd2'..'\uffd7'|'\uffda'..'\uffdc'|'\uffe0'..'\uffe1'|'\uffe5'..'\uffe6')('\u0000'..'\u0008'|'\u000e'..'\u001b'|'\u0024'|'\u0030'..'\u0039'|'\u0041'..'\u005a'|'\u005f'|'\u0061'..'\u007a'|'\u007f'..'\u009f'|'\u00a2'..'\u00a5'|'\u00aa'|'\u00ad'|'\u00b5'|'\u00ba'|'\u00c0'..'\u00d6'|'\u00d8'..'\u00f6'|'\u00f8'..'\u0236'|'\u0250'..'\u02c1'|'\u02c6'..'\u02d1'|'\u02e0'..'\u02e4'|'\u02ee'|'\u0300'..'\u0357'|'\u035d'..'\u036f'|'\u037a'|'\u0386'|'\u0388'..'\u038a'|'\u038c'|'\u038e'..'\u03a1'|'\u03a3'..'\u03ce'|'\u03d0'..'\u03f5'|'\u03f7'..'\u03fb'|'\u0400'..'\u0481'|'\u0483'..'\u0486'|'\u048a'..'\u04ce'|'\u04d0'..'\u04f5'|'\u04f8'..'\u04f9'|'\u0500'..'\u050f'|'\u0531'..'\u0556'|'\u0559'|'\u0561'..'\u0587'|'\u0591'..'\u05a1'|'\u05a3'..'\u05b9'|'\u05bb'..'\u05bd'|'\u05bf'|'\u05c1'..'\u05c2'|'\u05c4'|'\u05d0'..'\u05ea'|'\u05f0'..'\u05f2'|'\u0600'..'\u0603'|'\u0610'..'\u0615'|'\u0621'..'\u063a'|'\u0640'..'\u0658'|'\u0660'..'\u0669'|'\u066e'..'\u06d3'|'\u06d5'..'\u06dd'|'\u06df'..'\u06e8'|'\u06ea'..'\u06fc'|'\u06ff'|'\u070f'..'\u074a'|'\u074d'..'\u074f'|'\u0780'..'\u07b1'|'\u0901'..'\u0939'|'\u093c'..'\u094d'|'\u0950'..'\u0954'|'\u0958'..'\u0963'|'\u0966'..'\u096f'|'\u0981'..'\u0983'|'\u0985'..'\u098c'|'\u098f'..'\u0990'|'\u0993'..'\u09a8'|'\u09aa'..'\u09b0'|'\u09b2'|'\u09b6'..'\u09b9'|'\u09bc'..'\u09c4'|'\u09c7'..'\u09c8'|'\u09cb'..'\u09cd'|'\u09d7'|'\u09dc'..'\u09dd'|'\u09df'..'\u09e3'|'\u09e6'..'\u09f3'|'\u0a01'..'\u0a03'|'\u0a05'..'\u0a0a'|'\u0a0f'..'\u0a10'|'\u0a13'..'\u0a28'|'\u0a2a'..'\u0a30'|'\u0a32'..'\u0a33'|'\u0a35'..'\u0a36'|'\u0a38'..'\u0a39'|'\u0a3c'|'\u0a3e'..'\u0a42'|'\u0a47'..'\u0a48'|'\u0a4b'..'\u0a4d'|'\u0a59'..'\u0a5c'|'\u0a5e'|'\u0a66'..'\u0a74'|'\u0a81'..'\u0a83'|'\u0a85'..'\u0a8d'|'\u0a8f'..'\u0a91'|'\u0a93'..'\u0aa8'|'\u0aaa'..'\u0ab0'|'\u0ab2'..'\u0ab3'|'\u0ab5'..'\u0ab9'|'\u0abc'..'\u0ac5'|'\u0ac7'..'\u0ac9'|'\u0acb'..'\u0acd'|'\u0ad0'|'\u0ae0'..'\u0ae3'|'\u0ae6'..'\u0aef'|'\u0af1'|'\u0b01'..'\u0b03'|'\u0b05'..'\u0b0c'|'\u0b0f'..'\u0b10'|'\u0b13'..'\u0b28'|'\u0b2a'..'\u0b30'|'\u0b32'..'\u0b33'|'\u0b35'..'\u0b39'|'\u0b3c'..'\u0b43'|'\u0b47'..'\u0b48'|'\u0b4b'..'\u0b4d'|'\u0b56'..'\u0b57'|'\u0b5c'..'\u0b5d'|'\u0b5f'..'\u0b61'|'\u0b66'..'\u0b6f'|'\u0b71'|'\u0b82'..'\u0b83'|'\u0b85'..'\u0b8a'|'\u0b8e'..'\u0b90'|'\u0b92'..'\u0b95'|'\u0b99'..'\u0b9a'|'\u0b9c'|'\u0b9e'..'\u0b9f'|'\u0ba3'..'\u0ba4'|'\u0ba8'..'\u0baa'|'\u0bae'..'\u0bb5'|'\u0bb7'..'\u0bb9'|'\u0bbe'..'\u0bc2'|'\u0bc6'..'\u0bc8'|'\u0bca'..'\u0bcd'|'\u0bd7'|'\u0be7'..'\u0bef'|'\u0bf9'|'\u0c01'..'\u0c03'|'\u0c05'..'\u0c0c'|'\u0c0e'..'\u0c10'|'\u0c12'..'\u0c28'|'\u0c2a'..'\u0c33'|'\u0c35'..'\u0c39'|'\u0c3e'..'\u0c44'|'\u0c46'..'\u0c48'|'\u0c4a'..'\u0c4d'|'\u0c55'..'\u0c56'|'\u0c60'..'\u0c61'|'\u0c66'..'\u0c6f'|'\u0c82'..'\u0c83'|'\u0c85'..'\u0c8c'|'\u0c8e'..'\u0c90'|'\u0c92'..'\u0ca8'|'\u0caa'..'\u0cb3'|'\u0cb5'..'\u0cb9'|'\u0cbc'..'\u0cc4'|'\u0cc6'..'\u0cc8'|'\u0cca'..'\u0ccd'|'\u0cd5'..'\u0cd6'|'\u0cde'|'\u0ce0'..'\u0ce1'|'\u0ce6'..'\u0cef'|'\u0d02'..'\u0d03'|'\u0d05'..'\u0d0c'|'\u0d0e'..'\u0d10'|'\u0d12'..'\u0d28'|'\u0d2a'..'\u0d39'|'\u0d3e'..'\u0d43'|'\u0d46'..'\u0d48'|'\u0d4a'..'\u0d4d'|'\u0d57'|'\u0d60'..'\u0d61'|'\u0d66'..'\u0d6f'|'\u0d82'..'\u0d83'|'\u0d85'..'\u0d96'|'\u0d9a'..'\u0db1'|'\u0db3'..'\u0dbb'|'\u0dbd'|'\u0dc0'..'\u0dc6'|'\u0dca'|'\u0dcf'..'\u0dd4'|'\u0dd6'|'\u0dd8'..'\u0ddf'|'\u0df2'..'\u0df3'|'\u0e01'..'\u0e3a'|'\u0e3f'..'\u0e4e'|'\u0e50'..'\u0e59'|'\u0e81'..'\u0e82'|'\u0e84'|'\u0e87'..'\u0e88'|'\u0e8a'|'\u0e8d'|'\u0e94'..'\u0e97'|'\u0e99'..'\u0e9f'|'\u0ea1'..'\u0ea3'|'\u0ea5'|'\u0ea7'|'\u0eaa'..'\u0eab'|'\u0ead'..'\u0eb9'|'\u0ebb'..'\u0ebd'|'\u0ec0'..'\u0ec4'|'\u0ec6'|'\u0ec8'..'\u0ecd'|'\u0ed0'..'\u0ed9'|'\u0edc'..'\u0edd'|'\u0f00'|'\u0f18'..'\u0f19'|'\u0f20'..'\u0f29'|'\u0f35'|'\u0f37'|'\u0f39'|'\u0f3e'..'\u0f47'|'\u0f49'..'\u0f6a'|'\u0f71'..'\u0f84'|'\u0f86'..'\u0f8b'|'\u0f90'..'\u0f97'|'\u0f99'..'\u0fbc'|'\u0fc6'|'\u1000'..'\u1021'|'\u1023'..'\u1027'|'\u1029'..'\u102a'|'\u102c'..'\u1032'|'\u1036'..'\u1039'|'\u1040'..'\u1049'|'\u1050'..'\u1059'|'\u10a0'..'\u10c5'|'\u10d0'..'\u10f8'|'\u1100'..'\u1159'|'\u115f'..'\u11a2'|'\u11a8'..'\u11f9'|'\u1200'..'\u1206'|'\u1208'..'\u1246'|'\u1248'|'\u124a'..'\u124d'|'\u1250'..'\u1256'|'\u1258'|'\u125a'..'\u125d'|'\u1260'..'\u1286'|'\u1288'|'\u128a'..'\u128d'|'\u1290'..'\u12ae'|'\u12b0'|'\u12b2'..'\u12b5'|'\u12b8'..'\u12be'|'\u12c0'|'\u12c2'..'\u12c5'|'\u12c8'..'\u12ce'|'\u12d0'..'\u12d6'|'\u12d8'..'\u12ee'|'\u12f0'..'\u130e'|'\u1310'|'\u1312'..'\u1315'|'\u1318'..'\u131e'|'\u1320'..'\u1346'|'\u1348'..'\u135a'|'\u1369'..'\u1371'|'\u13a0'..'\u13f4'|'\u1401'..'\u166c'|'\u166f'..'\u1676'|'\u1681'..'\u169a'|'\u16a0'..'\u16ea'|'\u16ee'..'\u16f0'|'\u1700'..'\u170c'|'\u170e'..'\u1714'|'\u1720'..'\u1734'|'\u1740'..'\u1753'|'\u1760'..'\u176c'|'\u176e'..'\u1770'|'\u1772'..'\u1773'|'\u1780'..'\u17d3'|'\u17d7'|'\u17db'..'\u17dd'|'\u17e0'..'\u17e9'|'\u180b'..'\u180d'|'\u1810'..'\u1819'|'\u1820'..'\u1877'|'\u1880'..'\u18a9'|'\u1900'..'\u191c'|'\u1920'..'\u192b'|'\u1930'..'\u193b'|'\u1946'..'\u196d'|'\u1970'..'\u1974'|'\u1d00'..'\u1d6b'|'\u1e00'..'\u1e9b'|'\u1ea0'..'\u1ef9'|'\u1f00'..'\u1f15'|'\u1f18'..'\u1f1d'|'\u1f20'..'\u1f45'|'\u1f48'..'\u1f4d'|'\u1f50'..'\u1f57'|'\u1f59'|'\u1f5b'|'\u1f5d'|'\u1f5f'..'\u1f7d'|'\u1f80'..'\u1fb4'|'\u1fb6'..'\u1fbc'|'\u1fbe'|'\u1fc2'..'\u1fc4'|'\u1fc6'..'\u1fcc'|'\u1fd0'..'\u1fd3'|'\u1fd6'..'\u1fdb'|'\u1fe0'..'\u1fec'|'\u1ff2'..'\u1ff4'|'\u1ff6'..'\u1ffc'|'\u200c'..'\u200f'|'\u202a'..'\u202e'|'\u203f'..'\u2040'|'\u2054'|'\u2060'..'\u2063'|'\u206a'..'\u206f'|'\u2071'|'\u207f'|'\u20a0'..'\u20b1'|'\u20d0'..'\u20dc'|'\u20e1'|'\u20e5'..'\u20ea'|'\u2102'|'\u2107'|'\u210a'..'\u2113'|'\u2115'|'\u2119'..'\u211d'|'\u2124'|'\u2126'|'\u2128'|'\u212a'..'\u212d'|'\u212f'..'\u2131'|'\u2133'..'\u2139'|'\u213d'..'\u213f'|'\u2145'..'\u2149'|'\u2160'..'\u2183'|'\u3005'..'\u3007'|'\u3021'..'\u302f'|'\u3031'..'\u3035'|'\u3038'..'\u303c'|'\u3041'..'\u3096'|'\u3099'..'\u309a'|'\u309d'..'\u309f'|'\u30a1'..'\u30ff'|'\u3105'..'\u312c'|'\u3131'..'\u318e'|'\u31a0'..'\u31b7'|'\u31f0'..'\u31ff'|'\u3400'..'\u4db5'|'\u4e00'..'\u9fa5'|'\ua000'..'\ua48c'|'\uac00'..'\ud7a3'|'\ud800'..'\udfff'|'\uf900'..'\ufa2d'|'\ufa30'..'\ufa6a'|'\ufb00'..'\ufb06'|'\ufb13'..'\ufb17'|'\ufb1d'..'\ufb28'|'\ufb2a'..'\ufb36'|'\ufb38'..'\ufb3c'|'\ufb3e'|'\ufb40'..'\ufb41'|'\ufb43'..'\ufb44'|'\ufb46'..'\ufbb1'|'\ufbd3'..'\ufd3d'|'\ufd50'..'\ufd8f'|'\ufd92'..'\ufdc7'|'\ufdf0'..'\ufdfc'|'\ufe00'..'\ufe0f'|'\ufe20'..'\ufe23'|'\ufe33'..'\ufe34'|'\ufe4d'..'\ufe4f'|'\ufe69'|'\ufe70'..'\ufe74'|'\ufe76'..'\ufefc'|'\ufeff'|'\uff04'|'\uff10'..'\uff19'|'\uff21'..'\uff3a'|'\uff3f'|'\uff41'..'\uff5a'|'\uff65'..'\uffbe'|'\uffc2'..'\uffc7'|'\uffca'..'\uffcf'|'\uffd2'..'\uffd7'|'\uffda'..'\uffdc'|'\uffe0'..'\uffe1'|'\uffe5'..'\uffe6'|'\ufff9'..'\ufffb')*$;
+
+ DEFINE HEX_FLOAT_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')* (('.' ('0'..'9'|'a'..'f'|'A'..'F')+ (('p'|'P') ('+'|'-')? ('0'..'9')+ ('f'|'F') )?) | ((('p'|'P') ('+'|'-')? ('0'..'9')+ ('f'|'F') )))$;
+ @SuppressWarnings(tokenOverlapping)
+ DEFINE HEX_DOUBLE_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')* (('.' ('0'..'9'|'a'..'f'|'A'..'F')+ (('p'|'P') ('+'|'-')? ('0'..'9')+ ('d'|'D')?)?) | ((('p'|'P') ('+'|'-')? ('0'..'9')+ ('d'|'D')?)))$;
+ DEFINE HEX_LONG_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')+ ('l'|'L')$;
+ DEFINE HEX_INTEGER_LITERAL $'0'('x'|'X')('0'..'9'|'a'..'f'|'A'..'F')+$;
+
+ DEFINE DECIMAL_FLOAT_LITERAL $('0'..'9')+ '.' ('0'..'9')* (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)? ('f'|'F') | ('.' ('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)?) ('f'|'F') | (('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+) ('f'|'F') | ('0'..'9')+ ('f'|'F'))$;
+ DEFINE DECIMAL_DOUBLE_LITERAL $('0'..'9')+ '.' ('0'..'9')* (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)? ('d'|'D')? | ('.' ('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+)?) ('d'|'D')? | (('0'..'9')+ (('e'|'E'|'p'|'P') ('+'|'-')? ('0'..'9')+) ('d'|'D')? | ('0'..'9')+ ('d'|'D'))$;
+ DEFINE DECIMAL_LONG_LITERAL $('0'|'1'..'9''0'..'9'*)('l'|'L')$;
+ DEFINE DECIMAL_INTEGER_LITERAL $('0'|'1'..'9''0'..'9'*)$;
+
+ DEFINE OCTAL_LONG_LITERAL $'0'('0'..'7')+('l'|'L')$;
+ DEFINE OCTAL_INTEGER_LITERAL $'0'('0'..'7')+$;
+
+ @SuppressWarnings(unusedToken)
+ DEFINE WHITESPACE $(' '|'\t'|'\f'|'\r'|'\n')+$;
+}
+
+TOKENSTYLES {
+ "ML_COMMENT" COLOR #008000, ITALIC;
+ "SL_COMMENT" COLOR #000080, ITALIC;
+ "STRING_LITERAL" COLOR #2A00FF;
+ "IDENTIFIER" COLOR #000000;
+
+ "abstract", "assert",
+ "boolean", "byte",
+ "case", "catch", "class", "continue", "char",
+ "default", "double", "do",
+ "enum", "extends", "else",
+ "for", "float", "final",
+ "if", "import", "implements", "int", "interface", "instanceof",
+ "package", "private", "protected", "public",
+ "super", "switch", "strictfp", "static", "synchronized",
+ "this", "try", "throws", "transient",
+ "new", "null",
+ "while",
+ "void",
+ "long",
+ "return" COLOR #7F0055, BOLD;
+}
+
+RULES {
+
+@SuppressWarnings(optionalKeyword)
+@SuppressWarnings(featureWithoutSyntax) //name is set by JavaSourceOrClassFileResource.load()
+containers.EmptyModel
+ ::= (imports ";" !0 )* (";")*
+ ;
+
+@SuppressWarnings(optionalKeyword)
+@SuppressWarnings(featureWithoutSyntax) //subpackages is filled by JavaSourceOrClassFileResource.load()
+containers.Package
+ ::= annotations* "package" (namespaces[] "." )* name[] ";"
+ (";")? //TODO this is required to let T7312 of JacksTest pass... not sure if this is correct or if it should be * instead of ?
+ !0 !0
+ (imports !0 )* (";")*
+ ;
+
+@SuppressWarnings(optionalKeyword)
+@SuppressWarnings(featureWithoutSyntax) //name is set by JavaSourceOrClassFileResource or ClassFileModelLoader
+containers.CompilationUnit
+ ::= ("package" namespaces[] ( "." namespaces[])* ";" )?
+ !0 !0
+ (imports !0 )*
+ (";" !0)*
+ !0
+ (classifiers (";")* !0 !0)+
+ ("\u001a")?
+ ;
+
+imports.ClassifierImport
+ ::= "import" (namespaces[] "." )* classifier[] ";";
+
+@SuppressWarnings(minOccurenceMismatch) //the minimal occurence of namespaces[] is in other cases 0
+imports.PackageImport
+ ::= "import" (namespaces[] "." )+ "*" ";";
+
+imports.StaticMemberImport
+ ::= "import" static (namespaces[] "." )* staticMembers[] ";";
+
+@SuppressWarnings(minOccurenceMismatch) //the minimal occurence of namespaces[] is in other cases 0
+imports.StaticClassifierImport
+ ::= "import" static (namespaces[] "." )+ "*" ";";
+
+@SuppressWarnings(featureWithoutSyntax) //defaultExtends is filled by post processor
+classifiers.Class
+ ::= annotationsAndModifiers*
+ "class" name[] ("<" typeParameters ("," typeParameters)* ">")?
+ ("extends" extends)?
+ ("implements" (implements ("," implements)*))?
+ #1 "{"
+ (!1 members)* !0
+ "}"
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //defaultMembers is filled by post processor
+classifiers.AnonymousClass
+ ::= #1 "{"
+ (!1 members)* !0
+ "}"
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //defaultMembers is set during reference resolving
+classifiers.Interface
+ ::= annotationsAndModifiers*
+ "interface" name[] ("<" typeParameters ( "," typeParameters)* ">")?
+ ("extends" (extends ("," extends)*))?
+ #1 "{"
+ (!1 members)* !0
+ "}"
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //defaultMembers is set during reference resolving
+@SuppressWarnings(optionalKeyword)
+classifiers.Enumeration
+ ::= annotationsAndModifiers*
+ "enum" name[]
+ ("implements" (implements ("," implements)*))?
+ #1 "{"
+ (!1 constants ("," !1 constants)*)? (",")?
+ (";" (!1 members)* !0)?
+ "}"
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //defaultMembers is set during reference resolving
+classifiers.Annotation
+ ::= annotationsAndModifiers*
+ "@" "interface" name[]
+ #1 "{"
+ (!1 members)* !0
+ "}"
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //typeArguments
+annotations.AnnotationInstance
+ ::= "@" (namespaces[] "." )* annotation[]
+ (parameter)?
+ ;
+
+annotations.SingleAnnotationParameter
+ ::= "(" value:arrays.ArrayInitializer,expressions.ConditionalExpression ")"
+ ;
+
+annotations.AnnotationParameterList
+ ::= "(" (settings ("," settings)*)? ")"
+ ;
+
+annotations.AnnotationAttributeSetting
+ ::= attribute[] #1 "=" #1
+ value:arrays.ArrayInitializer,expressions.ConditionalExpression
+ ;
+
+generics.TypeParameter
+ ::= name[] ("extends" extendTypes ("&" extendTypes)*)?
+ ;
+
+@SuppressWarnings(optionalKeyword)
+members.EnumConstant
+ ::= annotations* name[] (#1 "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)*)? ")" )?
+ (anonymousClass)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //name is set by JavaModelCompletion.setBlockName()
+statements.Block
+ ::= modifiers* #1 "{" (!1 statements)* !0 "}"
+ ;
+
+members.Constructor
+ ::= annotationsAndModifiers* ("<" typeParameters ("," typeParameters)* ">")? name[]
+ "(" (parameters ("," parameters)* )? ")"
+ ("throws" exceptions ("," exceptions)*)? #1 "{" (!2 statements)* !1 "}"
+ ;
+
+members.InterfaceMethod
+ ::= annotationsAndModifiers* ("<" typeParameters ( "," typeParameters)* ">")? (typeReference arrayDimensionsBefore*) name[]
+ "(" (parameters ("," parameters)* )? ")" arrayDimensionsAfter*
+ ("throws" exceptions ("," exceptions)*)? ";"
+ ;
+
+members.ClassMethod
+ ::= annotationsAndModifiers* ("<" typeParameters ("," typeParameters)* ">")? (typeReference arrayDimensionsBefore*) name[]
+ "(" (parameters ("," parameters)* )? ")" arrayDimensionsAfter*
+ ("throws" exceptions ("," exceptions)*)? #1 "{" (!2 statements)* !1 "}"
+ ;
+
+annotations.AnnotationAttribute
+ ::= annotationsAndModifiers* ("<" typeParameters ("," typeParameters)* ">")? (typeReference arrayDimensionsBefore*) name[]
+ "(" (parameters ("," parameters)* )? ")" arrayDimensionsAfter*
+ ("throws" exceptions ("," exceptions)*)? "default" defaultValue:expressions.AssignmentExpression ";"
+ ;
+
+parameters.OrdinaryParameter
+ ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? name[] arrayDimensionsAfter*
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+parameters.VariableLengthParameter
+ ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? "..." name[]
+ ;
+
+variables.LocalVariable
+ ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)? ("," additionalLocalVariables)*
+ ;
+
+statements.LocalVariableStatement
+ ::= variable ";" ;
+
+@SuppressWarnings(featureWithoutSyntax)
+variables.AdditionalLocalVariable
+ ::= name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)?
+ ;
+
+members.Field
+ ::= annotationsAndModifiers* typeReference arrayDimensionsBefore* ("<" typeArguments ("," typeArguments)* ">")? name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)? ("," additionalFields)* ";"
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+members.AdditionalField
+ ::= name[] arrayDimensionsAfter* (#1 "=" #1 initialValue:expressions.AssignmentExpression)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //name is set by JavaModelCompletion.setEmptyMemberName()
+members.EmptyMember
+ ::= ";"
+ ;
+
+// INSTANTIATIONS
+@SuppressWarnings(featureWithoutSyntax) //arraySelectors
+instantiations.NewConstructorCall
+ ::= "new"
+ // these are the arguments for the constructor type parameters
+ ("<" typeArguments ("," typeArguments)* ">")?
+ typeReference
+ // these are the arguments for the class type parameters
+ ("<" callTypeArguments ("," callTypeArguments)* ">")?
+ "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)* )? ")"
+ anonymousClass?
+ ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //arraySelectors
+instantiations.ExplicitConstructorCall
+ ::= ("<" typeArguments ("," typeArguments)* ">")?
+ callTarget "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)* )? ")"
+ ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //arrayDimensionsAfter
+@SuppressWarnings(minOccurenceMismatch) //arrayDimensionsBefore required here
+arrays.ArrayInstantiationByValuesTyped
+ ::= "new" typeReference arrayDimensionsBefore+ arrayInitializer
+ arraySelectors* ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //typeArguments not applicable
+arrays.ArrayInstantiationByValuesUntyped
+ ::= arrayInitializer
+ arraySelectors* ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+arrays.ArrayInstantiationBySize
+ ::= "new" typeReference
+ ("[" sizes:expressions.AssignmentExpression "]")+
+ arrayDimensionsBefore*
+ ("." next)?
+ ;
+
+@SuppressWarnings(optionalKeyword)
+arrays.ArrayInitializer
+ ::= #1 "{" (initialValues:expressions.AssignmentExpression,arrays.ArrayInitializer
+ ("," initialValues:expressions.AssignmentExpression,arrays.ArrayInitializer )*)? (",")? "}"
+ ;
+
+arrays.ArraySelector
+ ::= "[" position:expressions.AssignmentExpression? "]"
+ ;
+
+types.NamespaceClassifierReference
+ ::= (namespaces[] ".")* (classifierReferences ".")* classifierReferences
+ ;
+
+types.ClassifierReference
+ ::= target[]
+ ("<" typeArguments ("," typeArguments)* ">")?
+ ;
+
+
+references.MethodCall
+ ::= ("<" callTypeArguments ("," callTypeArguments)* ">")?
+ target[]
+ ("<" typeArguments ("," typeArguments)* ">")?
+ "(" (arguments:expressions.AssignmentExpression ("," arguments:expressions.AssignmentExpression)* )? ")"
+ arraySelectors* ("." next)?
+ ;
+
+references.IdentifierReference
+ ::= target[]
+ ("<" typeArguments ("," typeArguments)* ">")?
+ arraySelectors* ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //typeArguments
+references.ReflectiveClassReference ::= "class"
+ ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //typeArguments
+references.SelfReference ::= self
+ ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //typeArguments
+references.PrimitiveTypeReference ::= primitiveType
+ arraySelectors* ("." next)?
+ ;
+
+literals.This ::= "this";
+literals.Super ::= "super";
+
+@SuppressWarnings(featureWithoutSyntax) //typeArguments
+references.StringReference
+ ::= value[STRING_LITERAL]
+ ("." next)?
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+generics.QualifiedTypeArgument
+ ::= typeReference arrayDimensionsBefore*
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+generics.UnknownTypeArgument
+ ::= "?"
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+generics.ExtendsTypeArgument
+ ::= "?" "extends" extendTypes ("&" extendTypes)* arrayDimensionsBefore*
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+generics.SuperTypeArgument
+ ::= "?" "super" superType arrayDimensionsBefore*
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //condition can be empty in other cases
+statements.Assert
+ ::= "assert" condition:expressions.AssignmentExpression (":" errorMessage:expressions.AssignmentExpression)? ";" ;
+
+@SuppressWarnings(minOccurenceMismatch) //condition can be empty in other cases
+statements.Condition
+ ::= "if" #1 "(" condition:expressions.AssignmentExpression ")" statement ("else" elseStatement)? ;
+
+statements.ForLoop
+ ::= "for" #1 "(" init? ";" condition:expressions.AssignmentExpression? ";" (updates:expressions.AssignmentExpression ("," updates:expressions.AssignmentExpression)* )? ")" statement;
+
+statements.ForEachLoop
+ ::= "for" #1 "(" next ":" collection:expressions.AssignmentExpression ")" statement;
+
+statements.WhileLoop
+ ::= "while" #1 "(" condition:expressions.AssignmentExpression ")" statement;
+
+statements.DoWhileLoop
+ ::= "do" statement "while" #1 "(" condition:expressions.AssignmentExpression ")" ";" ;
+
+statements.EmptyStatement
+ ::= ";" ;
+
+statements.SynchronizedBlock
+ ::= "synchronized" #1 "(" lockProvider:expressions.AssignmentExpression ")" #1 "{" (!1 statements)* !0 "}" ;
+
+statements.TryBlock
+ ::= "try" #1 "{" (!1 statements)* !0 "}"
+ catcheBlocks*
+ ("finally" finallyBlock)?;
+
+statements.CatchBlock
+ ::= "catch" #1 "(" parameter ")" #1 "{" (!1 statements)* !0 "}"
+ ;
+
+statements.Switch
+ ::= "switch" #1 "(" variable:expressions.AssignmentExpression ")" #1 "{" (cases*) "}";
+
+@SuppressWarnings(minOccurenceMismatch) //condition can be empty in other cases
+statements.NormalSwitchCase
+ ::= "case" condition:expressions.AssignmentExpression ":" (!1 statements)* !0 ;
+
+statements.DefaultSwitchCase
+ ::= "default" ":" (!1 statements)* !0 ;
+
+statements.Return
+ ::= "return" returnValue:expressions.AssignmentExpression? ";" ;
+
+statements.Throw
+ ::= "throw" throwable:expressions.AssignmentExpression ";" ;
+
+statements.Break
+ ::= "break" (target[])? ";" ;
+
+statements.Continue
+ ::= "continue" (target[])? ";" ;
+
+statements.JumpLabel
+ ::= name[] ":" statement ;
+
+statements.ExpressionStatement
+ ::= expression:expressions.AssignmentExpression ";"
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.ExpressionList
+ ::= expressions:expressions.AssignmentExpression ("," expressions:expressions.AssignmentExpression)*
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.AssignmentExpression
+ ::= child:expressions.ConditionalExpression (#1 assignmentOperator #1 value:expressions.AssignmentExpression)?
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.ConditionalExpression
+ ::= child:expressions.ConditionalOrExpression ("?" expressionIf:expressions.AssignmentExpression ":" expressionElse:expressions.ConditionalExpression)?
+ ;
+
+expressions.ConditionalOrExpression
+ ::= children:expressions.ConditionalAndExpression ( "||" children:expressions.ConditionalAndExpression )*
+ ;
+
+expressions.ConditionalAndExpression
+ ::= children:expressions.InclusiveOrExpression ( "&&" children:expressions.InclusiveOrExpression )*
+ ;
+
+expressions.InclusiveOrExpression
+ ::= children:expressions.ExclusiveOrExpression ( "|" children:expressions.ExclusiveOrExpression )*
+ ;
+
+expressions.ExclusiveOrExpression
+ ::= children:expressions.AndExpression ( "^" children:expressions.AndExpression )*
+ ;
+
+expressions.AndExpression
+ ::= children:expressions.EqualityExpression ( "&" children:expressions.EqualityExpression )*
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.EqualityExpression
+ ::= children:expressions.InstanceOfExpression ( #1 equalityOperators #1 children:expressions.InstanceOfExpression )*
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.InstanceOfExpression
+ ::= child:expressions.RelationExpression ("instanceof" typeReference arrayDimensionsBefore*)?
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.RelationExpression
+ ::= children:expressions.ShiftExpression ( #1 relationOperators #1 children:expressions.ShiftExpression)*
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.ShiftExpression
+ ::= children:expressions.AdditiveExpression ( #1 shiftOperators #1 children:expressions.AdditiveExpression)*
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.AdditiveExpression
+ ::= children:expressions.MultiplicativeExpression ( #1 additiveOperators #1 children:expressions.MultiplicativeExpression )*
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.MultiplicativeExpression
+ ::= children:expressions.UnaryExpression ( #1 multiplicativeOperators #1 children:expressions.UnaryExpression )*
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.UnaryExpression
+ ::= operators* child:expressions.UnaryModificationExpression
+ // TODO why does UnaryExpression have multiple operators?
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.SuffixUnaryModificationExpression
+ ::= child (operator)?
+ ;
+
+@SuppressWarnings(minOccurenceMismatch) //the expression simplifier removes the cases where min occurrence does not match
+expressions.PrefixUnaryModificationExpression
+ ::= (operator)? child
+ ;
+
+@SuppressWarnings(featureWithoutSyntax)
+expressions.CastExpression
+ ::= "(" typeReference arrayDimensionsBefore* ")" #1 child:expressions.UnaryExpression
+ ;
+
+@SuppressWarnings(featureWithoutSyntax) //typeArguments
+expressions.NestedExpression ::= "(" expression:expressions.AssignmentExpression ")" arraySelectors* ("." next)?
+ ;
+
+
+
+
+
+operators.Assignment ::= "=";
+operators.AssignmentPlus ::= "+=";
+operators.AssignmentMinus ::= "-=";
+operators.AssignmentMultiplication ::= "*=";
+operators.AssignmentDivision ::= "/=";
+operators.AssignmentAnd ::= "&=";
+operators.AssignmentOr ::= "|=";
+operators.AssignmentExclusiveOr ::= "^=";
+operators.AssignmentModulo ::= "%=";
+operators.AssignmentLeftShift ::= "<" "<" "=";
+operators.AssignmentRightShift ::= ">" ">" "=";
+operators.AssignmentUnsignedRightShift ::= ">" ">" ">" "=";
+
+operators.Addition ::= "+";
+operators.Subtraction ::= "-";
+
+operators.Multiplication ::= "*" ;
+operators.Division ::= "/" ;
+operators.Remainder ::= "%" ;
+
+operators.LessThan ::= "<";
+operators.LessThanOrEqual ::= "<" "=";
+operators.GreaterThan ::= ">";
+operators.GreaterThanOrEqual ::= ">" "=";
+
+operators.LeftShift ::= "<" "<" ;
+operators.RightShift ::= ">" ">" ;
+operators.UnsignedRightShift ::= ">" ">" ">" ;
+
+operators.Equal ::= "==";
+operators.NotEqual ::= "!=";
+operators.PlusPlus ::= "++" ;
+operators.MinusMinus ::= "--" ;
+operators.Complement ::= "~" ;
+operators.Negate ::= "!" ;
+
+arrays.ArrayDimension ::= ("[" "]");
+
+literals.NullLiteral ::= "null";
+
+modifiers.Public ::= "public";
+modifiers.Abstract ::= "abstract";
+modifiers.Protected ::= "protected";
+modifiers.Private ::= "private";
+modifiers.Final ::= "final";
+modifiers.Static ::= "static";
+
+modifiers.Native ::= "native";
+modifiers.Synchronized ::= "synchronized";
+modifiers.Transient ::= "transient";
+modifiers.Volatile ::= "volatile";
+modifiers.Strictfp ::= "strictfp";
+
+types.Void ::= "void";
+types.Boolean ::= "boolean";
+types.Char ::= "char";
+types.Byte ::= "byte";
+types.Short ::= "short";
+types.Int ::= "int";
+types.Long ::= "long";
+types.Float ::= "float";
+types.Double ::= "double";
+
+// do not change the order of the literals!
+literals.DecimalLongLiteral
+ ::= decimalValue[DECIMAL_LONG_LITERAL];
+
+literals.DecimalFloatLiteral
+ ::= decimalValue[DECIMAL_FLOAT_LITERAL];
+
+literals.DecimalIntegerLiteral
+ ::= decimalValue[DECIMAL_INTEGER_LITERAL];
+
+literals.DecimalDoubleLiteral
+ ::= decimalValue[DECIMAL_DOUBLE_LITERAL];
+
+literals.HexLongLiteral
+ ::= hexValue[HEX_LONG_LITERAL];
+
+literals.HexFloatLiteral
+ ::= hexValue[HEX_FLOAT_LITERAL];
+
+literals.HexDoubleLiteral
+ ::= hexValue[HEX_DOUBLE_LITERAL];
+
+literals.HexIntegerLiteral
+ ::= hexValue[HEX_INTEGER_LITERAL];
+
+literals.OctalLongLiteral
+ ::= octalValue[OCTAL_LONG_LITERAL];
+
+literals.OctalIntegerLiteral
+ ::= octalValue[OCTAL_INTEGER_LITERAL];
+
+literals.CharacterLiteral
+ ::= value[CHARACTER_LITERAL];
+
+literals.BooleanLiteral
+ ::= value[BOOLEAN_LITERAL];
+
+}
diff --git a/Core/org.emftext.language.java/metamodel/java.ecore.notes.txt b/Core/org.emftext.language.java/metamodel/java.ecore.notes.txt
index a28c2727..9ea7b002 100644
--- a/Core/org.emftext.language.java/metamodel/java.ecore.notes.txt
+++ b/Core/org.emftext.language.java/metamodel/java.ecore.notes.txt
@@ -1,4 +1,4 @@
-- Why does meta class ExplicitConstructorCall has a reference to Self?
-- Should class Instantiation inherit from class Reference?
-- Should NamespaceClassifierReference better be called QualifiedClassifierReference?
-- EnumConstant subclass of Member?
+- Why does meta class ExplicitConstructorCall has a reference to Self?
+- Should class Instantiation inherit from class Reference?
+- Should NamespaceClassifierReference better be called QualifiedClassifierReference?
+- EnumConstant subclass of Member?
diff --git a/Core/org.emftext.language.java/metamodel/java/arrays/ArrayTypable.ejava b/Core/org.emftext.language.java/metamodel/java/arrays/ArrayTypable.ejava
index 903c30ab..48597dd3 100644
--- a/Core/org.emftext.language.java/metamodel/java/arrays/ArrayTypable.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/arrays/ArrayTypable.ejava
@@ -1,7 +1,7 @@
-epackage java.arrays;
-
-import java.parameters.VariableLengthParameter;
-
-eclass ArrayTypeable {
-
+epackage java.arrays;
+
+import java.parameters.VariableLengthParameter;
+
+eclass ArrayTypeable {
+
}
\ No newline at end of file
diff --git a/Core/org.emftext.language.java/metamodel/java/classifiers/Annotation.ejava b/Core/org.emftext.language.java/metamodel/java/classifiers/Annotation.ejava
index 44ee5a79..7bc94680 100644
--- a/Core/org.emftext.language.java/metamodel/java/classifiers/Annotation.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/classifiers/Annotation.ejava
@@ -1,18 +1,18 @@
-epackage java.classifiers;
-
-//java
-import org.emftext.language.java.util.UniqueEList;
-import org.eclipse.emf.common.util.EList;
-
-eclass Annotation {
-
- /**
- * @return java.lang.annotation.Annotation
- */
- getAllSuperClassifiers() {
- EList result = new UniqueEList();
- result.add(getAnnotationInterface());
- return result;
- }
-
+epackage java.classifiers;
+
+//java
+import org.emftext.language.java.util.UniqueEList;
+import org.eclipse.emf.common.util.EList;
+
+eclass Annotation {
+
+ /**
+ * @return java.lang.annotation.Annotation
+ */
+ getAllSuperClassifiers() {
+ EList result = new UniqueEList();
+ result.add(getAnnotationInterface());
+ return result;
+ }
+
}
\ No newline at end of file
diff --git a/Core/org.emftext.language.java/metamodel/java/classifiers/AnonymousClass.ejava b/Core/org.emftext.language.java/metamodel/java/classifiers/AnonymousClass.ejava
index f8a7f4e9..62ea2a38 100644
--- a/Core/org.emftext.language.java/metamodel/java/classifiers/AnonymousClass.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/classifiers/AnonymousClass.ejava
@@ -1,97 +1,97 @@
-epackage java.classifiers;
-
-//ecore
-import java.classifiers.AnonymousClass;
-import java.classifiers.ConcreteClassifier;
-import java.classifiers.Enumeration;
-import java.instantiations.NewConstructorCall;
-import java.members.EnumConstant;
-import java.members.Member;
-import java.modifiers.AnnotableAndModifiable;
-
-
-//java
-import org.emftext.language.java.util.UniqueEList;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-
-eclass AnonymousClass {
-
- /**
- * @param context to check protected visibility
- * @return a view on all members including super classifiers' members
- */
- getAllMembers() {
- EList memberList = new UniqueEList();
- memberList.addAll(this.getMembers());
- memberList.addAll(this.getDefaultMembers());
-
- NewConstructorCall ncCall = null;
- if (this.eContainer() instanceof NewConstructorCall) {
- ncCall = (NewConstructorCall) this.eContainer();;
- }
- if (ncCall == null) {
- return memberList;
- }
- else {
- ConcreteClassifier classifier = (ConcreteClassifier) ncCall.getTypeReference().getTarget();
- if (classifier != null) {
- EList superMemberList = classifier.getAllMembers(context);
- for(Member superMember : superMemberList) {
- //exclude private members
- if(superMember instanceof AnnotableAndModifiable) {
- if (superMember.eIsProxy()) {
- superMember = (Member) EcoreUtil.resolve(superMember, this);
- }
- AnnotableAndModifiable modifiable = (AnnotableAndModifiable) superMember;
- if(!modifiable.isHidden(context)) {
- memberList.add(superMember);
- }
- }
- else {
- memberList.add(superMember);
- }
- }
- }
- return memberList;
- }
- }
-
- /**
- * @return a view on all super classifiers
- */
- getAllSuperClassifiers() {
- EList superClassifierList = new UniqueEList();
-
- ConcreteClassifier superClassifier = getSuperClassifier();
-
- if (superClassifier != null) {
- superClassifierList.add(superClassifier);
- superClassifierList.addAll(superClassifier.getAllSuperClassifiers());
- }
- else {
- superClassifierList.add(getObjectClass());
- }
- return superClassifierList;
- }
-
- /**
- * @return the direct super classifier
- */
- getSuperClassifier() {
- NewConstructorCall ncCall = null;
- if (this.eContainer() instanceof NewConstructorCall) {
- ncCall = (NewConstructorCall) this.eContainer();
- ConcreteClassifier superClassifier = (ConcreteClassifier) ncCall.getTypeReference().getTarget();
- return superClassifier;
- }
- else if (this.eContainer() instanceof EnumConstant) {
- if (this.eContainer().eContainer() instanceof Enumeration) {
- return (Enumeration) this.eContainer().eContainer();
- }
- }
- return null;
- }
-}
+epackage java.classifiers;
+
+//ecore
+import java.classifiers.AnonymousClass;
+import java.classifiers.ConcreteClassifier;
+import java.classifiers.Enumeration;
+import java.instantiations.NewConstructorCall;
+import java.members.EnumConstant;
+import java.members.Member;
+import java.modifiers.AnnotableAndModifiable;
+
+
+//java
+import org.emftext.language.java.util.UniqueEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+
+eclass AnonymousClass {
+
+ /**
+ * @param context to check protected visibility
+ * @return a view on all members including super classifiers' members
+ */
+ getAllMembers() {
+ EList memberList = new UniqueEList();
+ memberList.addAll(this.getMembers());
+ memberList.addAll(this.getDefaultMembers());
+
+ NewConstructorCall ncCall = null;
+ if (this.eContainer() instanceof NewConstructorCall) {
+ ncCall = (NewConstructorCall) this.eContainer();;
+ }
+ if (ncCall == null) {
+ return memberList;
+ }
+ else {
+ ConcreteClassifier classifier = (ConcreteClassifier) ncCall.getTypeReference().getTarget();
+ if (classifier != null) {
+ EList superMemberList = classifier.getAllMembers(context);
+ for(Member superMember : superMemberList) {
+ //exclude private members
+ if(superMember instanceof AnnotableAndModifiable) {
+ if (superMember.eIsProxy()) {
+ superMember = (Member) EcoreUtil.resolve(superMember, this);
+ }
+ AnnotableAndModifiable modifiable = (AnnotableAndModifiable) superMember;
+ if(!modifiable.isHidden(context)) {
+ memberList.add(superMember);
+ }
+ }
+ else {
+ memberList.add(superMember);
+ }
+ }
+ }
+ return memberList;
+ }
+ }
+
+ /**
+ * @return a view on all super classifiers
+ */
+ getAllSuperClassifiers() {
+ EList superClassifierList = new UniqueEList();
+
+ ConcreteClassifier superClassifier = getSuperClassifier();
+
+ if (superClassifier != null) {
+ superClassifierList.add(superClassifier);
+ superClassifierList.addAll(superClassifier.getAllSuperClassifiers());
+ }
+ else {
+ superClassifierList.add(getObjectClass());
+ }
+ return superClassifierList;
+ }
+
+ /**
+ * @return the direct super classifier
+ */
+ getSuperClassifier() {
+ NewConstructorCall ncCall = null;
+ if (this.eContainer() instanceof NewConstructorCall) {
+ ncCall = (NewConstructorCall) this.eContainer();
+ ConcreteClassifier superClassifier = (ConcreteClassifier) ncCall.getTypeReference().getTarget();
+ return superClassifier;
+ }
+ else if (this.eContainer() instanceof EnumConstant) {
+ if (this.eContainer().eContainer() instanceof Enumeration) {
+ return (Enumeration) this.eContainer().eContainer();
+ }
+ }
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java/metamodel/java/classifiers/Class.ejava b/Core/org.emftext.language.java/metamodel/java/classifiers/Class.ejava
index 45f9b14c..a93e062e 100644
--- a/Core/org.emftext.language.java/metamodel/java/classifiers/Class.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/classifiers/Class.ejava
@@ -1,106 +1,106 @@
-epackage java.classifiers;
-
-//import plain Java types
-import org.emftext.language.java.util.UniqueEList;
-import org.eclipse.emf.common.util.EList;
-
-//import types from other EPackages
-import java.types.*;
-
-eclass Class {
-
- /**
- * Recursively collects all super types (extended classes and implemented interfaces)
- * of the given class.
- *
- * @param classifierList the list for the result
- */
- getAllSuperClassifiers() {
- EList result =
- new UniqueEList();
-
- //collects all superclasses first
- Class superClass = this;
- while (superClass != null && !superClass.eIsProxy() &&
- !superClass.equals(getObjectClass())) {
- superClass = superClass.getSuperClass();
- if (superClass != null) {
- result.add(superClass);
- }
- }
-
- //collect all implemented interfaces
- for (TypeReference typeArg : this.getImplements()) {
- ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
- if (superInterface != null) {
- result.add(superInterface);
- if (superInterface instanceof Interface) {
- result.addAll(((Interface)superInterface).getAllSuperClassifiers());
- }
- }
- }
-
- //collect all implemented interfaces of super classes
- superClass = this.getSuperClass();
- if (superClass != null && !superClass.eIsProxy() &&
- !superClass.equals(getObjectClass())) {
- result.addAll(superClass.getAllSuperClassifiers());
- }
-
- return result;
- }
-
- /**
- * @param this
- * @return the direct super class
- */
- getSuperClass() {
- TypeReference superClassReference = this.getExtends();
- if (superClassReference == null) {
- superClassReference = this.getDefaultExtends();
- }
- if (superClassReference == null) {
- return null;
- }
- Type result = superClassReference.getTarget();
- if (result instanceof Class) {
- return (Class) result;
- }
- return null;
- }
-
- /**
- * @param this
- * @return primitive type, if the class can be wrapped
- */
- unWrapPrimitiveType() {
- if (getLibClass("Boolean").equals(this)) {
- return #Boolean;
- }
- if (getLibClass("Byte").equals(this)) {
- return #Byte;
- }
- if (getLibClass("Character").equals(this)) {
- return #Char;
- }
- if (getLibClass("Float").equals(this)) {
- return #Float;
- }
- if (getLibClass("Double").equals(this)) {
- return #Double;
- }
- if (getLibClass("Integer").equals(this)) {
- return #Int;
- }
- if (getLibClass("Long").equals(this)) {
- return #Long;
- }
- if (getLibClass("Short").equals(this)) {
- return #Short;
- }
- if (getLibClass("Void").equals(this)) {
- return #Void;
- }
- return null;
- }
-}
+epackage java.classifiers;
+
+//import plain Java types
+import org.emftext.language.java.util.UniqueEList;
+import org.eclipse.emf.common.util.EList;
+
+//import types from other EPackages
+import java.types.*;
+
+eclass Class {
+
+ /**
+ * Recursively collects all super types (extended classes and implemented interfaces)
+ * of the given class.
+ *
+ * @param classifierList the list for the result
+ */
+ getAllSuperClassifiers() {
+ EList result =
+ new UniqueEList();
+
+ //collects all superclasses first
+ Class superClass = this;
+ while (superClass != null && !superClass.eIsProxy() &&
+ !superClass.equals(getObjectClass())) {
+ superClass = superClass.getSuperClass();
+ if (superClass != null) {
+ result.add(superClass);
+ }
+ }
+
+ //collect all implemented interfaces
+ for (TypeReference typeArg : this.getImplements()) {
+ ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
+ if (superInterface != null) {
+ result.add(superInterface);
+ if (superInterface instanceof Interface) {
+ result.addAll(((Interface)superInterface).getAllSuperClassifiers());
+ }
+ }
+ }
+
+ //collect all implemented interfaces of super classes
+ superClass = this.getSuperClass();
+ if (superClass != null && !superClass.eIsProxy() &&
+ !superClass.equals(getObjectClass())) {
+ result.addAll(superClass.getAllSuperClassifiers());
+ }
+
+ return result;
+ }
+
+ /**
+ * @param this
+ * @return the direct super class
+ */
+ getSuperClass() {
+ TypeReference superClassReference = this.getExtends();
+ if (superClassReference == null) {
+ superClassReference = this.getDefaultExtends();
+ }
+ if (superClassReference == null) {
+ return null;
+ }
+ Type result = superClassReference.getTarget();
+ if (result instanceof Class) {
+ return (Class) result;
+ }
+ return null;
+ }
+
+ /**
+ * @param this
+ * @return primitive type, if the class can be wrapped
+ */
+ unWrapPrimitiveType() {
+ if (getLibClass("Boolean").equals(this)) {
+ return #Boolean;
+ }
+ if (getLibClass("Byte").equals(this)) {
+ return #Byte;
+ }
+ if (getLibClass("Character").equals(this)) {
+ return #Char;
+ }
+ if (getLibClass("Float").equals(this)) {
+ return #Float;
+ }
+ if (getLibClass("Double").equals(this)) {
+ return #Double;
+ }
+ if (getLibClass("Integer").equals(this)) {
+ return #Int;
+ }
+ if (getLibClass("Long").equals(this)) {
+ return #Long;
+ }
+ if (getLibClass("Short").equals(this)) {
+ return #Short;
+ }
+ if (getLibClass("Void").equals(this)) {
+ return #Void;
+ }
+ return null;
+ }
+}
diff --git a/Core/org.emftext.language.java/metamodel/java/classifiers/Classifier.ejava b/Core/org.emftext.language.java/metamodel/java/classifiers/Classifier.ejava
index 4078f4a6..7b59d2c5 100644
--- a/Core/org.emftext.language.java/metamodel/java/classifiers/Classifier.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/classifiers/Classifier.ejava
@@ -1,28 +1,28 @@
-epackage java.classifiers;
-
-import java.containers.*;
-import java.imports.*;
-
-eclass Classifier {
-
- getAllSuperClassifiers() {
- //method has to be specified in subclasses
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adds an import of the given class to the compilation unit that contains this classifier.
- */
- addImport() {
- CompilationUnit compilationUnit = getParentByType(CompilationUnit.class);
- compilationUnit.addImport(nameOfClassToImport);
- }
-
- /**
- * Adds an import of the given package to this compilation unit that contains this classifier.
- */
- addPackageImport() {
- CompilationUnit compilationUnit = getParentByType(CompilationUnit.class);
- addPackageImport(packageName);
- }
-}
+epackage java.classifiers;
+
+import java.containers.*;
+import java.imports.*;
+
+eclass Classifier {
+
+ getAllSuperClassifiers() {
+ //method has to be specified in subclasses
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Adds an import of the given class to the compilation unit that contains this classifier.
+ */
+ addImport() {
+ CompilationUnit compilationUnit = getParentByType(CompilationUnit.class);
+ compilationUnit.addImport(nameOfClassToImport);
+ }
+
+ /**
+ * Adds an import of the given package to this compilation unit that contains this classifier.
+ */
+ addPackageImport() {
+ CompilationUnit compilationUnit = getParentByType(CompilationUnit.class);
+ addPackageImport(packageName);
+ }
+}
diff --git a/Core/org.emftext.language.java/metamodel/java/classifiers/ConcreteClassifier.ejava b/Core/org.emftext.language.java/metamodel/java/classifiers/ConcreteClassifier.ejava
index 35675f84..a2b04e1c 100644
--- a/Core/org.emftext.language.java/metamodel/java/classifiers/ConcreteClassifier.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/classifiers/ConcreteClassifier.ejava
@@ -1,162 +1,162 @@
-epackage java.classifiers;
-
-//ecore
-import java.containers.*;
-import java.members.*;
-import java.types.*;
-import java.modifiers.AnnotableAndModifiable;
-
-//java
-import java.util.List;
-import org.eclipse.emf.ecore.*;
-import org.eclipse.emf.ecore.util.*;
-import org.eclipse.emf.common.util.EList;
-import org.emftext.language.java.JavaUniquePathConstructor;
-import org.emftext.language.java.util.UniqueEList;
-
-eclass ConcreteClassifier {
-
- getAllInnerClassifiers() {
- EList innerClassifierList = new UniqueEList();
-
- innerClassifierList.addAll(getInnerClassifiers());
-
- for (ConcreteClassifier superClassifier : getAllSuperClassifiers()) {
- EList superInnerList = superClassifier
- .getInnerClassifiers();
-
- for (ConcreteClassifier superInner : superInnerList) {
- if (superInner.eIsProxy()) {
- superInner = (ConcreteClassifier) EcoreUtil.resolve(
- superInner, this);
- }
- if (!superInner.isHidden(this)) {
- innerClassifierList.add(superInner);
- }
- }
- }
- return innerClassifierList;
- }
-
- getInnerClassifiers() {
- if (this.eIsProxy()) {
- String uriString = ((InternalEObject)this).eProxyURI().trimFragment().toString();
- String fullName = uriString.substring(JavaUniquePathConstructor.JAVA_CLASSIFIER_PATHMAP.length(),
- uriString.length() - ".java".length()) + "$";
- return getConcreteClassifierProxies(fullName, "*");
- }
- else {
- String suffix = "";
- ConcreteClassifier containingClass = this;
- while (containingClass.eContainer() instanceof ConcreteClassifier) {
- containingClass = (ConcreteClassifier) containingClass.eContainer();
- suffix = containingClass.getName() + JavaUniquePathConstructor.CLASSIFIER_SEPARATOR + suffix;
- }
- if (containingClass.eContainer() instanceof CompilationUnit) {
- CompilationUnit compilationUnit = (CompilationUnit) containingClass.eContainer();
- String fullName = compilationUnit.getNamespacesAsString() + suffix +
- getName() + JavaUniquePathConstructor.CLASSIFIER_SEPARATOR;
- return getConcreteClassifierProxies(fullName, "*");
- }
- }
-
- //for classes declared locally inside methods that are not registered in the class path
- EList result = new UniqueEList();
- //can not call ClassifierUtil.getAllMembers, because it will try to call this method!
- for(Member member : getMembers()) {
- if(member instanceof ConcreteClassifier) {
- result.add((ConcreteClassifier) member);
- }
- }
- for(ConcreteClassifier superClassifier : getAllSuperClassifiers()) {
- for(Member member : superClassifier.getMembers()) {
- if(member instanceof ConcreteClassifier) {
- result.add((ConcreteClassifier) member);
- }
- }
- }
-
- return result;
- }
-
- getSuperTypeReferences() {
- EList typeReferenceList = new UniqueEList();
- if(this == null) {
- return typeReferenceList;
- }
-
- if (this instanceof Class) {
- Class javaClass = (Class) this;
- if (javaClass.getExtends() != null) {
- ClassifierReference classifierReference = javaClass.getExtends().getPureClassifierReference();
- typeReferenceList.add(classifierReference);
- ConcreteClassifier target = (ConcreteClassifier) classifierReference.getTarget();
- if (!target.equals(getObjectClass())) {
- typeReferenceList.addAll(target.getSuperTypeReferences());
- }
- }
- for(TypeReference interfaceReference : javaClass.getImplements()) {
- ClassifierReference classifierReference = interfaceReference.getPureClassifierReference();
- typeReferenceList.add(classifierReference);
- typeReferenceList.addAll(((ConcreteClassifier) classifierReference.getTarget()).getSuperTypeReferences());
- }
- } else if (this instanceof Interface) {
- Interface javaInterface = (Interface) this;
- for(TypeReference interfaceReference : javaInterface.getExtends()) {
- ClassifierReference classifierReference = interfaceReference.getPureClassifierReference();
- typeReferenceList.add(classifierReference);
- typeReferenceList.addAll(((ConcreteClassifier) classifierReference.getTarget()).getSuperTypeReferences());
- }
- }
- return typeReferenceList;
- }
-
- /**
- * Returns all members of the given classifier including inner classes and
- * all members of super types (extended classes and implemented interfaces).
- *
- * @param context to check protected visibility
- * @return member list
- */
- getAllMembers() {
- EList memberList = new UniqueEList();
-
- ConcreteClassifier concreteClassifier = (ConcreteClassifier) this;
- memberList.addAll(concreteClassifier.getMembers());
- memberList.addAll(concreteClassifier.getDefaultMembers());
- //because inner classes are found in separate class files
- memberList.addAll(concreteClassifier.getAllInnerClassifiers());
-
- for (ConcreteClassifier superClassifier : getAllSuperClassifiers()) {
- for(Member member : superClassifier.getMembers()) {
- if(member instanceof AnnotableAndModifiable) {
- AnnotableAndModifiable modifiable = (AnnotableAndModifiable) member;
-
- if(!modifiable.isHidden(context)) {
- memberList.add(member);
- }
- }
- else {
- memberList.add(member);
- }
- }
- memberList.addAll(superClassifier.getDefaultMembers());
- }
- return memberList;
- }
-
- /**
- * Returns the qualified name of this concrete classifier.
- */
- getQualifiedName() {
-
- StringBuilder qualifiedName = new StringBuilder();
- List packageParts = getContainingPackageName();
- for (String packagePart : packageParts) {
- qualifiedName.append(packagePart);
- qualifiedName.append(".");
- }
- qualifiedName.append(getName());
- return qualifiedName.toString();
- }
-}
+epackage java.classifiers;
+
+//ecore
+import java.containers.*;
+import java.members.*;
+import java.types.*;
+import java.modifiers.AnnotableAndModifiable;
+
+//java
+import java.util.List;
+import org.eclipse.emf.ecore.*;
+import org.eclipse.emf.ecore.util.*;
+import org.eclipse.emf.common.util.EList;
+import org.emftext.language.java.JavaUniquePathConstructor;
+import org.emftext.language.java.util.UniqueEList;
+
+eclass ConcreteClassifier {
+
+ getAllInnerClassifiers() {
+ EList innerClassifierList = new UniqueEList();
+
+ innerClassifierList.addAll(getInnerClassifiers());
+
+ for (ConcreteClassifier superClassifier : getAllSuperClassifiers()) {
+ EList superInnerList = superClassifier
+ .getInnerClassifiers();
+
+ for (ConcreteClassifier superInner : superInnerList) {
+ if (superInner.eIsProxy()) {
+ superInner = (ConcreteClassifier) EcoreUtil.resolve(
+ superInner, this);
+ }
+ if (!superInner.isHidden(this)) {
+ innerClassifierList.add(superInner);
+ }
+ }
+ }
+ return innerClassifierList;
+ }
+
+ getInnerClassifiers() {
+ if (this.eIsProxy()) {
+ String uriString = ((InternalEObject)this).eProxyURI().trimFragment().toString();
+ String fullName = uriString.substring(JavaUniquePathConstructor.JAVA_CLASSIFIER_PATHMAP.length(),
+ uriString.length() - ".java".length()) + "$";
+ return getConcreteClassifierProxies(fullName, "*");
+ }
+ else {
+ String suffix = "";
+ ConcreteClassifier containingClass = this;
+ while (containingClass.eContainer() instanceof ConcreteClassifier) {
+ containingClass = (ConcreteClassifier) containingClass.eContainer();
+ suffix = containingClass.getName() + JavaUniquePathConstructor.CLASSIFIER_SEPARATOR + suffix;
+ }
+ if (containingClass.eContainer() instanceof CompilationUnit) {
+ CompilationUnit compilationUnit = (CompilationUnit) containingClass.eContainer();
+ String fullName = compilationUnit.getNamespacesAsString() + suffix +
+ getName() + JavaUniquePathConstructor.CLASSIFIER_SEPARATOR;
+ return getConcreteClassifierProxies(fullName, "*");
+ }
+ }
+
+ //for classes declared locally inside methods that are not registered in the class path
+ EList result = new UniqueEList();
+ //can not call ClassifierUtil.getAllMembers, because it will try to call this method!
+ for(Member member : getMembers()) {
+ if(member instanceof ConcreteClassifier) {
+ result.add((ConcreteClassifier) member);
+ }
+ }
+ for(ConcreteClassifier superClassifier : getAllSuperClassifiers()) {
+ for(Member member : superClassifier.getMembers()) {
+ if(member instanceof ConcreteClassifier) {
+ result.add((ConcreteClassifier) member);
+ }
+ }
+ }
+
+ return result;
+ }
+
+ getSuperTypeReferences() {
+ EList typeReferenceList = new UniqueEList();
+ if(this == null) {
+ return typeReferenceList;
+ }
+
+ if (this instanceof Class) {
+ Class javaClass = (Class) this;
+ if (javaClass.getExtends() != null) {
+ ClassifierReference classifierReference = javaClass.getExtends().getPureClassifierReference();
+ typeReferenceList.add(classifierReference);
+ ConcreteClassifier target = (ConcreteClassifier) classifierReference.getTarget();
+ if (!target.equals(getObjectClass())) {
+ typeReferenceList.addAll(target.getSuperTypeReferences());
+ }
+ }
+ for(TypeReference interfaceReference : javaClass.getImplements()) {
+ ClassifierReference classifierReference = interfaceReference.getPureClassifierReference();
+ typeReferenceList.add(classifierReference);
+ typeReferenceList.addAll(((ConcreteClassifier) classifierReference.getTarget()).getSuperTypeReferences());
+ }
+ } else if (this instanceof Interface) {
+ Interface javaInterface = (Interface) this;
+ for(TypeReference interfaceReference : javaInterface.getExtends()) {
+ ClassifierReference classifierReference = interfaceReference.getPureClassifierReference();
+ typeReferenceList.add(classifierReference);
+ typeReferenceList.addAll(((ConcreteClassifier) classifierReference.getTarget()).getSuperTypeReferences());
+ }
+ }
+ return typeReferenceList;
+ }
+
+ /**
+ * Returns all members of the given classifier including inner classes and
+ * all members of super types (extended classes and implemented interfaces).
+ *
+ * @param context to check protected visibility
+ * @return member list
+ */
+ getAllMembers() {
+ EList memberList = new UniqueEList();
+
+ ConcreteClassifier concreteClassifier = (ConcreteClassifier) this;
+ memberList.addAll(concreteClassifier.getMembers());
+ memberList.addAll(concreteClassifier.getDefaultMembers());
+ //because inner classes are found in separate class files
+ memberList.addAll(concreteClassifier.getAllInnerClassifiers());
+
+ for (ConcreteClassifier superClassifier : getAllSuperClassifiers()) {
+ for(Member member : superClassifier.getMembers()) {
+ if(member instanceof AnnotableAndModifiable) {
+ AnnotableAndModifiable modifiable = (AnnotableAndModifiable) member;
+
+ if(!modifiable.isHidden(context)) {
+ memberList.add(member);
+ }
+ }
+ else {
+ memberList.add(member);
+ }
+ }
+ memberList.addAll(superClassifier.getDefaultMembers());
+ }
+ return memberList;
+ }
+
+ /**
+ * Returns the qualified name of this concrete classifier.
+ */
+ getQualifiedName() {
+
+ StringBuilder qualifiedName = new StringBuilder();
+ List packageParts = getContainingPackageName();
+ for (String packagePart : packageParts) {
+ qualifiedName.append(packagePart);
+ qualifiedName.append(".");
+ }
+ qualifiedName.append(getName());
+ return qualifiedName.toString();
+ }
+}
diff --git a/Core/org.emftext.language.java/metamodel/java/classifiers/Enumeration.ejava b/Core/org.emftext.language.java/metamodel/java/classifiers/Enumeration.ejava
index 2b34c64a..aac6cd19 100644
--- a/Core/org.emftext.language.java/metamodel/java/classifiers/Enumeration.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/classifiers/Enumeration.ejava
@@ -1,47 +1,47 @@
-epackage java.classifiers;
-
-//ecore
-import java.types.TypeReference;
-import java.members.EnumConstant;
-
-//java
-import org.emftext.language.java.util.UniqueEList;
-import org.eclipse.emf.common.util.EList;
-
-eclass Enumeration {
-
- /**
- * @return all interfaces extended by this enumeration.
- */
- getAllSuperClassifiers() {
- EList result = new UniqueEList();
-
- //enumerations inherit from java.lang.Enum
- Class enumClass = getLibClass("Enum");
- result.add(enumClass);
- result.addAll(enumClass.getAllSuperClassifiers());
-
- //collect all implemented interfaces
- for (TypeReference typeArg : this.getImplements()) {
- ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
- if (superInterface != null) {
- result.add(superInterface);
- if (superInterface instanceof Interface) {
- result.addAll(((Interface)superInterface).getAllSuperClassifiers());
- }
- }
- }
-
- return result;
- }
-
- getContainedConstant() {
- for(EnumConstant constant : getConstants()) {
- if (name.equals(constant.getName())) {
- return constant;
- }
- }
- return null;
- }
-
+epackage java.classifiers;
+
+//ecore
+import java.types.TypeReference;
+import java.members.EnumConstant;
+
+//java
+import org.emftext.language.java.util.UniqueEList;
+import org.eclipse.emf.common.util.EList;
+
+eclass Enumeration {
+
+ /**
+ * @return all interfaces extended by this enumeration.
+ */
+ getAllSuperClassifiers() {
+ EList result = new UniqueEList();
+
+ //enumerations inherit from java.lang.Enum
+ Class enumClass = getLibClass("Enum");
+ result.add(enumClass);
+ result.addAll(enumClass.getAllSuperClassifiers());
+
+ //collect all implemented interfaces
+ for (TypeReference typeArg : this.getImplements()) {
+ ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
+ if (superInterface != null) {
+ result.add(superInterface);
+ if (superInterface instanceof Interface) {
+ result.addAll(((Interface)superInterface).getAllSuperClassifiers());
+ }
+ }
+ }
+
+ return result;
+ }
+
+ getContainedConstant() {
+ for(EnumConstant constant : getConstants()) {
+ if (name.equals(constant.getName())) {
+ return constant;
+ }
+ }
+ return null;
+ }
+
}
\ No newline at end of file
diff --git a/Core/org.emftext.language.java/metamodel/java/classifiers/Interface.ejava b/Core/org.emftext.language.java/metamodel/java/classifiers/Interface.ejava
index e2ed14ab..2b2d947b 100644
--- a/Core/org.emftext.language.java/metamodel/java/classifiers/Interface.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/classifiers/Interface.ejava
@@ -1,45 +1,45 @@
-epackage java.classifiers;
-
-//ecore
-import java.types.TypeReference;
-
-//java
-import org.emftext.language.java.util.UniqueEList;
-import org.eclipse.emf.common.util.ECollections;
-import org.eclipse.emf.common.util.EList;
-
-eclass Interface {
-
- /**
- * @return all interfaces extended by this interface. The type is
- * ConcreteClassifier, because java.lang.Object is also extended although
- * it is a Class.
- */
- getAllSuperClassifiers() {
- EList result = new UniqueEList();
-
- for (TypeReference typeArg : this.getExtends()) {
- //use ConcreteClassifier instead of Interface because java.lang.Object can also act as implemented interface
- ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
- if (superInterface != null) {
- result.add(superInterface);
- if (superInterface instanceof Interface) {
- result.addAll(((Interface)superInterface).getAllSuperClassifiers());
- }
- }
- }
-
- for (TypeReference typeArg : this.getDefaultExtends()) {
- //use ConcreteClassifier instead of Interface because java.lang.Object can also act as implemented interface
- ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
- if (superInterface != null) {
- result.add(superInterface);
- if (superInterface instanceof Interface) {
- result.addAll(((Interface)superInterface).getAllSuperClassifiers());
- }
- }
- }
- return result;
- }
-
+epackage java.classifiers;
+
+//ecore
+import java.types.TypeReference;
+
+//java
+import org.emftext.language.java.util.UniqueEList;
+import org.eclipse.emf.common.util.ECollections;
+import org.eclipse.emf.common.util.EList;
+
+eclass Interface {
+
+ /**
+ * @return all interfaces extended by this interface. The type is
+ * ConcreteClassifier, because java.lang.Object is also extended although
+ * it is a Class.
+ */
+ getAllSuperClassifiers() {
+ EList result = new UniqueEList();
+
+ for (TypeReference typeArg : this.getExtends()) {
+ //use ConcreteClassifier instead of Interface because java.lang.Object can also act as implemented interface
+ ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
+ if (superInterface != null) {
+ result.add(superInterface);
+ if (superInterface instanceof Interface) {
+ result.addAll(((Interface)superInterface).getAllSuperClassifiers());
+ }
+ }
+ }
+
+ for (TypeReference typeArg : this.getDefaultExtends()) {
+ //use ConcreteClassifier instead of Interface because java.lang.Object can also act as implemented interface
+ ConcreteClassifier superInterface = (ConcreteClassifier) typeArg.getTarget();
+ if (superInterface != null) {
+ result.add(superInterface);
+ if (superInterface instanceof Interface) {
+ result.addAll(((Interface)superInterface).getAllSuperClassifiers());
+ }
+ }
+ }
+ return result;
+ }
+
}
\ No newline at end of file
diff --git a/Core/org.emftext.language.java/metamodel/java/commons/Commentable.ejava b/Core/org.emftext.language.java/metamodel/java/commons/Commentable.ejava
index bc9cbbf8..e02b1fec 100644
--- a/Core/org.emftext.language.java/metamodel/java/commons/Commentable.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/commons/Commentable.ejava
@@ -1,419 +1,419 @@
-epackage java.commons;
-
-//Java
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.ECollections;
-import org.emftext.language.java.util.UniqueEList;
-import org.eclipse.emf.common.util.BasicEList;
-import org.emftext.language.java.JavaClasspath;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-//ecore
-import java.classifiers.AnonymousClass;
-import java.classifiers.Class;
-import java.classifiers.Classifier;
-import java.classifiers.ConcreteClassifier;
-import java.classifiers.Interface;
-import java.containers.CompilationUnit;
-import java.annotations.AnnotationInstance;
-import java.modifiers.AnnotableAndModifiable;
-import java.modifiers.AnnotationInstanceOrModifier;
-import java.statements.Statement;
-import java.statements.StatementListContainer;
-
-import layout.LayoutInformation;
-
-eclass Commentable {
-
- /**
- * Adds the given statement before the statement that contains this element.
- */
- /* void */ addBeforeContainingStatement(/* Statement statementToAdd */) {
- EObject container = this.eContainer();
- EObject statement = this;
- while (container != null) {
- if (container instanceof StatementListContainer) {
- break;
- }
- container = container.eContainer();
- statement = statement.eContainer();
- }
- if (container == null) {
- throw new IllegalArgumentException("Element " + this + " is not contained in a StatementListContainer.");
- }
- StatementListContainer statementListContainer = (StatementListContainer) container;
- EList statements = statementListContainer.getStatements();
- int index = statements.indexOf(statement);
-
- statements.add(index, statementToAdd);
- }
-
- /**
- * Adds the given statement after the statement that contains this element.
- */
- /* void */ addAfterContainingStatement(/* Statement statementToAdd */) {
- EObject container = this.eContainer();
- EObject statement = this;
- while (container != null) {
- if (container instanceof StatementListContainer) {
- break;
- }
- container = container.eContainer();
- statement = statement.eContainer();
- }
- if (container == null) {
- throw new IllegalArgumentException("Element " + this + " is not contained in a StatementListContainer.");
- }
- StatementListContainer statementListContainer = (StatementListContainer) container;
- EList statements = statementListContainer.getStatements();
- int index = statements.indexOf(statement);
-
- if (index == statements.size() - 1) {
- // statement is the last one
- statements.add(statementToAdd);
- } else {
- statements.add(index + 1, statementToAdd);
- }
- }
-
- /**
- * Walks up the containment hierarchy and returns the first parent with the
- * given type. If no such parent is found, null is returned.
- */
- getParentByEType() {
- EObject container = this.eContainer();
- while (container != null) {
- if (type.isInstance(container)) {
- return container;
- }
- container = container.eContainer();
- }
- return null;
- }
-
- /**
- * Walks up the containment hierarchy and returns the first parent with the
- * given type. If no such parent is found, null is returned.
- */
- getParentByType() {
- EObject container = this.eContainer();
- while (container != null) {
- if (type.isInstance(container)) {
- return type.cast(container);
- }
- container = container.eContainer();
- }
- return null;
- }
-
- /**
- * Searches for the first child with the given type. If no such child is found, null is returned.
- */
- getFirstChildByEType() {
- Iterator it = this.eAllContents();
- while (it.hasNext()) {
- EObject next = it.next();
- if (type.isInstance(next)) {
- return next;
- }
- }
- return null;
- }
-
- /**
- * Searches for the first child with the given type. If no such child is found, null is returned.
- */
- getFirstChildByType() {
- Iterator it = this.eAllContents();
- while (it.hasNext()) {
- EObject next = it.next();
- if (type.isInstance(next)) {
- return type.cast(next);
- }
- }
- return null;
- }
-
- /**
- * Returns all children of the given type.
- */
- getChildrenByEType() {
- EList children = new BasicEList();
- Iterator it = this.eAllContents();
- while (it.hasNext()) {
- EObject next = it.next();
- if (type.isInstance(next)) {
- children.add(next);
- }
- }
- return children;
- }
-
- /**
- * Returns all children of the given type.
- */
- getChildrenByType() {
- EList children = new BasicEList();
- Iterator it = this.eAllContents();
- while (it.hasNext()) {
- EObject next = it.next();
- if (type.isInstance(next)) {
- children.add(type.cast(next));
- }
- }
- return children;
- }
-
- /**
- * Finds the org.emftext.language.java.classifiers.ConcreteClassifier
- * representing the class with the given classified name.
- *
- * @param name classified name of the ConcreteClassifier
- */
- getConcreteClassifier() {
- return (ConcreteClassifier) EcoreUtil.resolve(
- JavaClasspath.get(this).getClassifier(name), this);
- }
-
- /**
- * Finds all org.emftext.language.java.classifiers.ConcreteClassifier
- * representing the classes in the given package or a single class from that package.
- *
- * @param packageName name of the package
- * @param classifierQuery * for all classifiers or name of a single classifier
- */
- getConcreteClassifiers() {
- EList result = new UniqueEList();
- for(EObject classifier : JavaClasspath.get(this).getClassifiers(packageName, classifierQuery)) {
- result.add((ConcreteClassifier) EcoreUtil.resolve(classifier, this));
- }
- return result;
- }
-
- getConcreteClassifierProxy() {
- return (ConcreteClassifier) JavaClasspath.get(this).getClassifier(name);
- }
-
- getConcreteClassifierProxies() {
- EList result = new UniqueEList();
- for(EObject classifier : JavaClasspath.get(this).getClassifiers(packageName, classifierQuery)) {
- result.add((ConcreteClassifier)classifier);
- }
- return result;
- }
-
- /**
- * Finds the org.emftext.language.java.classifiers.Class
- * representing the class with the given name located in java.lang
.
- *
- * @param name name of the Class
- * @return the Class
- */
- getLibClass() {
- Class classClass = (Class) getConcreteClassifierProxy(
- "java.lang." + name);
- EObject resolved = (ConcreteClassifier) EcoreUtil.resolve(classClass, this);
- if (resolved instanceof Class) {
- return (Class) resolved;
- }
- return null;
- }
-
- /**
- * Finds the org.emftext.language.java.classifiers.Interface
- * representing the interface with the given name located in java.lang
.
- *
- * @param name name of the Interface
- * @return the Class
- */
- getLibInterface() {
- ConcreteClassifier interfaceClass = getConcreteClassifierProxy(
- "java.lang." + name);
- EObject resolved = EcoreUtil.resolve(interfaceClass, this);
- if (resolved instanceof Interface) {
- return (Interface) resolved;
- }
- return null;
- }
-
- /**
- * Finds the org.emftext.language.java.classifiers.Class
- * representing java.lang.Class
.
- *
- * @return the Class
- */
- getClassClass() {
- return getLibClass("Class");
- }
-
- /**
- * Finds the org.emftext.language.java.classifiers.Class
- * representing java.lang.Object
.
- *
- * @return the Class
- */
- getObjectClass() {
- return getLibClass("Object");
- }
-
- /**
- * Finds the org.emftext.language.java.classifiers.Class
- * representing java.lang.String
.
- *
- * @return the Class
- */
- getStringClass() {
- return getLibClass("String");
- }
-
- /**
- * Finds the org.emftext.language.java.classifiers.Interface
- * representing java.lang.annotation.Annotation
.
- *
- * @return the Class
- */
- getAnnotationInterface() {
- Interface annotationClass = (Interface) EcoreUtil.resolve(
- getConcreteClassifierProxy("java.lang.annotation.Annotation"), this);
- EObject resolved = EcoreUtil.resolve(annotationClass, this);
- if (resolved instanceof Interface) {
- return (Interface) resolved;
- }
- return null;
- }
-
- //===== Container look up =====
-
- /**
- * Finds the containing classifier for the given element.
- *
- * @param value
- * @return containing classifier
- */
- getContainingConcreteClassifier() {
- EObject value = this;
- while (!(value instanceof ConcreteClassifier) && value != null) {
- value = value.eContainer();
- }
- return (ConcreteClassifier) value;
- }
-
- /**
- * Finds the classifier that is the parent of this element. If
- * this element is an inner classifier the parent classifier does
- * not necessarily contain this element, since it can reside in
- * a different compilation unit when stored in byte code.
- *
- * @param value
- * @return containing classifier
- */
- getParentConcreteClassifier() {
- ConcreteClassifier classifier = getContainingConcreteClassifier();
- if(classifier == null) {
- CompilationUnit cu = getContainingCompilationUnit();
- //maybe the outer classifier is in an extra cu
- if (cu != null && cu.getName() != null && cu.getName().contains("$")) {
- classifier = (ConcreteClassifier) EcoreUtil.resolve(
- getConcreteClassifierProxy(cu.getNamespacesAsString()), this);
- if(classifier.eIsProxy()) {
- classifier = null;
- }
- }
- }
- return classifier;
- }
-
- /**
- * Finds the containing anonymous class for the given element.
- *
- * @param value
- * @return containing anonymous class
- */
- getContainingAnonymousClass() {
- EObject value = this;
- while (!(value instanceof AnonymousClass)
- && !(value instanceof ConcreteClassifier) //do not jump over other classifiers
- && value != null) {
- value = value.eContainer();
- }
- if (!(value instanceof AnonymousClass)) {
- return null;
- }
- return (AnonymousClass) value;
- }
-
- /**
- * Finds the containing compilation unit for the given element.
- *
- * @param value
- * @return containing compilation unit
- */
- getContainingCompilationUnit() {
- EObject value = this;
- while (!(value instanceof CompilationUnit) && value != null) {
- value = value.eContainer();
- }
- return (CompilationUnit) value;
- }
-
- /**
- * Finds the containing annotation instance for the given element.
- *
- * @param value
- * @return containing annotation instance
- */
- getContainingAnnotationInstance() {
- EObject value = this;
- while (!(value instanceof AnnotationInstance) && value != null) {
- value = value.eContainer();
- }
- return (AnnotationInstance) value;
- }
-
- getContainingPackageName() {
- CompilationUnit cu = getContainingCompilationUnit();
- if (cu == null) {
- return null;
- }
-
- int idx = cu.getNamespaces().size();
- if(cu.getName() != null) {
- char[] fullName = cu.getName().toCharArray();
- for(int i = 0; i < fullName.length; i++) {
- if (fullName[i] == '$') {
- idx--;
- }
- }
- }
- return ECollections.unmodifiableEList(new BasicEList(
- cu.getNamespaces().subList(0, idx)));
- }
-
- getContainingContainerName() {
- CompilationUnit cu = getContainingCompilationUnit();
- if (cu == null) {
- return null;
- }
- return ECollections.unmodifiableEList(cu.getNamespaces());
- }
-
- getComments() {
- EList comments = new BasicEList();
- if (this instanceof AnnotableAndModifiable) {
- for (AnnotationInstanceOrModifier aom : ((AnnotableAndModifiable) this).getAnnotationsAndModifiers()) {
- comments.addAll(aom.getComments());
- }
- }
- for (LayoutInformation layoutInformation : getLayoutInformations()) {
- String text = layoutInformation.getHiddenTokenText();
- if (text.contains("/*") || text.contains("//")) {
- comments.add(layoutInformation.getHiddenTokenText().trim());
- }
- }
- return ECollections.unmodifiableEList(comments);
- }
-}
+epackage java.commons;
+
+//Java
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.ECollections;
+import org.emftext.language.java.util.UniqueEList;
+import org.eclipse.emf.common.util.BasicEList;
+import org.emftext.language.java.JavaClasspath;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+//ecore
+import java.classifiers.AnonymousClass;
+import java.classifiers.Class;
+import java.classifiers.Classifier;
+import java.classifiers.ConcreteClassifier;
+import java.classifiers.Interface;
+import java.containers.CompilationUnit;
+import java.annotations.AnnotationInstance;
+import java.modifiers.AnnotableAndModifiable;
+import java.modifiers.AnnotationInstanceOrModifier;
+import java.statements.Statement;
+import java.statements.StatementListContainer;
+
+import layout.LayoutInformation;
+
+eclass Commentable {
+
+ /**
+ * Adds the given statement before the statement that contains this element.
+ */
+ /* void */ addBeforeContainingStatement(/* Statement statementToAdd */) {
+ EObject container = this.eContainer();
+ EObject statement = this;
+ while (container != null) {
+ if (container instanceof StatementListContainer) {
+ break;
+ }
+ container = container.eContainer();
+ statement = statement.eContainer();
+ }
+ if (container == null) {
+ throw new IllegalArgumentException("Element " + this + " is not contained in a StatementListContainer.");
+ }
+ StatementListContainer statementListContainer = (StatementListContainer) container;
+ EList statements = statementListContainer.getStatements();
+ int index = statements.indexOf(statement);
+
+ statements.add(index, statementToAdd);
+ }
+
+ /**
+ * Adds the given statement after the statement that contains this element.
+ */
+ /* void */ addAfterContainingStatement(/* Statement statementToAdd */) {
+ EObject container = this.eContainer();
+ EObject statement = this;
+ while (container != null) {
+ if (container instanceof StatementListContainer) {
+ break;
+ }
+ container = container.eContainer();
+ statement = statement.eContainer();
+ }
+ if (container == null) {
+ throw new IllegalArgumentException("Element " + this + " is not contained in a StatementListContainer.");
+ }
+ StatementListContainer statementListContainer = (StatementListContainer) container;
+ EList statements = statementListContainer.getStatements();
+ int index = statements.indexOf(statement);
+
+ if (index == statements.size() - 1) {
+ // statement is the last one
+ statements.add(statementToAdd);
+ } else {
+ statements.add(index + 1, statementToAdd);
+ }
+ }
+
+ /**
+ * Walks up the containment hierarchy and returns the first parent with the
+ * given type. If no such parent is found, null is returned.
+ */
+ getParentByEType() {
+ EObject container = this.eContainer();
+ while (container != null) {
+ if (type.isInstance(container)) {
+ return container;
+ }
+ container = container.eContainer();
+ }
+ return null;
+ }
+
+ /**
+ * Walks up the containment hierarchy and returns the first parent with the
+ * given type. If no such parent is found, null is returned.
+ */
+ getParentByType() {
+ EObject container = this.eContainer();
+ while (container != null) {
+ if (type.isInstance(container)) {
+ return type.cast(container);
+ }
+ container = container.eContainer();
+ }
+ return null;
+ }
+
+ /**
+ * Searches for the first child with the given type. If no such child is found, null is returned.
+ */
+ getFirstChildByEType() {
+ Iterator it = this.eAllContents();
+ while (it.hasNext()) {
+ EObject next = it.next();
+ if (type.isInstance(next)) {
+ return next;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Searches for the first child with the given type. If no such child is found, null is returned.
+ */
+ getFirstChildByType() {
+ Iterator it = this.eAllContents();
+ while (it.hasNext()) {
+ EObject next = it.next();
+ if (type.isInstance(next)) {
+ return type.cast(next);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns all children of the given type.
+ */
+ getChildrenByEType() {
+ EList children = new BasicEList();
+ Iterator it = this.eAllContents();
+ while (it.hasNext()) {
+ EObject next = it.next();
+ if (type.isInstance(next)) {
+ children.add(next);
+ }
+ }
+ return children;
+ }
+
+ /**
+ * Returns all children of the given type.
+ */
+ getChildrenByType() {
+ EList children = new BasicEList();
+ Iterator it = this.eAllContents();
+ while (it.hasNext()) {
+ EObject next = it.next();
+ if (type.isInstance(next)) {
+ children.add(type.cast(next));
+ }
+ }
+ return children;
+ }
+
+ /**
+ * Finds the org.emftext.language.java.classifiers.ConcreteClassifier
+ * representing the class with the given classified name.
+ *
+ * @param name classified name of the ConcreteClassifier
+ */
+ getConcreteClassifier() {
+ return (ConcreteClassifier) EcoreUtil.resolve(
+ JavaClasspath.get(this).getClassifier(name), this);
+ }
+
+ /**
+ * Finds all org.emftext.language.java.classifiers.ConcreteClassifier
+ * representing the classes in the given package or a single class from that package.
+ *
+ * @param packageName name of the package
+ * @param classifierQuery * for all classifiers or name of a single classifier
+ */
+ getConcreteClassifiers() {
+ EList result = new UniqueEList();
+ for(EObject classifier : JavaClasspath.get(this).getClassifiers(packageName, classifierQuery)) {
+ result.add((ConcreteClassifier) EcoreUtil.resolve(classifier, this));
+ }
+ return result;
+ }
+
+ getConcreteClassifierProxy() {
+ return (ConcreteClassifier) JavaClasspath.get(this).getClassifier(name);
+ }
+
+ getConcreteClassifierProxies() {
+ EList result = new UniqueEList();
+ for(EObject classifier : JavaClasspath.get(this).getClassifiers(packageName, classifierQuery)) {
+ result.add((ConcreteClassifier)classifier);
+ }
+ return result;
+ }
+
+ /**
+ * Finds the org.emftext.language.java.classifiers.Class
+ * representing the class with the given name located in java.lang
.
+ *
+ * @param name name of the Class
+ * @return the Class
+ */
+ getLibClass() {
+ Class classClass = (Class) getConcreteClassifierProxy(
+ "java.lang." + name);
+ EObject resolved = (ConcreteClassifier) EcoreUtil.resolve(classClass, this);
+ if (resolved instanceof Class) {
+ return (Class) resolved;
+ }
+ return null;
+ }
+
+ /**
+ * Finds the org.emftext.language.java.classifiers.Interface
+ * representing the interface with the given name located in java.lang
.
+ *
+ * @param name name of the Interface
+ * @return the Class
+ */
+ getLibInterface() {
+ ConcreteClassifier interfaceClass = getConcreteClassifierProxy(
+ "java.lang." + name);
+ EObject resolved = EcoreUtil.resolve(interfaceClass, this);
+ if (resolved instanceof Interface) {
+ return (Interface) resolved;
+ }
+ return null;
+ }
+
+ /**
+ * Finds the org.emftext.language.java.classifiers.Class
+ * representing java.lang.Class
.
+ *
+ * @return the Class
+ */
+ getClassClass() {
+ return getLibClass("Class");
+ }
+
+ /**
+ * Finds the org.emftext.language.java.classifiers.Class
+ * representing java.lang.Object
.
+ *
+ * @return the Class
+ */
+ getObjectClass() {
+ return getLibClass("Object");
+ }
+
+ /**
+ * Finds the org.emftext.language.java.classifiers.Class
+ * representing java.lang.String
.
+ *
+ * @return the Class
+ */
+ getStringClass() {
+ return getLibClass("String");
+ }
+
+ /**
+ * Finds the org.emftext.language.java.classifiers.Interface
+ * representing java.lang.annotation.Annotation
.
+ *
+ * @return the Class
+ */
+ getAnnotationInterface() {
+ Interface annotationClass = (Interface) EcoreUtil.resolve(
+ getConcreteClassifierProxy("java.lang.annotation.Annotation"), this);
+ EObject resolved = EcoreUtil.resolve(annotationClass, this);
+ if (resolved instanceof Interface) {
+ return (Interface) resolved;
+ }
+ return null;
+ }
+
+ //===== Container look up =====
+
+ /**
+ * Finds the containing classifier for the given element.
+ *
+ * @param value
+ * @return containing classifier
+ */
+ getContainingConcreteClassifier() {
+ EObject value = this;
+ while (!(value instanceof ConcreteClassifier) && value != null) {
+ value = value.eContainer();
+ }
+ return (ConcreteClassifier) value;
+ }
+
+ /**
+ * Finds the classifier that is the parent of this element. If
+ * this element is an inner classifier the parent classifier does
+ * not necessarily contain this element, since it can reside in
+ * a different compilation unit when stored in byte code.
+ *
+ * @param value
+ * @return containing classifier
+ */
+ getParentConcreteClassifier() {
+ ConcreteClassifier classifier = getContainingConcreteClassifier();
+ if(classifier == null) {
+ CompilationUnit cu = getContainingCompilationUnit();
+ //maybe the outer classifier is in an extra cu
+ if (cu != null && cu.getName() != null && cu.getName().contains("$")) {
+ classifier = (ConcreteClassifier) EcoreUtil.resolve(
+ getConcreteClassifierProxy(cu.getNamespacesAsString()), this);
+ if(classifier.eIsProxy()) {
+ classifier = null;
+ }
+ }
+ }
+ return classifier;
+ }
+
+ /**
+ * Finds the containing anonymous class for the given element.
+ *
+ * @param value
+ * @return containing anonymous class
+ */
+ getContainingAnonymousClass() {
+ EObject value = this;
+ while (!(value instanceof AnonymousClass)
+ && !(value instanceof ConcreteClassifier) //do not jump over other classifiers
+ && value != null) {
+ value = value.eContainer();
+ }
+ if (!(value instanceof AnonymousClass)) {
+ return null;
+ }
+ return (AnonymousClass) value;
+ }
+
+ /**
+ * Finds the containing compilation unit for the given element.
+ *
+ * @param value
+ * @return containing compilation unit
+ */
+ getContainingCompilationUnit() {
+ EObject value = this;
+ while (!(value instanceof CompilationUnit) && value != null) {
+ value = value.eContainer();
+ }
+ return (CompilationUnit) value;
+ }
+
+ /**
+ * Finds the containing annotation instance for the given element.
+ *
+ * @param value
+ * @return containing annotation instance
+ */
+ getContainingAnnotationInstance() {
+ EObject value = this;
+ while (!(value instanceof AnnotationInstance) && value != null) {
+ value = value.eContainer();
+ }
+ return (AnnotationInstance) value;
+ }
+
+ getContainingPackageName() {
+ CompilationUnit cu = getContainingCompilationUnit();
+ if (cu == null) {
+ return null;
+ }
+
+ int idx = cu.getNamespaces().size();
+ if(cu.getName() != null) {
+ char[] fullName = cu.getName().toCharArray();
+ for(int i = 0; i < fullName.length; i++) {
+ if (fullName[i] == '$') {
+ idx--;
+ }
+ }
+ }
+ return ECollections.unmodifiableEList(new BasicEList(
+ cu.getNamespaces().subList(0, idx)));
+ }
+
+ getContainingContainerName() {
+ CompilationUnit cu = getContainingCompilationUnit();
+ if (cu == null) {
+ return null;
+ }
+ return ECollections.unmodifiableEList(cu.getNamespaces());
+ }
+
+ getComments() {
+ EList comments = new BasicEList();
+ if (this instanceof AnnotableAndModifiable) {
+ for (AnnotationInstanceOrModifier aom : ((AnnotableAndModifiable) this).getAnnotationsAndModifiers()) {
+ comments.addAll(aom.getComments());
+ }
+ }
+ for (LayoutInformation layoutInformation : getLayoutInformations()) {
+ String text = layoutInformation.getHiddenTokenText();
+ if (text.contains("/*") || text.contains("//")) {
+ comments.add(layoutInformation.getHiddenTokenText().trim());
+ }
+ }
+ return ECollections.unmodifiableEList(comments);
+ }
+}
diff --git a/Core/org.emftext.language.java/metamodel/java/commons/NamespaceAwareElement.ejava b/Core/org.emftext.language.java/metamodel/java/commons/NamespaceAwareElement.ejava
index ae42cf54..50f0d4dc 100644
--- a/Core/org.emftext.language.java/metamodel/java/commons/NamespaceAwareElement.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/commons/NamespaceAwareElement.ejava
@@ -1,72 +1,72 @@
-epackage java.commons;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import org.emftext.language.java.*;
-import org.eclipse.emf.ecore.util.*;
-
-import java.classifiers.ConcreteClassifier;
-
-eclass NamespaceAwareElement {
-
- /**
- * Converts the namespaces array of the given namespace aware element into
- * a String representation using package (.) and class ($) delimiters. The method
- * uses the classpath to determine for each element of the namespace if it
- * identifies a package or a class.
- *
- * @param naElement
- * @return single string representation of namespace
- */
- getNamespacesAsString() {
- String containerName = "";
- for(Iterator it = getNamespaces().iterator(); it.hasNext(); ) {
- String namespaceFragment = it.next();
- //does it point at a classifier or a package as container?
- String assumedPackageName = containerName + namespaceFragment + JavaUniquePathConstructor.PACKAGE_SEPARATOR;
- String assumedClassifierName = containerName + namespaceFragment + JavaUniquePathConstructor.CLASSIFIER_SEPARATOR;
-
- if (it.hasNext()) {
- if (JavaClasspath.get(this).existsPackage(assumedClassifierName)) {
- containerName = assumedClassifierName;
- }
- else {
- //assume package
- containerName = assumedPackageName;
- }
- }
- else {
- if (JavaClasspath.get(this).existsPackage(assumedPackageName)) {
- //a package is always available as key
- containerName = assumedPackageName;
- }
- else {
- //assume classifier that is not key, but value in the map
- containerName = assumedClassifierName;
- }
- }
- }
-
- return containerName;
- }
-
- /**
- * Assuming the namespace
- * identifies a classifier, that classifier is returned.
- *
- * @return classifier at namespace
- */
- getClassifierAtNamespaces() {
- String fullQualifiedName = getNamespacesAsString();
- if (fullQualifiedName == null || fullQualifiedName.endsWith(JavaUniquePathConstructor.PACKAGE_SEPARATOR)) {
- return null;
- }
- //cut the trailing separator
- fullQualifiedName = fullQualifiedName.substring(0,fullQualifiedName.length() - 1);
-
- return (ConcreteClassifier) EcoreUtil.resolve(
- getConcreteClassifierProxy(fullQualifiedName), this);
- }
-
+epackage java.commons;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.emftext.language.java.*;
+import org.eclipse.emf.ecore.util.*;
+
+import java.classifiers.ConcreteClassifier;
+
+eclass NamespaceAwareElement {
+
+ /**
+ * Converts the namespaces array of the given namespace aware element into
+ * a String representation using package (.) and class ($) delimiters. The method
+ * uses the classpath to determine for each element of the namespace if it
+ * identifies a package or a class.
+ *
+ * @param naElement
+ * @return single string representation of namespace
+ */
+ getNamespacesAsString() {
+ String containerName = "";
+ for(Iterator it = getNamespaces().iterator(); it.hasNext(); ) {
+ String namespaceFragment = it.next();
+ //does it point at a classifier or a package as container?
+ String assumedPackageName = containerName + namespaceFragment + JavaUniquePathConstructor.PACKAGE_SEPARATOR;
+ String assumedClassifierName = containerName + namespaceFragment + JavaUniquePathConstructor.CLASSIFIER_SEPARATOR;
+
+ if (it.hasNext()) {
+ if (JavaClasspath.get(this).existsPackage(assumedClassifierName)) {
+ containerName = assumedClassifierName;
+ }
+ else {
+ //assume package
+ containerName = assumedPackageName;
+ }
+ }
+ else {
+ if (JavaClasspath.get(this).existsPackage(assumedPackageName)) {
+ //a package is always available as key
+ containerName = assumedPackageName;
+ }
+ else {
+ //assume classifier that is not key, but value in the map
+ containerName = assumedClassifierName;
+ }
+ }
+ }
+
+ return containerName;
+ }
+
+ /**
+ * Assuming the namespace
+ * identifies a classifier, that classifier is returned.
+ *
+ * @return classifier at namespace
+ */
+ getClassifierAtNamespaces() {
+ String fullQualifiedName = getNamespacesAsString();
+ if (fullQualifiedName == null || fullQualifiedName.endsWith(JavaUniquePathConstructor.PACKAGE_SEPARATOR)) {
+ return null;
+ }
+ //cut the trailing separator
+ fullQualifiedName = fullQualifiedName.substring(0,fullQualifiedName.length() - 1);
+
+ return (ConcreteClassifier) EcoreUtil.resolve(
+ getConcreteClassifierProxy(fullQualifiedName), this);
+ }
+
}
\ No newline at end of file
diff --git a/Core/org.emftext.language.java/metamodel/java/containers/CompilationUnit.ejava b/Core/org.emftext.language.java/metamodel/java/containers/CompilationUnit.ejava
index 24b70116..731fe709 100644
--- a/Core/org.emftext.language.java/metamodel/java/containers/CompilationUnit.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/containers/CompilationUnit.ejava
@@ -1,123 +1,123 @@
-epackage java.containers;
-
-import java.classifiers.ConcreteClassifier;
-import java.classifiers.Class;
-import java.classifiers.Interface;
-import java.classifiers.Annotation;
-import java.classifiers.Enumeration;
-import java.containers.*;
-import java.imports.*;
-
-import org.eclipse.emf.common.util.EList;
-import org.emftext.language.java.util.UniqueEList;
-
-eclass CompilationUnit {
-
- /**
- * @param name name of the contained Classifier
- * @return the Classifier
- */
- getContainedClassifier() {
- if (name == null) {
- return null;
- }
- for(ConcreteClassifier candidate : getClassifiers()) {
- if(name.equals(candidate.getName())) {
- return candidate;
- }
- }
- return null;
- }
-
- /**
- * @return all classes in the same package imports
- */
- getClassifiersInSamePackage() {
- EList defaultImportList = new UniqueEList();
-
- String packageName = getNamespacesAsString();
-
- //locally defined in this container
- defaultImportList.addAll(getClassifiers());
-
- defaultImportList.addAll(getConcreteClassifierProxies(
- packageName, "*"));
-
- return defaultImportList;
- }
-
- /**
- * @return the only class contained directly in the compilation unit (if one exists)
- */
- getContainedClass() {
- if (getClassifiers().size() != 1) {
- return null;
- }
- if (getClassifiers().get(0) instanceof Class) {
- return (Class) getClassifiers().get(0);
- }
- return null;
- }
-
- /**
- * @return the only interface contained directly in the compilation unit (if one exists)
- */
- getContainedInterface() {
- if (getClassifiers().size() != 1) {
- return null;
- }
- if (getClassifiers().get(0) instanceof Interface) {
- return (Interface) getClassifiers().get(0);
- }
- return null;
- }
-
- /**
- * @return the only annotation contained directly in the compilation unit (if one exists)
- */
- getContainedAnnotation() {
- if (getClassifiers().size() != 1) {
- return null;
- }
- if (getClassifiers().get(0) instanceof Annotation) {
- return (Annotation) getClassifiers().get(0);
- }
- return null;
- }
-
- /**
- * @return the only enumeration contained directly in the compilation unit (if one exists)
- */
- getContainedEnumeration() {
- if (getClassifiers().size() != 1) {
- return null;
- }
- if (getClassifiers().get(0) instanceof Enumeration) {
- return (Enumeration) getClassifiers().get(0);
- }
- return null;
- }
-
-
- /**
- * Adds an import of the given class to this compilation unit.
- */
- addImport() {
- ClassifierImport import_ = #ClassifierImport;
- ConcreteClassifier classToImport = getConcreteClassifier(nameOfClassToImport);
- import_.setClassifier(classToImport);
- import_.getNamespaces().addAll(classToImport.getContainingCompilationUnit().getNamespaces());
- getImports().add(import_);
- }
-
- /**
- * Adds an import of the given package to this compilation unit.
- */
- addPackageImport() {
- PackageImport nsImport = #PackageImport;
- for (String name : packageName.split("\\.")) {
- nsImport.getNamespaces().add(name);
- }
- getImports().add(nsImport);
- }
-}
+epackage java.containers;
+
+import java.classifiers.ConcreteClassifier;
+import java.classifiers.Class;
+import java.classifiers.Interface;
+import java.classifiers.Annotation;
+import java.classifiers.Enumeration;
+import java.containers.*;
+import java.imports.*;
+
+import org.eclipse.emf.common.util.EList;
+import org.emftext.language.java.util.UniqueEList;
+
+eclass CompilationUnit {
+
+ /**
+ * @param name name of the contained Classifier
+ * @return the Classifier
+ */
+ getContainedClassifier() {
+ if (name == null) {
+ return null;
+ }
+ for(ConcreteClassifier candidate : getClassifiers()) {
+ if(name.equals(candidate.getName())) {
+ return candidate;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @return all classes in the same package imports
+ */
+ getClassifiersInSamePackage() {
+ EList defaultImportList = new UniqueEList();
+
+ String packageName = getNamespacesAsString();
+
+ //locally defined in this container
+ defaultImportList.addAll(getClassifiers());
+
+ defaultImportList.addAll(getConcreteClassifierProxies(
+ packageName, "*"));
+
+ return defaultImportList;
+ }
+
+ /**
+ * @return the only class contained directly in the compilation unit (if one exists)
+ */
+ getContainedClass() {
+ if (getClassifiers().size() != 1) {
+ return null;
+ }
+ if (getClassifiers().get(0) instanceof Class) {
+ return (Class) getClassifiers().get(0);
+ }
+ return null;
+ }
+
+ /**
+ * @return the only interface contained directly in the compilation unit (if one exists)
+ */
+ getContainedInterface() {
+ if (getClassifiers().size() != 1) {
+ return null;
+ }
+ if (getClassifiers().get(0) instanceof Interface) {
+ return (Interface) getClassifiers().get(0);
+ }
+ return null;
+ }
+
+ /**
+ * @return the only annotation contained directly in the compilation unit (if one exists)
+ */
+ getContainedAnnotation() {
+ if (getClassifiers().size() != 1) {
+ return null;
+ }
+ if (getClassifiers().get(0) instanceof Annotation) {
+ return (Annotation) getClassifiers().get(0);
+ }
+ return null;
+ }
+
+ /**
+ * @return the only enumeration contained directly in the compilation unit (if one exists)
+ */
+ getContainedEnumeration() {
+ if (getClassifiers().size() != 1) {
+ return null;
+ }
+ if (getClassifiers().get(0) instanceof Enumeration) {
+ return (Enumeration) getClassifiers().get(0);
+ }
+ return null;
+ }
+
+
+ /**
+ * Adds an import of the given class to this compilation unit.
+ */
+ addImport() {
+ ClassifierImport import_ = #ClassifierImport;
+ ConcreteClassifier classToImport = getConcreteClassifier(nameOfClassToImport);
+ import_.setClassifier(classToImport);
+ import_.getNamespaces().addAll(classToImport.getContainingCompilationUnit().getNamespaces());
+ getImports().add(import_);
+ }
+
+ /**
+ * Adds an import of the given package to this compilation unit.
+ */
+ addPackageImport() {
+ PackageImport nsImport = #PackageImport;
+ for (String name : packageName.split("\\.")) {
+ nsImport.getNamespaces().add(name);
+ }
+ getImports().add(nsImport);
+ }
+}
diff --git a/Core/org.emftext.language.java/metamodel/java/containers/JavaRoot.ejava b/Core/org.emftext.language.java/metamodel/java/containers/JavaRoot.ejava
index 1c2daa05..641ecfff 100644
--- a/Core/org.emftext.language.java/metamodel/java/containers/JavaRoot.ejava
+++ b/Core/org.emftext.language.java/metamodel/java/containers/JavaRoot.ejava
@@ -1,24 +1,24 @@
-epackage java.containers;
-
-import java.classifiers.ConcreteClassifier;
-
-import org.eclipse.emf.common.util.EList;
-import org.emftext.language.java.util.UniqueEList;
-
-eclass JavaRoot {
-
- /**
- * @return all classes in the same package imports
- */
- getClassifiersInSamePackage() {
- EList defaultImportList = new UniqueEList();
-
- String packageName = getNamespacesAsString();
-
- defaultImportList.addAll(getConcreteClassifierProxies(
- packageName, "*"));
-
- return defaultImportList;
- }
-
-}
+epackage java.containers;
+
+import java.classifiers.ConcreteClassifier;
+
+import org.eclipse.emf.common.util.EList;
+import org.emftext.language.java.util.UniqueEList;
+
+eclass JavaRoot {
+
+ /**
+ * @return all classes in the same package imports
+ */
+ getClassifiersInSamePackage() {
+ EList defaultImportList = new UniqueEList