updated parsing of type parameters in OnType of ITDs, added readable names for AspectJ entities
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
index c9c2351..98261d7 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
@@ -669,15 +669,7 @@
 		identifierLengthPtr--;
 
 		if (hasTypeParameters) {
-			// the generics stack has TypeParameter AST nodes on it for our type parameters,
-			// but we actually need to convert them to SingleTypeReferences for the logic
-			// that follows to succeed.
-			for(int typeParameterIndex = 0; typeParameterIndex < genericsLengthStack[genericsLengthPtr]; typeParameterIndex++) {
-				TypeParameter tp = (TypeParameter) genericsStack[genericsPtr - typeParameterIndex];
-				SingleTypeReference str = new SingleTypeReference(tp.name,tp.declarationSourceStart);
-				genericsStack[genericsPtr - typeParameterIndex] = str;
-			}
-			genericsIdentifiersLengthPtr++;
+			pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
 		} else {
 			consumeClassOrInterfaceName();
 		}
@@ -745,13 +737,6 @@
 		dec.declarationSourceEnd = flushCommentsDefinedPriorTo(endStatementPosition);
 	}
 
-	protected void consumeInterTypeFieldDeclarationWithTypeParameters() {
-		MethodDeclaration dec = (MethodDeclaration) this.astStack[this.astPtr];
-
-		dec.bodyEnd = endPosition;
-		dec.declarationSourceEnd = flushCommentsDefinedPriorTo(endStatementPosition);
-	}
-	
 	protected void consumeInterTypeMethodDeclaration(boolean isNotAbstract) {
 		consumeMethodDeclaration(isNotAbstract);
 	}
@@ -782,17 +767,12 @@
 
 		//onType
 		if (hasGenericTypeParameters) {
-			// some stack surgery due to our abuse of the parsing rules to get the funky
-			// ITD syntax through.
-			genericsLengthPtr++;
-			int numParams = genericsLengthStack[genericsLengthPtr];
-			genericsIdentifiersLengthPtr += numParams;
-			genericsPtr += numParams;
+			pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
+			//consumeClassOrInterfaceName();
 		} else {
 			consumeClassOrInterfaceName();			
 		}
 		TypeReference onType = getTypeReference(0);
-		declarationFactory.setOnType(md,onType);
 
 		//type
 		md.returnType = getTypeReference(intStack[intPtr--]);
@@ -804,77 +784,8 @@
 			System.arraycopy(this.genericsStack, this.genericsPtr + 1, md.typeParameters = new TypeParameter[tp_length], 0, tp_length);
 		}
 
-		//modifiers
-		md.declarationSourceStart = intStack[intPtr--];
-		declarationFactory.setDeclaredModifiers(md,intStack[intPtr--]);
-
-		//highlight starts at selector start
-		md.sourceStart = (int) (selectorSource >>> 32);
-		pushOnAstStack(md);
-		md.sourceEnd = lParenPos;
-		md.bodyStart = lParenPos + 1;
-		declarationFactory.setSelector(md,name);
-		listLength = 0;
-		// initialize listLength before reading parameters/throws
- 
- 		// Grab the javadoc
-        md.javadoc = this.javadoc;
-        this.javadoc = null;
-
-    	// consume annotations
-    	int length;
-    	if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
-    		System.arraycopy(
-    			this.expressionStack, 
-    			(this.expressionPtr -= length) + 1, 
-    			md.annotations = new Annotation[length], 
-    			0, 
-    			length); 
-    	}
-
-		// recovery
-		if (currentElement != null) {
-			if (currentElement instanceof RecoveredType
-				//|| md.modifiers != 0
-				|| (scanner.getLineNumber(md.returnType.sourceStart)
-					== scanner.getLineNumber(md.sourceStart))) {
-				lastCheckPoint = md.bodyStart;
-				currentElement = currentElement.add(md, 0);
-				lastIgnoredToken = -1;
-			} else {
-				lastCheckPoint = md.sourceStart;
-				restartRecovery = true;
-			}
-		}
-	}
-
-	// AMC - bad smell, this method duplicates nearly all logic with the one above. This is exactly the
-	// same pattern that the JDT parser follows but I don't like it...
-	protected void consumeInterTypeMethodHeaderNameWithTypeParameters() {
-		//InterTypeMethodHeaderName ::= Modifiersopt Type OnType '.' JavaIdentifier '('
-		this.display();
-		MethodDeclaration md = declarationFactory.createInterTypeMethodDeclaration(
-				this.compilationUnit.compilationResult);
-
-		//identifier
-		char[] name = identifierStack[identifierPtr];
-		long selectorSource = identifierPositionStack[identifierPtr--];
-		identifierLengthPtr--;
-
-
-		//onType
-		consumeClassOrInterfaceName();
-		TypeReference onType = getTypeReference(0);
 		declarationFactory.setOnType(md,onType);
 
-		//type
-		md.returnType = getTypeReference(intStack[intPtr--]);
-
-		// consume type parameters
-		int tp_length = this.genericsLengthStack[this.genericsLengthPtr--];
-		this.genericsPtr -= tp_length;
-		System.arraycopy(this.genericsStack, this.genericsPtr + 1, md.typeParameters = new TypeParameter[tp_length], 0, tp_length);
-
 		//modifiers
 		md.declarationSourceStart = intStack[intPtr--];
 		declarationFactory.setDeclaredModifiers(md,intStack[intPtr--]);
@@ -918,6 +829,7 @@
 			}
 		}
 	}
+
 	protected void consumeInterTypeConstructorHeaderName(boolean hasConstructorTypeParameters, boolean hasTargetTypeParameters) {
 		//InterTypeConstructorHeaderName ::= Modifiersopt Name '.' 'new' '('
 		this.display();
@@ -996,80 +908,6 @@
 		}
 	}
 
-	protected void consumeInterTypeConstructorHeaderNameWithTypeParameters() {
-		//InterTypeConstructorHeaderName ::= Modifiersopt Name '.' 'new' '('
-		this.display();
-		MethodDeclaration md = declarationFactory.createInterTypeConstructorDeclaration(
-				this.compilationUnit.compilationResult);
-
-		//identifier
-//		md.selector = identifierStack[identifierPtr];
-//		long selectorSource = identifierPositionStack[identifierPtr--];
-////		identifierLengthPtr--;
-
-		//onType
-		consumeClassOrInterfaceName();
-		TypeReference onType = getTypeReference(0);
-		declarationFactory.setOnType(md,onType);
-
-		println("got onType: " + onType);
-		this.display();
-
-		intPtr--; // pop new info
-		//type
-		md.returnType = TypeReference.baseTypeReference(T_void, 0); //getTypeReference(intStack[intPtr--]);
-
-		// consume type parameters
-		int tp_length = this.genericsLengthStack[this.genericsLengthPtr--];
-		this.genericsPtr -= tp_length;
-		System.arraycopy(this.genericsStack, this.genericsPtr + 1, md.typeParameters = new TypeParameter[tp_length], 0, tp_length);
-
-		//modifiers
-		md.declarationSourceStart = intStack[intPtr--];
-		declarationFactory.setDeclaredModifiers(md,intStack[intPtr--]);
-		//md.modifiers = intStack[intPtr--];
-
-		// consume annotations
-		int length;
-		if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
-			System.arraycopy(
-				this.expressionStack, 
-				(this.expressionPtr -= length) + 1, 
-				md.annotations = new Annotation[length], 
-				0, 
-				length); 
-		}
-
-		//highlight starts at selector start
-		//md.sourceStart = (int) (selectorSource >>> 32);
-		md.sourceStart = onType.sourceStart;
-		pushOnAstStack(md);
-		md.sourceEnd = lParenPos;
-		md.bodyStart = lParenPos + 1;
-		listLength = 0;
-		// initialize listLength before reading parameters/throws
-
-		declarationFactory.setSelector(md,
-			(new String(CharOperation.concatWith(onType.getTypeName(), '_')) + "_new").toCharArray());
-		
-
-		// recovery
-		if (currentElement != null) {
-			if (currentElement instanceof RecoveredType
-				//|| md.modifiers != 0
-				//|| (scanner.getLineNumber(md.returnType.sourceStart)
-				//	== scanner.getLineNumber(md.sourceStart))
-				) {
-				//lastCheckPoint = md.bodyStart;
-				currentElement = currentElement.add(md, 0);
-				lastIgnoredToken = -1;
-			} else {
-				lastCheckPoint = md.sourceStart;
-				restartRecovery = true;
-			}
-		}
-	}
-
 
 
 //*********************************************************
@@ -1498,1762 +1336,1766 @@
 	  consumeInterTypeMethodDeclaration(false);  
 				break;
 	 
-	    case 218 : if (DEBUG) { System.out.println("InterTypeConstructorDeclaration ::=..."); }  //$NON-NLS-1$
+	    case 218 : if (DEBUG) { System.out.println("TypeParametersAsReference ::= TypeParameters"); }  //$NON-NLS-1$
+			    convertTypeParametersToSingleTypeReferences();  
+				break;
+	 
+	    case 219 : if (DEBUG) { System.out.println("InterTypeConstructorDeclaration ::=..."); }  //$NON-NLS-1$
 			    // set to true to consume a method with a body
 	  consumeInterTypeConstructorDeclaration();   
 				break;
 	 
-	    case 219 : if (DEBUG) { System.out.println("InterTypeConstructorHeader ::=..."); }  //$NON-NLS-1$
+	    case 220 : if (DEBUG) { System.out.println("InterTypeConstructorHeader ::=..."); }  //$NON-NLS-1$
 			    consumeInterTypeConstructorHeader();  
 				break;
 	 
-	    case 220 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name DOT"); }  //$NON-NLS-1$
+	    case 221 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name DOT"); }  //$NON-NLS-1$
 			    consumeInterTypeConstructorHeaderName(false,false);  
 				break;
 	 
-	    case 221 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+	    case 222 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
 			    consumeInterTypeConstructorHeaderName(true,false);  
 				break;
 	 
-	    case 222 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+	    case 223 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
 			    consumeInterTypeConstructorHeaderName(false,true);  
 				break;
 	 
-	    case 223 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+	    case 224 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
 			    consumeInterTypeConstructorHeaderName(true,true);  
 				break;
 	 
-	    case 224 : if (DEBUG) { System.out.println("InterTypeFieldDeclaration ::= InterTypeFieldHeader..."); }  //$NON-NLS-1$
+	    case 225 : if (DEBUG) { System.out.println("InterTypeFieldDeclaration ::= InterTypeFieldHeader..."); }  //$NON-NLS-1$
 			    consumeInterTypeFieldDeclaration();  
 				break;
 	 
-	    case 225 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT..."); }  //$NON-NLS-1$
+	    case 226 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT..."); }  //$NON-NLS-1$
 			    consumeInterTypeFieldHeader(false);  
 				break;
 	 
-	    case 226 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType..."); }  //$NON-NLS-1$
+	    case 227 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType..."); }  //$NON-NLS-1$
 			    consumeInterTypeFieldHeader(true);  
 				break;
 	 
-	    case 227 : if (DEBUG) { System.out.println("InterTypeFieldBody ::="); }  //$NON-NLS-1$
+	    case 228 : if (DEBUG) { System.out.println("InterTypeFieldBody ::="); }  //$NON-NLS-1$
 			    consumeExitITDVariableWithoutInitializer();  
 				break;
 	 
-	    case 228 : if (DEBUG) { System.out.println("InterTypeFieldBody ::= EQUAL ForceNoDiet..."); }  //$NON-NLS-1$
+	    case 229 : if (DEBUG) { System.out.println("InterTypeFieldBody ::= EQUAL ForceNoDiet..."); }  //$NON-NLS-1$
 			    consumeExitITDVariableWithInitializer();  
 				break;
 	 
-	    case 230 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareHeader PseudoTokens..."); }  //$NON-NLS-1$
+	    case 231 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareHeader PseudoTokens..."); }  //$NON-NLS-1$
 			    consumeDeclareDeclaration();  
 				break;
 	 
-	    case 231 : if (DEBUG) { System.out.println("DeclareHeader ::= declare Identifier COLON"); }  //$NON-NLS-1$
+	    case 232 : if (DEBUG) { System.out.println("DeclareHeader ::= declare Identifier COLON"); }  //$NON-NLS-1$
 			    consumeDeclareHeader();  
 				break;
 	 
-	    case 232 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
+	    case 233 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
 			    consumeDeclareAnnotation();  
 				break;
 	 
-	    case 233 : if (DEBUG) { System.out.println("DeclareAnnotationHeader ::= declare AT Identifier COLON"); }  //$NON-NLS-1$
+	    case 234 : if (DEBUG) { System.out.println("DeclareAnnotationHeader ::= declare AT Identifier COLON"); }  //$NON-NLS-1$
 			    consumeDeclareAnnotationHeader();  
 				break;
 	 
-	    case 236 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens ColonPseudoToken"); }  //$NON-NLS-1$
+	    case 237 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens ColonPseudoToken"); }  //$NON-NLS-1$
 			    consumePseudoTokens();  
 				break;
 	 
-	    case 237 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens PseudoToken"); }  //$NON-NLS-1$
+	    case 238 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens PseudoToken"); }  //$NON-NLS-1$
 			    consumePseudoTokens();  
 				break;
 	 
-	    case 239 : if (DEBUG) { System.out.println("PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken"); }  //$NON-NLS-1$
+	    case 240 : if (DEBUG) { System.out.println("PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken"); }  //$NON-NLS-1$
 			    consumePseudoTokens();  
 				break;
 	 
-	    case 240 : if (DEBUG) { System.out.println("ColonPseudoToken ::= COLON"); }  //$NON-NLS-1$
+	    case 241 : if (DEBUG) { System.out.println("ColonPseudoToken ::= COLON"); }  //$NON-NLS-1$
 			    consumePseudoToken(":");  
 				break;
 	 
-	    case 241 : if (DEBUG) { System.out.println("PseudoToken ::= JavaIdentifier"); }  //$NON-NLS-1$
+	    case 242 : if (DEBUG) { System.out.println("PseudoToken ::= JavaIdentifier"); }  //$NON-NLS-1$
 			    consumePseudoTokenIdentifier();  
 				break;
 	 
-	    case 242 : if (DEBUG) { System.out.println("PseudoToken ::= LPAREN"); }  //$NON-NLS-1$
+	    case 243 : if (DEBUG) { System.out.println("PseudoToken ::= LPAREN"); }  //$NON-NLS-1$
 			    consumePseudoToken("(");  
 				break;
 	 
-	    case 243 : if (DEBUG) { System.out.println("PseudoToken ::= RPAREN"); }  //$NON-NLS-1$
+	    case 244 : if (DEBUG) { System.out.println("PseudoToken ::= RPAREN"); }  //$NON-NLS-1$
 			    consumePseudoToken(")");  
 				break;
 	 
-	    case 244 : if (DEBUG) { System.out.println("PseudoToken ::= DOT"); }  //$NON-NLS-1$
+	    case 245 : if (DEBUG) { System.out.println("PseudoToken ::= DOT"); }  //$NON-NLS-1$
 			    consumePseudoToken(".");  
 				break;
 	 
-	    case 245 : if (DEBUG) { System.out.println("PseudoToken ::= MULTIPLY"); }  //$NON-NLS-1$
+	    case 246 : if (DEBUG) { System.out.println("PseudoToken ::= MULTIPLY"); }  //$NON-NLS-1$
 			    consumePseudoToken("*");  
 				break;
 	 
-	    case 246 : if (DEBUG) { System.out.println("PseudoToken ::= PLUS"); }  //$NON-NLS-1$
+	    case 247 : if (DEBUG) { System.out.println("PseudoToken ::= PLUS"); }  //$NON-NLS-1$
 			    consumePseudoToken("+");  
 				break;
 	 
-	    case 247 : if (DEBUG) { System.out.println("PseudoToken ::= AND_AND"); }  //$NON-NLS-1$
+	    case 248 : if (DEBUG) { System.out.println("PseudoToken ::= AND_AND"); }  //$NON-NLS-1$
 			    consumePseudoToken("&&");  
 				break;
 	 
-	    case 248 : if (DEBUG) { System.out.println("PseudoToken ::= OR_OR"); }  //$NON-NLS-1$
+	    case 249 : if (DEBUG) { System.out.println("PseudoToken ::= OR_OR"); }  //$NON-NLS-1$
 			    consumePseudoToken("||");  
 				break;
 	 
-	    case 249 : if (DEBUG) { System.out.println("PseudoToken ::= NOT"); }  //$NON-NLS-1$
+	    case 250 : if (DEBUG) { System.out.println("PseudoToken ::= NOT"); }  //$NON-NLS-1$
 			    consumePseudoToken("!");  
 				break;
 	 
-	    case 250 : if (DEBUG) { System.out.println("PseudoToken ::= COMMA"); }  //$NON-NLS-1$
+	    case 251 : if (DEBUG) { System.out.println("PseudoToken ::= COMMA"); }  //$NON-NLS-1$
 			    consumePseudoToken(",");  
 				break;
 	 
-	    case 251 : if (DEBUG) { System.out.println("PseudoToken ::= LBRACKET"); }  //$NON-NLS-1$
+	    case 252 : if (DEBUG) { System.out.println("PseudoToken ::= LBRACKET"); }  //$NON-NLS-1$
 			    consumePseudoToken("[");  
 				break;
 	 
-	    case 252 : if (DEBUG) { System.out.println("PseudoToken ::= RBRACKET"); }  //$NON-NLS-1$
+	    case 253 : if (DEBUG) { System.out.println("PseudoToken ::= RBRACKET"); }  //$NON-NLS-1$
 			    consumePseudoToken("]");  
 				break;
 	 
-	    case 253 : if (DEBUG) { System.out.println("PseudoToken ::= AT"); }  //$NON-NLS-1$
+	    case 254 : if (DEBUG) { System.out.println("PseudoToken ::= AT"); }  //$NON-NLS-1$
 			    consumePseudoToken("@");  
 				break;
 	 
-	    case 254 : if (DEBUG) { System.out.println("PseudoToken ::= ELLIPSIS"); }  //$NON-NLS-1$
+	    case 255 : if (DEBUG) { System.out.println("PseudoToken ::= ELLIPSIS"); }  //$NON-NLS-1$
 			    consumePseudoToken("...");  
 				break;
 	 
-	    case 255 : if (DEBUG) { System.out.println("PseudoToken ::= QUESTION"); }  //$NON-NLS-1$
+	    case 256 : if (DEBUG) { System.out.println("PseudoToken ::= QUESTION"); }  //$NON-NLS-1$
 			    consumePseudoToken("?");  
 				break;
 	 
-	    case 256 : if (DEBUG) { System.out.println("PseudoToken ::= LESS"); }  //$NON-NLS-1$
+	    case 257 : if (DEBUG) { System.out.println("PseudoToken ::= LESS"); }  //$NON-NLS-1$
 			    consumePseudoToken("<");  
 				break;
 	 
-	    case 257 : if (DEBUG) { System.out.println("PseudoToken ::= GREATER"); }  //$NON-NLS-1$
+	    case 258 : if (DEBUG) { System.out.println("PseudoToken ::= GREATER"); }  //$NON-NLS-1$
 			    consumePseudoToken(">");  
 				break;
 	 
-	    case 258 : if (DEBUG) { System.out.println("PseudoToken ::= RIGHT_SHIFT"); }  //$NON-NLS-1$
+	    case 259 : if (DEBUG) { System.out.println("PseudoToken ::= RIGHT_SHIFT"); }  //$NON-NLS-1$
 			    consumePseudoToken(">>");  
 				break;
 	 
-	    case 259 : if (DEBUG) { System.out.println("PseudoToken ::= UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
+	    case 260 : if (DEBUG) { System.out.println("PseudoToken ::= UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
 			    consumePseudoToken(">>>");  
 				break;
 	 
-	    case 260 : if (DEBUG) { System.out.println("PseudoToken ::= AND"); }  //$NON-NLS-1$
+	    case 261 : if (DEBUG) { System.out.println("PseudoToken ::= AND"); }  //$NON-NLS-1$
 			    consumePseudoToken("&");  
 				break;
 	 
-	    case 261 : if (DEBUG) { System.out.println("PseudoToken ::= PrimitiveType"); }  //$NON-NLS-1$
+	    case 262 : if (DEBUG) { System.out.println("PseudoToken ::= PrimitiveType"); }  //$NON-NLS-1$
 			    consumePseudoTokenPrimitiveType();  
 				break;
 	 
-	    case 262 : if (DEBUG) { System.out.println("PseudoToken ::= SimpleModifier"); }  //$NON-NLS-1$
+	    case 263 : if (DEBUG) { System.out.println("PseudoToken ::= SimpleModifier"); }  //$NON-NLS-1$
 			    consumePseudoTokenModifier();  
 				break;
 	 
-	    case 263 : if (DEBUG) { System.out.println("PseudoToken ::= Literal"); }  //$NON-NLS-1$
+	    case 264 : if (DEBUG) { System.out.println("PseudoToken ::= Literal"); }  //$NON-NLS-1$
 			    consumePseudoTokenLiteral();  
 				break;
 	 
-	    case 264 : if (DEBUG) { System.out.println("PseudoToken ::= this"); }  //$NON-NLS-1$
+	    case 265 : if (DEBUG) { System.out.println("PseudoToken ::= this"); }  //$NON-NLS-1$
 			    consumePseudoToken("this", 1, true);  
 				break;
 	 
-	    case 265 : if (DEBUG) { System.out.println("PseudoToken ::= super"); }  //$NON-NLS-1$
+	    case 266 : if (DEBUG) { System.out.println("PseudoToken ::= super"); }  //$NON-NLS-1$
 			    consumePseudoToken("super", 1, true);  
 				break;
 	 
-	    case 266 : if (DEBUG) { System.out.println("PseudoToken ::= if LPAREN Expression RPAREN"); }  //$NON-NLS-1$
+	    case 267 : if (DEBUG) { System.out.println("PseudoToken ::= if LPAREN Expression RPAREN"); }  //$NON-NLS-1$
 			    consumePseudoTokenIf();  
 				break;
 	 
-	    case 267 : if (DEBUG) { System.out.println("PseudoToken ::= assert"); }  //$NON-NLS-1$
+	    case 268 : if (DEBUG) { System.out.println("PseudoToken ::= assert"); }  //$NON-NLS-1$
 			    consumePseudoToken("assert", 1, true);  
 				break;
 	 
-	    case 268 : if (DEBUG) { System.out.println("PseudoToken ::= import"); }  //$NON-NLS-1$
+	    case 269 : if (DEBUG) { System.out.println("PseudoToken ::= import"); }  //$NON-NLS-1$
 			    consumePseudoToken("import", 1, true);  
 				break;
 	 
-	    case 269 : if (DEBUG) { System.out.println("PseudoToken ::= package"); }  //$NON-NLS-1$
+	    case 270 : if (DEBUG) { System.out.println("PseudoToken ::= package"); }  //$NON-NLS-1$
 			    consumePseudoToken("package", 1, true);  
 				break;
 	 
-	    case 270 : if (DEBUG) { System.out.println("PseudoToken ::= throw"); }  //$NON-NLS-1$
+	    case 271 : if (DEBUG) { System.out.println("PseudoToken ::= throw"); }  //$NON-NLS-1$
 			    consumePseudoToken("throw", 1, true);  
 				break;
 	 
-	    case 271 : if (DEBUG) { System.out.println("PseudoToken ::= new"); }  //$NON-NLS-1$
+	    case 272 : if (DEBUG) { System.out.println("PseudoToken ::= new"); }  //$NON-NLS-1$
 			    consumePseudoToken("new", 1, true);  
 				break;
 	 
-	    case 272 : if (DEBUG) { System.out.println("PseudoToken ::= do"); }  //$NON-NLS-1$
+	    case 273 : if (DEBUG) { System.out.println("PseudoToken ::= do"); }  //$NON-NLS-1$
 			    consumePseudoToken("do", 1, true);  
 				break;
 	 
-	    case 273 : if (DEBUG) { System.out.println("PseudoToken ::= for"); }  //$NON-NLS-1$
+	    case 274 : if (DEBUG) { System.out.println("PseudoToken ::= for"); }  //$NON-NLS-1$
 			    consumePseudoToken("for", 1, true);  
 				break;
 	 
-	    case 274 : if (DEBUG) { System.out.println("PseudoToken ::= switch"); }  //$NON-NLS-1$
+	    case 275 : if (DEBUG) { System.out.println("PseudoToken ::= switch"); }  //$NON-NLS-1$
 			    consumePseudoToken("switch", 1, true);  
 				break;
 	 
-	    case 275 : if (DEBUG) { System.out.println("PseudoToken ::= try"); }  //$NON-NLS-1$
+	    case 276 : if (DEBUG) { System.out.println("PseudoToken ::= try"); }  //$NON-NLS-1$
 			    consumePseudoToken("try", 1, true);  
 				break;
 	 
-	    case 276 : if (DEBUG) { System.out.println("PseudoToken ::= while"); }  //$NON-NLS-1$
+	    case 277 : if (DEBUG) { System.out.println("PseudoToken ::= while"); }  //$NON-NLS-1$
 			    consumePseudoToken("while", 1, true);  
 				break;
 	 
-	    case 277 : if (DEBUG) { System.out.println("PseudoToken ::= break"); }  //$NON-NLS-1$
+	    case 278 : if (DEBUG) { System.out.println("PseudoToken ::= break"); }  //$NON-NLS-1$
 			    consumePseudoToken("break", 1, true);  
 				break;
 	 
-	    case 278 : if (DEBUG) { System.out.println("PseudoToken ::= continue"); }  //$NON-NLS-1$
+	    case 279 : if (DEBUG) { System.out.println("PseudoToken ::= continue"); }  //$NON-NLS-1$
 			    consumePseudoToken("continue", 1, true);  
 				break;
 	 
-	    case 279 : if (DEBUG) { System.out.println("PseudoToken ::= return"); }  //$NON-NLS-1$
+	    case 280 : if (DEBUG) { System.out.println("PseudoToken ::= return"); }  //$NON-NLS-1$
 			    consumePseudoToken("return", 1, true);  
 				break;
 	 
-	    case 280 : if (DEBUG) { System.out.println("PseudoToken ::= case"); }  //$NON-NLS-1$
+	    case 281 : if (DEBUG) { System.out.println("PseudoToken ::= case"); }  //$NON-NLS-1$
 			    consumePseudoToken("case", 1, true);  
 				break;
 	 
-	    case 281 : if (DEBUG) { System.out.println("PseudoToken ::= catch"); }  //$NON-NLS-1$
+	    case 282 : if (DEBUG) { System.out.println("PseudoToken ::= catch"); }  //$NON-NLS-1$
 			    consumePseudoToken("catch", 0, true);  
 				break;
 	 
-	    case 282 : if (DEBUG) { System.out.println("PseudoToken ::= instanceof"); }  //$NON-NLS-1$
+	    case 283 : if (DEBUG) { System.out.println("PseudoToken ::= instanceof"); }  //$NON-NLS-1$
 			    consumePseudoToken("instanceof", 0, true);  
 				break;
 	 
-	    case 283 : if (DEBUG) { System.out.println("PseudoToken ::= else"); }  //$NON-NLS-1$
+	    case 284 : if (DEBUG) { System.out.println("PseudoToken ::= else"); }  //$NON-NLS-1$
 			    consumePseudoToken("else", 0, true);  
 				break;
 	 
-	    case 284 : if (DEBUG) { System.out.println("PseudoToken ::= extends"); }  //$NON-NLS-1$
+	    case 285 : if (DEBUG) { System.out.println("PseudoToken ::= extends"); }  //$NON-NLS-1$
 			    consumePseudoToken("extends", 0, true);  
 				break;
 	 
-	    case 285 : if (DEBUG) { System.out.println("PseudoToken ::= finally"); }  //$NON-NLS-1$
+	    case 286 : if (DEBUG) { System.out.println("PseudoToken ::= finally"); }  //$NON-NLS-1$
 			    consumePseudoToken("finally", 0, true);  
 				break;
 	 
-	    case 286 : if (DEBUG) { System.out.println("PseudoToken ::= implements"); }  //$NON-NLS-1$
+	    case 287 : if (DEBUG) { System.out.println("PseudoToken ::= implements"); }  //$NON-NLS-1$
 			    consumePseudoToken("implements", 0, true);  
 				break;
 	 
-	    case 287 : if (DEBUG) { System.out.println("PseudoToken ::= throws"); }  //$NON-NLS-1$
+	    case 288 : if (DEBUG) { System.out.println("PseudoToken ::= throws"); }  //$NON-NLS-1$
 			    consumePseudoToken("throws", 0, true);  
 				break;
 	 
-	    case 288 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); }  //$NON-NLS-1$
+	    case 289 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); }  //$NON-NLS-1$
 			    consumeClassDeclaration();  
 				break;
 	 
-	    case 289 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt..."); }  //$NON-NLS-1$
+	    case 290 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt..."); }  //$NON-NLS-1$
 			    consumeClassHeader();  
 				break;
 	 
-	    case 290 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); }  //$NON-NLS-1$
+	    case 291 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); }  //$NON-NLS-1$
 			    consumeTypeHeaderNameWithTypeParameters();  
 				break;
 	 
-	    case 292 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class JavaIdentifier"); }  //$NON-NLS-1$
+	    case 293 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class JavaIdentifier"); }  //$NON-NLS-1$
 			    consumeClassHeaderName1();  
 				break;
 	 
-	    case 293 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); }  //$NON-NLS-1$
+	    case 294 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); }  //$NON-NLS-1$
 			    consumeClassHeaderExtends();  
 				break;
 	 
-	    case 294 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); }  //$NON-NLS-1$
+	    case 295 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); }  //$NON-NLS-1$
 			    consumeClassHeaderImplements();  
 				break;
 	 
-	    case 296 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); }  //$NON-NLS-1$
+	    case 297 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); }  //$NON-NLS-1$
 			    consumeInterfaceTypeList();  
 				break;
 	 
-	    case 297 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); }  //$NON-NLS-1$
+	    case 298 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); }  //$NON-NLS-1$
 			    consumeInterfaceType();  
 				break;
 	 
-	    case 300 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); }  //$NON-NLS-1$
+	    case 301 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); }  //$NON-NLS-1$
 			    consumeClassBodyDeclarations();  
 				break;
 	 
-	    case 304 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod Block"); }  //$NON-NLS-1$
+	    case 305 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod Block"); }  //$NON-NLS-1$
 			    consumeClassBodyDeclaration();  
 				break;
 	 
-	    case 305 : if (DEBUG) { System.out.println("Diet ::="); }  //$NON-NLS-1$
+	    case 306 : if (DEBUG) { System.out.println("Diet ::="); }  //$NON-NLS-1$
 			    consumeDiet();  
 				break;
 
-	    case 306 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod Block"); }  //$NON-NLS-1$
+	    case 307 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod Block"); }  //$NON-NLS-1$
 			    consumeClassBodyDeclaration();  
 				break;
 	 
-	    case 313 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
+	    case 314 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
 			    consumeEmptyClassMemberDeclaration();  
 				break;
 
-	    case 316 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+	    case 317 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); }  //$NON-NLS-1$
 			    consumeFieldDeclaration();  
 				break;
 	 
-	    case 318 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); }  //$NON-NLS-1$
+	    case 319 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); }  //$NON-NLS-1$
 			    consumeVariableDeclarators();  
 				break;
 	 
-	    case 321 : if (DEBUG) { System.out.println("EnterVariable ::="); }  //$NON-NLS-1$
+	    case 322 : if (DEBUG) { System.out.println("EnterVariable ::="); }  //$NON-NLS-1$
 			    consumeEnterVariable();  
 				break;
 	 
-	    case 322 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); }  //$NON-NLS-1$
+	    case 323 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); }  //$NON-NLS-1$
 			    consumeExitVariableWithInitialization();  
 				break;
 	 
-	    case 323 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); }  //$NON-NLS-1$
+	    case 324 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); }  //$NON-NLS-1$
 			    consumeExitVariableWithoutInitialization();  
 				break;
 	 
-	    case 324 : if (DEBUG) { System.out.println("ForceNoDiet ::="); }  //$NON-NLS-1$
+	    case 325 : if (DEBUG) { System.out.println("ForceNoDiet ::="); }  //$NON-NLS-1$
 			    consumeForceNoDiet();  
 				break;
 	 
-	    case 325 : if (DEBUG) { System.out.println("RestoreDiet ::="); }  //$NON-NLS-1$
+	    case 326 : if (DEBUG) { System.out.println("RestoreDiet ::="); }  //$NON-NLS-1$
 			    consumeRestoreDiet();  
 				break;
 	 
-	    case 330 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
+	    case 331 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
 			    // set to true to consume a method with a body
 	  consumeMethodDeclaration(true);   
 				break;
 	 
-	    case 331 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); }  //$NON-NLS-1$
+	    case 332 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); }  //$NON-NLS-1$
 			    // set to false to consume a method without body
 	  consumeMethodDeclaration(false);  
 				break;
 	 
-	    case 332 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); }  //$NON-NLS-1$
+	    case 333 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); }  //$NON-NLS-1$
 			    consumeMethodHeader();  
 				break;
 	 
-	    case 333 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); }  //$NON-NLS-1$
+	    case 334 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); }  //$NON-NLS-1$
 			    consumeMethodHeaderNameWithTypeParameters(false);  
 				break;
 	 
-	    case 334 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type JavaIdentifier..."); }  //$NON-NLS-1$
+	    case 335 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type JavaIdentifier..."); }  //$NON-NLS-1$
 			    consumeMethodHeaderName(false);  
 				break;
 	 
-	    case 335 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); }  //$NON-NLS-1$
+	    case 336 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); }  //$NON-NLS-1$
 			    consumeMethodHeaderRightParen();  
 				break;
 	 
-	    case 336 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); }  //$NON-NLS-1$
+	    case 337 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); }  //$NON-NLS-1$
 			    consumeMethodHeaderExtendedDims();  
 				break;
 	 
-	    case 337 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); }  //$NON-NLS-1$
+	    case 338 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); }  //$NON-NLS-1$
 			    consumeMethodHeaderThrowsClause();  
 				break;
 	 
-	    case 338 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); }  //$NON-NLS-1$
+	    case 339 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); }  //$NON-NLS-1$
 			    consumeConstructorHeader();  
 				break;
 	 
-	    case 339 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); }  //$NON-NLS-1$
+	    case 340 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); }  //$NON-NLS-1$
 			    consumeConstructorHeaderNameWithTypeParameters();  
 				break;
 	 
-	    case 340 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); }  //$NON-NLS-1$
+	    case 341 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); }  //$NON-NLS-1$
 			    consumeConstructorHeaderName();  
 				break;
 	 
-	    case 341 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt aspect LPAREN"); }  //$NON-NLS-1$
+	    case 342 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt aspect LPAREN"); }  //$NON-NLS-1$
 			    consumeConstructorHeaderName();  
 				break;
 	 
-	    case 343 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); }  //$NON-NLS-1$
+	    case 344 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); }  //$NON-NLS-1$
 			    consumeFormalParameterList();  
 				break;
 	 
-	    case 344 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+	    case 345 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); }  //$NON-NLS-1$
 			    consumeFormalParameter(false);  
 				break;
 	 
-	    case 345 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type ELLIPSIS..."); }  //$NON-NLS-1$
+	    case 346 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type ELLIPSIS..."); }  //$NON-NLS-1$
 			    consumeFormalParameter(true);  
 				break;
 	 
-	    case 347 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); }  //$NON-NLS-1$
+	    case 348 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); }  //$NON-NLS-1$
 			    consumeClassTypeList();  
 				break;
 	 
-	    case 348 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); }  //$NON-NLS-1$
+	    case 349 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); }  //$NON-NLS-1$
 			    consumeClassTypeElt();  
 				break;
 	 
-	    case 349 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); }  //$NON-NLS-1$
+	    case 350 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); }  //$NON-NLS-1$
 			    consumeMethodBody();  
 				break;
 	 
-	    case 350 : if (DEBUG) { System.out.println("NestedMethod ::="); }  //$NON-NLS-1$
+	    case 351 : if (DEBUG) { System.out.println("NestedMethod ::="); }  //$NON-NLS-1$
 			    consumeNestedMethod();  
 				break;
 	 
-	    case 351 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); }  //$NON-NLS-1$
+	    case 352 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); }  //$NON-NLS-1$
 			    consumeStaticInitializer();  
 				break;
 
-	    case 352 : if (DEBUG) { System.out.println("StaticOnly ::= static"); }  //$NON-NLS-1$
+	    case 353 : if (DEBUG) { System.out.println("StaticOnly ::= static"); }  //$NON-NLS-1$
 			    consumeStaticOnly();  
 				break;
 	 
-	    case 353 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); }  //$NON-NLS-1$
+	    case 354 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); }  //$NON-NLS-1$
 			    consumeConstructorDeclaration() ;  
 				break;
 	 
-	    case 354 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); }  //$NON-NLS-1$
+	    case 355 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); }  //$NON-NLS-1$
 			    consumeInvalidConstructorDeclaration() ;  
 				break;
 	 
-	    case 355 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); }  //$NON-NLS-1$
+	    case 356 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocation(0, THIS_CALL);  
 				break;
 	 
-	    case 356 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); }  //$NON-NLS-1$
+	    case 357 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL);  
 				break;
 	 
-	    case 357 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); }  //$NON-NLS-1$
+	    case 358 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocation(0,SUPER_CALL);  
 				break;
 	 
-	    case 358 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); }  //$NON-NLS-1$
+	    case 359 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL);  
 				break;
 	 
-	    case 359 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); }  //$NON-NLS-1$
+	    case 360 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocation(1, SUPER_CALL);  
 				break;
 	 
-	    case 360 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
+	    case 361 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL);  
 				break;
 	 
-	    case 361 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); }  //$NON-NLS-1$
+	    case 362 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocation(2, SUPER_CALL);  
 				break;
 	 
-	    case 362 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
+	    case 363 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL);  
 				break;
 	 
-	    case 363 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); }  //$NON-NLS-1$
+	    case 364 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocation(1, THIS_CALL);  
 				break;
 	 
-	    case 364 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
+	    case 365 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL);  
 				break;
 	 
-	    case 365 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); }  //$NON-NLS-1$
+	    case 366 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocation(2, THIS_CALL);  
 				break;
 	 
-	    case 366 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
+	    case 367 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
 			    consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL);  
 				break;
 	 
-	    case 367 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); }  //$NON-NLS-1$
+	    case 368 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); }  //$NON-NLS-1$
 			    consumeInterfaceDeclaration();  
 				break;
 	 
-	    case 368 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); }  //$NON-NLS-1$
+	    case 369 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); }  //$NON-NLS-1$
 			    consumeInterfaceHeader();  
 				break;
 	 
-	    case 369 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); }  //$NON-NLS-1$
+	    case 370 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); }  //$NON-NLS-1$
 			    consumeTypeHeaderNameWithTypeParameters();  
 				break;
 	 
-	    case 371 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); }  //$NON-NLS-1$
+	    case 372 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); }  //$NON-NLS-1$
 			    consumeInterfaceHeaderName1();  
 				break;
 	 
-	    case 372 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); }  //$NON-NLS-1$
+	    case 373 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); }  //$NON-NLS-1$
 			    consumeInterfaceHeaderExtends();  
 				break;
 	 
-	    case 375 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); }  //$NON-NLS-1$
+	    case 376 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); }  //$NON-NLS-1$
 			    consumeInterfaceMemberDeclarations();  
 				break;
 	 
-	    case 376 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
+	    case 377 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
 			    consumeEmptyInterfaceMemberDeclaration();  
 				break;
 	 
-	    case 378 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
+	    case 379 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
 			    consumeInvalidMethodDeclaration();  
 				break;
 	 
-	    case 379 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
+	    case 380 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
 			    consumeInvalidConstructorDeclaration(true);   
 				break;
 	 
-	    case 380 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
+	    case 381 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
 			    consumeInvalidConstructorDeclaration(false);   
 				break;
 	 
-	    case 388 : if (DEBUG) { System.out.println("PushLeftBrace ::="); }  //$NON-NLS-1$
+	    case 389 : if (DEBUG) { System.out.println("PushLeftBrace ::="); }  //$NON-NLS-1$
 			    consumePushLeftBrace();  
 				break;
 	 
-	    case 389 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); }  //$NON-NLS-1$
+	    case 390 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); }  //$NON-NLS-1$
 			    consumeEmptyArrayInitializer();  
 				break;
 	 
-	    case 390 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
-			    consumeArrayInitializer();  
-				break;
-	 
 	    case 391 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
 			    consumeArrayInitializer();  
 				break;
 	 
-	    case 393 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); }  //$NON-NLS-1$
+	    case 392 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
+			    consumeArrayInitializer();  
+				break;
+	 
+	    case 394 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); }  //$NON-NLS-1$
 			    consumeVariableInitializers();  
 				break;
 	 
-	    case 394 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); }  //$NON-NLS-1$
+	    case 395 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); }  //$NON-NLS-1$
 			    consumeBlock();  
 				break;
 	 
-	    case 395 : if (DEBUG) { System.out.println("OpenBlock ::="); }  //$NON-NLS-1$
+	    case 396 : if (DEBUG) { System.out.println("OpenBlock ::="); }  //$NON-NLS-1$
 			    consumeOpenBlock() ;  
 				break;
 	 
-	    case 397 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); }  //$NON-NLS-1$
+	    case 398 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); }  //$NON-NLS-1$
 			    consumeBlockStatements() ;  
 				break;
 	 
-	    case 401 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); }  //$NON-NLS-1$
+	    case 402 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); }  //$NON-NLS-1$
 			    consumeInvalidInterfaceDeclaration();  
 				break;
 	 
-	    case 402 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); }  //$NON-NLS-1$
+	    case 403 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); }  //$NON-NLS-1$
 			    consumeInvalidAnnotationTypeDeclaration();  
 				break;
 	 
-	    case 403 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); }  //$NON-NLS-1$
+	    case 404 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); }  //$NON-NLS-1$
 			    consumeInvalidEnumDeclaration();  
 				break;
 	 
-	    case 404 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); }  //$NON-NLS-1$
+	    case 405 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); }  //$NON-NLS-1$
 			    consumeLocalVariableDeclarationStatement();  
 				break;
 	 
-	    case 405 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); }  //$NON-NLS-1$
+	    case 406 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); }  //$NON-NLS-1$
 			    consumeLocalVariableDeclaration();  
 				break;
 	 
-	    case 406 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); }  //$NON-NLS-1$
+	    case 407 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); }  //$NON-NLS-1$
 			    consumeLocalVariableDeclaration();  
 				break;
 	 
-	    case 407 : if (DEBUG) { System.out.println("PushModifiers ::="); }  //$NON-NLS-1$
+	    case 408 : if (DEBUG) { System.out.println("PushModifiers ::="); }  //$NON-NLS-1$
 			    consumePushModifiers();  
 				break;
 	 
-	    case 408 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); }  //$NON-NLS-1$
+	    case 409 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); }  //$NON-NLS-1$
 			    consumePushModifiersForHeader();  
 				break;
 	 
-	    case 409 : if (DEBUG) { System.out.println("PushRealModifiers ::="); }  //$NON-NLS-1$
+	    case 410 : if (DEBUG) { System.out.println("PushRealModifiers ::="); }  //$NON-NLS-1$
 			    consumePushRealModifiers();  
 				break;
 	 
-	    case 435 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); }  //$NON-NLS-1$
+	    case 436 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); }  //$NON-NLS-1$
 			    consumeEmptyStatement();  
 				break;
 	 
-	    case 436 : if (DEBUG) { System.out.println("LabeledStatement ::= JavaIdentifier COLON Statement"); }  //$NON-NLS-1$
+	    case 437 : if (DEBUG) { System.out.println("LabeledStatement ::= JavaIdentifier COLON Statement"); }  //$NON-NLS-1$
 			    consumeStatementLabel() ;  
 				break;
 	 
-	    case 437 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= JavaIdentifier COLON..."); }  //$NON-NLS-1$
+	    case 438 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= JavaIdentifier COLON..."); }  //$NON-NLS-1$
 			    consumeStatementLabel() ;  
 				break;
 	 
-	     case 438 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); }  //$NON-NLS-1$
+	     case 439 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); }  //$NON-NLS-1$
 			    consumeExpressionStatement();  
 				break;
 	 
-	    case 447 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+	    case 448 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
 			    consumeStatementIfNoElse();  
 				break;
 	 
-	    case 448 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+	    case 449 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
 			    consumeStatementIfWithElse();  
 				break;
 	 
-	    case 449 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); }  //$NON-NLS-1$
+	    case 450 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); }  //$NON-NLS-1$
 			    consumeStatementIfWithElse();  
 				break;
 	 
-	    case 450 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+	    case 451 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
 			    consumeStatementSwitch() ;  
 				break;
 	 
-	    case 451 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); }  //$NON-NLS-1$
+	    case 452 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); }  //$NON-NLS-1$
 			    consumeEmptySwitchBlock() ;  
 				break;
 	 
-	    case 454 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); }  //$NON-NLS-1$
+	    case 455 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); }  //$NON-NLS-1$
 			    consumeSwitchBlock() ;  
 				break;
 	 
-	    case 456 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); }  //$NON-NLS-1$
+	    case 457 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); }  //$NON-NLS-1$
 			    consumeSwitchBlockStatements() ;  
 				break;
 	 
-	    case 457 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); }  //$NON-NLS-1$
+	    case 458 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); }  //$NON-NLS-1$
 			    consumeSwitchBlockStatement() ;  
 				break;
 	 
-	    case 459 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); }  //$NON-NLS-1$
+	    case 460 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); }  //$NON-NLS-1$
 			    consumeSwitchLabels() ;  
 				break;
 	 
-	     case 460 : if (DEBUG) { System.out.println("SwitchLabel ::= case ConstantExpression COLON"); }  //$NON-NLS-1$
+	     case 461 : if (DEBUG) { System.out.println("SwitchLabel ::= case ConstantExpression COLON"); }  //$NON-NLS-1$
 			    consumeCaseLabel();  
 				break;
 	 
-	     case 461 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); }  //$NON-NLS-1$
+	     case 462 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); }  //$NON-NLS-1$
 			    consumeDefaultLabel();  
 				break;
 	 
-	    case 462 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+	    case 463 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
 			    consumeStatementWhile() ;  
 				break;
 	 
-	    case 463 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); }  //$NON-NLS-1$
+	    case 464 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); }  //$NON-NLS-1$
 			    consumeStatementWhile() ;  
 				break;
 	 
-	    case 464 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); }  //$NON-NLS-1$
+	    case 465 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); }  //$NON-NLS-1$
 			    consumeStatementDo() ;  
 				break;
 	 
-	    case 465 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); }  //$NON-NLS-1$
+	    case 466 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); }  //$NON-NLS-1$
 			    consumeStatementFor() ;  
 				break;
 	 
-	    case 466 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); }  //$NON-NLS-1$
+	    case 467 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); }  //$NON-NLS-1$
 			    consumeStatementFor() ;  
 				break;
 	 
-	    case 467 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); }  //$NON-NLS-1$
+	    case 468 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); }  //$NON-NLS-1$
 			    consumeForInit() ;  
 				break;
 	 
-	    case 471 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); }  //$NON-NLS-1$
+	    case 472 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); }  //$NON-NLS-1$
 			    consumeStatementExpressionList() ;  
 				break;
 	 
-	    case 472 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); }  //$NON-NLS-1$
+	    case 473 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); }  //$NON-NLS-1$
 			    consumeSimpleAssertStatement() ;  
 				break;
 	 
-	    case 473 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); }  //$NON-NLS-1$
+	    case 474 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); }  //$NON-NLS-1$
 			    consumeAssertStatement() ;  
 				break;
 	 
-	    case 474 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); }  //$NON-NLS-1$
+	    case 475 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); }  //$NON-NLS-1$
 			    consumeStatementBreak() ;  
 				break;
 	 
-	    case 475 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); }  //$NON-NLS-1$
+	    case 476 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); }  //$NON-NLS-1$
 			    consumeStatementBreakWithLabel() ;  
 				break;
 	 
-	    case 476 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); }  //$NON-NLS-1$
+	    case 477 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); }  //$NON-NLS-1$
 			    consumeStatementContinue() ;  
 				break;
 	 
-	    case 477 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); }  //$NON-NLS-1$
+	    case 478 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); }  //$NON-NLS-1$
 			    consumeStatementContinueWithLabel() ;  
 				break;
 	 
-	    case 478 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); }  //$NON-NLS-1$
+	    case 479 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); }  //$NON-NLS-1$
 			    consumeStatementReturn() ;  
 				break;
 	 
-	    case 479 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); }  //$NON-NLS-1$
+	    case 480 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); }  //$NON-NLS-1$
 			    consumeStatementThrow();  
 				break;
 	 
-	    case 480 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); }  //$NON-NLS-1$
+	    case 481 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); }  //$NON-NLS-1$
 			    consumeStatementSynchronized();  
 				break;
 	 
-	    case 481 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); }  //$NON-NLS-1$
+	    case 482 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); }  //$NON-NLS-1$
 			    consumeOnlySynchronized();  
 				break;
 	 
-	    case 482 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); }  //$NON-NLS-1$
+	    case 483 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); }  //$NON-NLS-1$
 			    consumeStatementTry(false);  
 				break;
 	 
-	    case 483 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); }  //$NON-NLS-1$
+	    case 484 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); }  //$NON-NLS-1$
 			    consumeStatementTry(true);  
 				break;
 	 
-	    case 485 : if (DEBUG) { System.out.println("ExitTryBlock ::="); }  //$NON-NLS-1$
+	    case 486 : if (DEBUG) { System.out.println("ExitTryBlock ::="); }  //$NON-NLS-1$
 			    consumeExitTryBlock();  
 				break;
 	 
-	    case 487 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); }  //$NON-NLS-1$
+	    case 488 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); }  //$NON-NLS-1$
 			    consumeCatches();  
 				break;
 	 
-	    case 488 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN FormalParameter RPAREN..."); }  //$NON-NLS-1$
+	    case 489 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN FormalParameter RPAREN..."); }  //$NON-NLS-1$
 			    consumeStatementCatch() ;  
 				break;
 	 
-	    case 490 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); }  //$NON-NLS-1$
+	    case 491 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); }  //$NON-NLS-1$
 			    consumeLeftParen();  
 				break;
 	 
-	    case 491 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); }  //$NON-NLS-1$
+	    case 492 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); }  //$NON-NLS-1$
 			    consumeRightParen();  
 				break;
 	 
-	    case 496 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); }  //$NON-NLS-1$
+	    case 497 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayThis();  
 				break;
 	 
-	    case 497 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); }  //$NON-NLS-1$
+	    case 498 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArray();  
 				break;
 	 
-	    case 498 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); }  //$NON-NLS-1$
+	    case 499 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayWithName();  
 				break;
 	 
-	    case 501 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); }  //$NON-NLS-1$
+	    case 502 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayNameThis();  
 				break;
 	 
-	    case 502 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT super"); }  //$NON-NLS-1$
+	    case 503 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT super"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayNameSuper();  
 				break;
 	 
-	    case 503 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); }  //$NON-NLS-1$
+	    case 504 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayName();  
 				break;
 	 
-	    case 504 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); }  //$NON-NLS-1$
+	    case 505 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayArrayType();  
 				break;
 	 
-	    case 505 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); }  //$NON-NLS-1$
+	    case 506 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayPrimitiveArrayType();  
 				break;
 	 
-	    case 506 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); }  //$NON-NLS-1$
+	    case 507 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); }  //$NON-NLS-1$
 			    consumePrimaryNoNewArrayPrimitiveType();  
 				break;
 	 
-	    case 509 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); }  //$NON-NLS-1$
+	    case 510 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); }  //$NON-NLS-1$
 			    consumeAllocationHeader();  
 				break;
 	 
-	    case 510 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); }  //$NON-NLS-1$
+	    case 511 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); }  //$NON-NLS-1$
 			    consumeClassInstanceCreationExpressionWithTypeArguments();  
 				break;
 	 
-	    case 511 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType LPAREN"); }  //$NON-NLS-1$
+	    case 512 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType LPAREN"); }  //$NON-NLS-1$
 			    consumeClassInstanceCreationExpression();  
 				break;
 	 
-	    case 512 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
+	    case 513 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
 			    consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ;  
 				break;
 	 
-	    case 513 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpressionQualified() ;  
-				break;
-	 
-	    case 514 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
+	    case 514 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
 			    consumeClassInstanceCreationExpressionQualified() ;  
 				break;
 	 
 	    case 515 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpressionQualified() ;  
+				break;
+	 
+	    case 516 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
 			    consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ;  
 				break;
 	 
-	    case 516 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT"); }  //$NON-NLS-1$
+	    case 517 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT"); }  //$NON-NLS-1$
 			    consumeClassInstanceCreationExpressionName() ;  
 				break;
 	 
-	    case 517 : if (DEBUG) { System.out.println("ClassBodyopt ::="); }  //$NON-NLS-1$
+	    case 518 : if (DEBUG) { System.out.println("ClassBodyopt ::="); }  //$NON-NLS-1$
 			    consumeClassBodyopt();  
 				break;
 	 
-	    case 519 : if (DEBUG) { System.out.println("EnterAnonymousClassBody ::="); }  //$NON-NLS-1$
+	    case 520 : if (DEBUG) { System.out.println("EnterAnonymousClassBody ::="); }  //$NON-NLS-1$
 			    consumeEnterAnonymousClassBody();  
 				break;
 	 
-	    case 521 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); }  //$NON-NLS-1$
+	    case 522 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); }  //$NON-NLS-1$
 			    consumeArgumentList();  
 				break;
 	 
-	    case 522 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); }  //$NON-NLS-1$
+	    case 523 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); }  //$NON-NLS-1$
 			    consumeArrayCreationHeader();  
 				break;
 	 
-	    case 523 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); }  //$NON-NLS-1$
+	    case 524 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); }  //$NON-NLS-1$
 			    consumeArrayCreationHeader();  
 				break;
 	 
-	    case 524 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
+	    case 525 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
 			    consumeArrayCreationExpressionWithoutInitializer();  
 				break;
 	 
-	    case 525 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); }  //$NON-NLS-1$
+	    case 526 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); }  //$NON-NLS-1$
 			    consumeArrayCreationExpressionWithInitializer();  
 				break;
 	 
-	    case 526 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
+	    case 527 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
 			    consumeArrayCreationExpressionWithoutInitializer();  
 				break;
 	 
-	    case 527 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); }  //$NON-NLS-1$
+	    case 528 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); }  //$NON-NLS-1$
 			    consumeArrayCreationExpressionWithInitializer();  
 				break;
 	 
-	    case 529 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); }  //$NON-NLS-1$
+	    case 530 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); }  //$NON-NLS-1$
 			    consumeDimWithOrWithOutExprs();  
 				break;
 	 
-	     case 531 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
+	     case 532 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
 			    consumeDimWithOrWithOutExpr();  
 				break;
 	 
-	     case 532 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); }  //$NON-NLS-1$
+	     case 533 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); }  //$NON-NLS-1$
 			    consumeDims();  
 				break;
 	 
-	     case 535 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
+	     case 536 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
 			    consumeOneDimLoop();  
 				break;
 	 
-	    case 536 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT JavaIdentifier"); }  //$NON-NLS-1$
+	    case 537 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT JavaIdentifier"); }  //$NON-NLS-1$
 			    consumeFieldAccess(false);  
 				break;
 	 
-	    case 537 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT JavaIdentifier"); }  //$NON-NLS-1$
+	    case 538 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT JavaIdentifier"); }  //$NON-NLS-1$
 			    consumeFieldAccess(true);  
 				break;
 	 
-	    case 538 : if (DEBUG) { System.out.println("MethodInvocation ::= NameOrAj LPAREN ArgumentListopt..."); }  //$NON-NLS-1$
+	    case 539 : if (DEBUG) { System.out.println("MethodInvocation ::= NameOrAj LPAREN ArgumentListopt..."); }  //$NON-NLS-1$
 			    consumeMethodInvocationName();  
 				break;
 	 
-	    case 539 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
+	    case 540 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
 			    consumeMethodInvocationNameWithTypeArguments();  
 				break;
 	 
-	    case 540 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
+	    case 541 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
 			    consumeMethodInvocationPrimaryWithTypeArguments();  
 				break;
 	 
-	    case 541 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT JavaIdentifier LPAREN"); }  //$NON-NLS-1$
+	    case 542 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT JavaIdentifier LPAREN"); }  //$NON-NLS-1$
 			    consumeMethodInvocationPrimary();  
 				break;
 	 
-	    case 542 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
+	    case 543 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
 			    consumeMethodInvocationSuperWithTypeArguments();  
 				break;
 	 
-	    case 543 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT JavaIdentifier LPAREN..."); }  //$NON-NLS-1$
+	    case 544 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT JavaIdentifier LPAREN..."); }  //$NON-NLS-1$
 			    consumeMethodInvocationSuper();  
 				break;
 	 
-	    case 544 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
+	    case 545 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
 			    consumeArrayAccess(true);  
 				break;
 	 
-	    case 545 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); }  //$NON-NLS-1$
+	    case 546 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); }  //$NON-NLS-1$
 			    consumeArrayAccess(false);  
 				break;
 	 
-	    case 546 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); }  //$NON-NLS-1$
+	    case 547 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); }  //$NON-NLS-1$
 			    consumeArrayAccess(false);  
 				break;
 	 
-	    case 548 : if (DEBUG) { System.out.println("PostfixExpression ::= NameOrAj"); }  //$NON-NLS-1$
+	    case 549 : if (DEBUG) { System.out.println("PostfixExpression ::= NameOrAj"); }  //$NON-NLS-1$
 			    consumePostfixExpression();  
 				break;
 	 
-	    case 551 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); }  //$NON-NLS-1$
+	    case 552 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.PLUS,true);  
 				break;
 	 
-	    case 552 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); }  //$NON-NLS-1$
+	    case 553 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.MINUS,true);  
 				break;
 	 
-	    case 553 : if (DEBUG) { System.out.println("PushPosition ::="); }  //$NON-NLS-1$
+	    case 554 : if (DEBUG) { System.out.println("PushPosition ::="); }  //$NON-NLS-1$
 			    consumePushPosition();  
 				break;
 	 
-	    case 556 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
+	    case 557 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.PLUS);  
 				break;
 	 
-	    case 557 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
+	    case 558 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.MINUS);  
 				break;
 	 
-	    case 559 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); }  //$NON-NLS-1$
+	    case 560 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.PLUS,false);  
 				break;
 	 
-	    case 560 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); }  //$NON-NLS-1$
+	    case 561 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.MINUS,false);  
 				break;
 	 
-	    case 562 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); }  //$NON-NLS-1$
+	    case 563 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.TWIDDLE);  
 				break;
 	 
-	    case 563 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); }  //$NON-NLS-1$
+	    case 564 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); }  //$NON-NLS-1$
 			    consumeUnaryExpression(OperatorIds.NOT);  
 				break;
 	 
-	    case 565 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); }  //$NON-NLS-1$
+	    case 566 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); }  //$NON-NLS-1$
 			    consumeCastExpressionWithPrimitiveType();  
 				break;
 	 
-	    case 566 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
+	    case 567 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
 			    consumeCastExpressionWithGenericsArray();  
 				break;
 	 
-	    case 567 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
+	    case 568 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
 			    consumeCastExpressionWithQualifiedGenericsArray();  
 				break;
 	 
-	    case 568 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); }  //$NON-NLS-1$
+	    case 569 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); }  //$NON-NLS-1$
 			    consumeCastExpressionLL1();  
 				break;
 	 
-	    case 569 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims PushRPAREN..."); }  //$NON-NLS-1$
+	    case 570 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims PushRPAREN..."); }  //$NON-NLS-1$
 			    consumeCastExpressionWithNameArray();  
 				break;
 	 
-	    case 570 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); }  //$NON-NLS-1$
+	    case 571 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); }  //$NON-NLS-1$
 			    consumeOnlyTypeArgumentsForCastExpression();  
 				break;
 	 
-	    case 571 : if (DEBUG) { System.out.println("InsideCastExpression ::="); }  //$NON-NLS-1$
+	    case 572 : if (DEBUG) { System.out.println("InsideCastExpression ::="); }  //$NON-NLS-1$
 			    consumeInsideCastExpression();  
 				break;
 	 
-	    case 572 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); }  //$NON-NLS-1$
+	    case 573 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); }  //$NON-NLS-1$
 			    consumeInsideCastExpressionLL1();  
 				break;
 	 
-	    case 573 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); }  //$NON-NLS-1$
+	    case 574 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); }  //$NON-NLS-1$
 			    consumeInsideCastExpressionWithQualifiedGenerics();  
 				break;
 	 
-	    case 575 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.MULTIPLY);  
-				break;
-	 
 	    case 576 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.DIVIDE);  
+			    consumeBinaryExpression(OperatorIds.MULTIPLY);  
 				break;
 	 
 	    case 577 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.REMAINDER);  
-				break;
-	 
-	    case 579 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.PLUS);  
-				break;
-	 
-	    case 580 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.MINUS);  
-				break;
-	 
-	    case 582 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LEFT_SHIFT);  
-				break;
-	 
-	    case 583 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.RIGHT_SHIFT);  
-				break;
-	 
-	    case 584 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
-				break;
-	 
-	    case 586 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LESS);  
-				break;
-	 
-	    case 587 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.GREATER);  
-				break;
-	 
-	    case 588 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LESS_EQUAL);  
-				break;
-	 
-	    case 589 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.GREATER_EQUAL);  
-				break;
-	 
-	    case 591 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression instanceof"); }  //$NON-NLS-1$
-			    consumeInstanceOfExpression(OperatorIds.INSTANCEOF);  
-				break;
-	 
-	    case 593 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpression(OperatorIds.EQUAL_EQUAL);  
-				break;
-	 
-	    case 594 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpression(OperatorIds.NOT_EQUAL);  
-				break;
-	 
-	    case 596 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.AND);  
-				break;
-	 
-	    case 598 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.XOR);  
-				break;
-	 
-	    case 600 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.OR);  
-				break;
-	 
-	    case 602 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.AND_AND);  
-				break;
-	 
-	    case 604 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.OR_OR);  
-				break;
-	 
-	    case 606 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
-			    consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ;  
-				break;
-	 
-	    case 609 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); }  //$NON-NLS-1$
-			    consumeAssignment();  
-				break;
-	 
-	    case 611 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); }  //$NON-NLS-1$
-			    ignoreExpressionAssignment(); 
-				break;
-	 
-	    case 612 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(EQUAL);  
-				break;
-	 
-	    case 613 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(MULTIPLY);  
-				break;
-	 
-	    case 614 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(DIVIDE);  
-				break;
-	 
-	    case 615 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(REMAINDER);  
-				break;
-	 
-	    case 616 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(PLUS);  
-				break;
-	 
-	    case 617 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(MINUS);  
-				break;
-	 
-	    case 618 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(LEFT_SHIFT);  
-				break;
-	 
-	    case 619 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(RIGHT_SHIFT);  
-				break;
-	 
-	    case 620 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT);  
-				break;
-	 
-	    case 621 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(AND);  
-				break;
-	 
-	    case 622 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(XOR);  
-				break;
-	 
-	    case 623 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(OR);  
-				break;
-	 
-	    case 627 : if (DEBUG) { System.out.println("Expressionopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyExpression();  
-				break;
-	 
-	    case 632 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyClassBodyDeclarationsopt();  
-				break;
-	 
-	    case 633 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclarationsopt();  
-				break;
-	 
-	     case 634 : if (DEBUG) { System.out.println("Modifiersopt ::="); }  //$NON-NLS-1$
-			    consumeDefaultModifiers();  
-				break;
-	 
-	    case 635 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); }  //$NON-NLS-1$
-			    consumeModifiers();  
-				break;
-	 
-	    case 636 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyBlockStatementsopt();  
-				break;
-	 
-	     case 638 : if (DEBUG) { System.out.println("Dimsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyDimsopt();  
-				break;
-	 
-	     case 640 : if (DEBUG) { System.out.println("ArgumentListopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyArgumentListopt();  
-				break;
-	 
-	    case 644 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); }  //$NON-NLS-1$
-			    consumeFormalParameterListopt();  
-				break;
-	 
-	     case 648 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyInterfaceMemberDeclarationsopt();  
-				break;
-	 
-	     case 649 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
-			    consumeInterfaceMemberDeclarationsopt();  
-				break;
-	 
-	    case 650 : if (DEBUG) { System.out.println("NestedType ::="); }  //$NON-NLS-1$
-			    consumeNestedType();  
-				break;
-
-	     case 651 : if (DEBUG) { System.out.println("ForInitopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyForInitopt();  
-				break;
-	 
-	     case 653 : if (DEBUG) { System.out.println("ForUpdateopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyForUpdateopt();  
-				break;
-	 
-	     case 657 : if (DEBUG) { System.out.println("Catchesopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyCatchesopt();  
-				break;
-	 
-	     case 659 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); }  //$NON-NLS-1$
-			    consumeEnumDeclaration();  
-				break;
-	 
-	     case 660 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); }  //$NON-NLS-1$
-			    consumeEnumHeader();  
-				break;
-	 
-	     case 661 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeEnumHeaderName();  
-				break;
-	 
-	     case 662 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); }  //$NON-NLS-1$
-			    consumeEnumBodyNoConstants();  
-				break;
-	 
-	     case 663 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); }  //$NON-NLS-1$
-			    consumeEnumBodyNoConstants();  
-				break;
-	 
-	     case 664 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); }  //$NON-NLS-1$
-			    consumeEnumBodyWithConstants();  
-				break;
-	 
-	     case 665 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); }  //$NON-NLS-1$
-			    consumeEnumBodyWithConstants();  
-				break;
-	 
-	    case 667 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); }  //$NON-NLS-1$
-			    consumeEnumConstants();  
-				break;
-	 
-	    case 668 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); }  //$NON-NLS-1$
-			    consumeEnumConstantHeaderName();  
-				break;
-	 
-	    case 669 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); }  //$NON-NLS-1$
-			    consumeEnumConstantHeader();  
-				break;
-	 
-	    case 670 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); }  //$NON-NLS-1$
-			    consumeEnumConstantWithClassBody();  
-				break;
-	 
-	    case 671 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); }  //$NON-NLS-1$
-			    consumeEnumConstantNoClassBody();  
-				break;
-	 
-	    case 672 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); }  //$NON-NLS-1$
-			    consumeArguments();  
-				break;
-	 
-	    case 673 : if (DEBUG) { System.out.println("Argumentsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyArguments();  
-				break;
-	 
-	    case 675 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); }  //$NON-NLS-1$
-			    consumeEnumDeclarations();  
-				break;
-	 
-	    case 676 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyEnumDeclarations();  
-				break;
-	 
-	    case 678 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); }  //$NON-NLS-1$
-			    consumeEnhancedForStatement();  
-				break;
-	 
-	    case 679 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); }  //$NON-NLS-1$
-			    consumeEnhancedForStatement();  
-				break;
-	 
-	    case 680 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::= for LPAREN Type..."); }  //$NON-NLS-1$
-			    consumeEnhancedForStatementHeader(false);  
-				break;
-	 
-	    case 681 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::= for LPAREN Modifiers Type"); }  //$NON-NLS-1$
-			    consumeEnhancedForStatementHeader(true);  
-				break;
-	 
-	    case 682 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeImportDeclaration();  
-				break;
-	 
-	    case 683 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); }  //$NON-NLS-1$
-			    consumeSingleStaticImportDeclarationName();  
-				break;
-	 
-	    case 684 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeImportDeclaration();  
-				break;
-	 
-	    case 685 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); }  //$NON-NLS-1$
-			    consumeStaticImportOnDemandDeclarationName();  
-				break;
-	 
-	    case 686 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
-			    consumeTypeArguments();  
-				break;
-	 
-	    case 687 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
-			    consumeOnlyTypeArguments();  
-				break;
-	 
-	    case 689 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentList1();  
-				break;
-	 
-	    case 691 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); }  //$NON-NLS-1$
-			    consumeTypeArgumentList();  
-				break;
-	 
-	    case 692 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); }  //$NON-NLS-1$
-			    consumeTypeArgument();  
-				break;
-	 
-	    case 696 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); }  //$NON-NLS-1$
-			    consumeReferenceType1();  
-				break;
-	 
-	    case 697 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentReferenceType1();  
-				break;
-	 
-	    case 699 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentList2();  
-				break;
-	 
-	    case 702 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeReferenceType2();  
-				break;
-	 
-	    case 703 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentReferenceType2();  
-				break;
-	 
-	    case 705 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentList3();  
-				break;
-	 
-	    case 708 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeReferenceType3();  
-				break;
-	 
-	    case 709 : if (DEBUG) { System.out.println("Wildcard ::= QUESTION"); }  //$NON-NLS-1$
-			    consumeWildcard();  
-				break;
-	 
-	    case 710 : if (DEBUG) { System.out.println("Wildcard ::= QUESTION WildcardBounds"); }  //$NON-NLS-1$
-			    consumeWildcardWithBounds();  
-				break;
-	 
-	    case 711 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); }  //$NON-NLS-1$
-			    consumeWildcardBoundsExtends();  
-				break;
-	 
-	    case 712 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); }  //$NON-NLS-1$
-			    consumeWildcardBoundsSuper();  
-				break;
-	 
-	    case 713 : if (DEBUG) { System.out.println("Wildcard1 ::= QUESTION GREATER"); }  //$NON-NLS-1$
-			    consumeWildcard1();  
-				break;
-	 
-	    case 714 : if (DEBUG) { System.out.println("Wildcard1 ::= QUESTION WildcardBounds1"); }  //$NON-NLS-1$
-			    consumeWildcard1WithBounds();  
-				break;
-	 
-	    case 715 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); }  //$NON-NLS-1$
-			    consumeWildcardBounds1Extends();  
-				break;
-	 
-	    case 716 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); }  //$NON-NLS-1$
-			    consumeWildcardBounds1Super();  
-				break;
-	 
-	    case 717 : if (DEBUG) { System.out.println("Wildcard2 ::= QUESTION RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeWildcard2();  
-				break;
-	 
-	    case 718 : if (DEBUG) { System.out.println("Wildcard2 ::= QUESTION WildcardBounds2"); }  //$NON-NLS-1$
-			    consumeWildcard2WithBounds();  
-				break;
-	 
-	    case 719 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); }  //$NON-NLS-1$
-			    consumeWildcardBounds2Extends();  
-				break;
-	 
-	    case 720 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); }  //$NON-NLS-1$
-			    consumeWildcardBounds2Super();  
-				break;
-	 
-	    case 721 : if (DEBUG) { System.out.println("Wildcard3 ::= QUESTION UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeWildcard3();  
-				break;
-	 
-	    case 722 : if (DEBUG) { System.out.println("Wildcard3 ::= QUESTION WildcardBounds3"); }  //$NON-NLS-1$
-			    consumeWildcard3WithBounds();  
-				break;
-	 
-	    case 723 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); }  //$NON-NLS-1$
-			    consumeWildcardBounds3Extends();  
-				break;
-	 
-	    case 724 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); }  //$NON-NLS-1$
-			    consumeWildcardBounds3Super();  
-				break;
-	 
-	    case 725 : if (DEBUG) { System.out.println("TypeParameterHeader ::= JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeTypeParameterHeader();  
-				break;
-	 
-	    case 726 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); }  //$NON-NLS-1$
-			    consumeTypeParameters();  
-				break;
-	 
-	    case 728 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeParameterList();  
-				break;
-	 
-	    case 730 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameterWithExtends();  
-				break;
-	 
-	    case 731 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameterWithExtendsAndBounds();  
-				break;
-	 
-	    case 733 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); }  //$NON-NLS-1$
-			    consumeAdditionalBoundList();  
-				break;
-	 
-	    case 734 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); }  //$NON-NLS-1$
-			    consumeAdditionalBound();  
-				break;
-	 
-	    case 736 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeParameterList1();  
-				break;
-	 
-	    case 737 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); }  //$NON-NLS-1$
-			    consumeTypeParameter1();  
-				break;
-	 
-	    case 738 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameter1WithExtends();  
-				break;
-	 
-	    case 739 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameter1WithExtendsAndBounds();  
-				break;
-	 
-	    case 741 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); }  //$NON-NLS-1$
-			    consumeAdditionalBoundList1();  
-				break;
-	 
-	    case 742 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); }  //$NON-NLS-1$
-			    consumeAdditionalBound1();  
-				break;
-	 
-	    case 748 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.PLUS);  
-				break;
-	 
-	    case 749 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.MINUS);  
-				break;
-	 
-	    case 752 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.TWIDDLE);  
-				break;
-	 
-	    case 753 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.NOT);  
-				break;
-	 
-	    case 756 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.MULTIPLY);  
-				break;
-	 
-	    case 757 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name MULTIPLY..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.MULTIPLY);  
-				break;
-	 
-	    case 758 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.DIVIDE);  
 				break;
 	 
-	    case 759 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name DIVIDE..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.DIVIDE);  
-				break;
-	 
-	    case 760 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 578 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.REMAINDER);  
 				break;
 	 
-	    case 761 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name REMAINDER..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.REMAINDER);  
-				break;
-	 
-	    case 763 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 580 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.PLUS);  
 				break;
 	 
-	    case 764 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name PLUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.PLUS);  
-				break;
-	 
-	    case 765 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 581 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.MINUS);  
 				break;
 	 
-	    case 766 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name MINUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.MINUS);  
-				break;
-	 
-	    case 768 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+	    case 583 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.LEFT_SHIFT);  
 				break;
 	 
-	    case 769 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name LEFT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT);  
-				break;
-	 
-	    case 770 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+	    case 584 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.RIGHT_SHIFT);  
 				break;
 	 
-	    case 771 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name RIGHT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT);  
-				break;
-	 
-	    case 772 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+	    case 585 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
 				break;
 	 
-	    case 773 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name UNSIGNED_RIGHT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
-				break;
-	 
-	    case 775 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
+	    case 587 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.LESS);  
 				break;
 	 
-	    case 776 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.LESS);  
-				break;
-	 
-	    case 777 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
+	    case 588 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.GREATER);  
 				break;
 	 
-	    case 778 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.GREATER);  
-				break;
-	 
-	    case 779 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 589 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.LESS_EQUAL);  
 				break;
 	 
-	    case 780 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS_EQUAL..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL);  
-				break;
-	 
-	    case 781 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 590 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.GREATER_EQUAL);  
 				break;
 	 
-	    case 782 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER_EQUAL..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL);  
-				break;
-	 
-	    case 784 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= Name instanceof..."); }  //$NON-NLS-1$
-			    consumeInstanceOfExpressionWithName(OperatorIds.INSTANCEOF);  
-				break;
-	 
-	    case 785 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 592 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression instanceof"); }  //$NON-NLS-1$
 			    consumeInstanceOfExpression(OperatorIds.INSTANCEOF);  
 				break;
 	 
-	    case 787 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 594 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); }  //$NON-NLS-1$
 			    consumeEqualityExpression(OperatorIds.EQUAL_EQUAL);  
 				break;
 	 
-	    case 788 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name EQUAL_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL);  
-				break;
-	 
-	    case 789 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 595 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); }  //$NON-NLS-1$
 			    consumeEqualityExpression(OperatorIds.NOT_EQUAL);  
 				break;
 	 
-	    case 790 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name NOT_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL);  
-				break;
-	 
-	    case 792 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); }  //$NON-NLS-1$
+	    case 597 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.AND);  
 				break;
 	 
-	    case 793 : if (DEBUG) { System.out.println("AndExpression_NotName ::= Name AND EqualityExpression"); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.AND);  
-				break;
-	 
-	    case 795 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 599 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.XOR);  
 				break;
 	 
-	    case 796 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= Name XOR AndExpression"); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.XOR);  
-				break;
-	 
-	    case 798 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 601 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.OR);  
 				break;
 	 
-	    case 799 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= Name OR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.OR);  
-				break;
-	 
-	    case 801 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 603 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.AND_AND);  
 				break;
 	 
-	    case 802 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= Name AND_AND..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.AND_AND);  
-				break;
-	 
-	    case 804 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 605 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
 			    consumeBinaryExpression(OperatorIds.OR_OR);  
 				break;
 	 
-	    case 805 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= Name OR_OR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.OR_OR);  
-				break;
-	 
-	    case 807 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); }  //$NON-NLS-1$
+	    case 607 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
 			    consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ;  
 				break;
 	 
-	    case 808 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= Name QUESTION..."); }  //$NON-NLS-1$
+	    case 610 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); }  //$NON-NLS-1$
+			    consumeAssignment();  
+				break;
+	 
+	    case 612 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); }  //$NON-NLS-1$
+			    ignoreExpressionAssignment(); 
+				break;
+	 
+	    case 613 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(EQUAL);  
+				break;
+	 
+	    case 614 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(MULTIPLY);  
+				break;
+	 
+	    case 615 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(DIVIDE);  
+				break;
+	 
+	    case 616 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(REMAINDER);  
+				break;
+	 
+	    case 617 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(PLUS);  
+				break;
+	 
+	    case 618 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(MINUS);  
+				break;
+	 
+	    case 619 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(LEFT_SHIFT);  
+				break;
+	 
+	    case 620 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(RIGHT_SHIFT);  
+				break;
+	 
+	    case 621 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT);  
+				break;
+	 
+	    case 622 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(AND);  
+				break;
+	 
+	    case 623 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(XOR);  
+				break;
+	 
+	    case 624 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(OR);  
+				break;
+	 
+	    case 628 : if (DEBUG) { System.out.println("Expressionopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyExpression();  
+				break;
+	 
+	    case 633 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyClassBodyDeclarationsopt();  
+				break;
+	 
+	    case 634 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclarationsopt();  
+				break;
+	 
+	     case 635 : if (DEBUG) { System.out.println("Modifiersopt ::="); }  //$NON-NLS-1$
+			    consumeDefaultModifiers();  
+				break;
+	 
+	    case 636 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); }  //$NON-NLS-1$
+			    consumeModifiers();  
+				break;
+	 
+	    case 637 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyBlockStatementsopt();  
+				break;
+	 
+	     case 639 : if (DEBUG) { System.out.println("Dimsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyDimsopt();  
+				break;
+	 
+	     case 641 : if (DEBUG) { System.out.println("ArgumentListopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyArgumentListopt();  
+				break;
+	 
+	    case 645 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); }  //$NON-NLS-1$
+			    consumeFormalParameterListopt();  
+				break;
+	 
+	     case 649 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyInterfaceMemberDeclarationsopt();  
+				break;
+	 
+	     case 650 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
+			    consumeInterfaceMemberDeclarationsopt();  
+				break;
+	 
+	    case 651 : if (DEBUG) { System.out.println("NestedType ::="); }  //$NON-NLS-1$
+			    consumeNestedType();  
+				break;
+
+	     case 652 : if (DEBUG) { System.out.println("ForInitopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyForInitopt();  
+				break;
+	 
+	     case 654 : if (DEBUG) { System.out.println("ForUpdateopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyForUpdateopt();  
+				break;
+	 
+	     case 658 : if (DEBUG) { System.out.println("Catchesopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyCatchesopt();  
+				break;
+	 
+	     case 660 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); }  //$NON-NLS-1$
+			    consumeEnumDeclaration();  
+				break;
+	 
+	     case 661 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); }  //$NON-NLS-1$
+			    consumeEnumHeader();  
+				break;
+	 
+	     case 662 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeEnumHeaderName();  
+				break;
+	 
+	     case 663 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); }  //$NON-NLS-1$
+			    consumeEnumBodyNoConstants();  
+				break;
+	 
+	     case 664 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); }  //$NON-NLS-1$
+			    consumeEnumBodyNoConstants();  
+				break;
+	 
+	     case 665 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); }  //$NON-NLS-1$
+			    consumeEnumBodyWithConstants();  
+				break;
+	 
+	     case 666 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); }  //$NON-NLS-1$
+			    consumeEnumBodyWithConstants();  
+				break;
+	 
+	    case 668 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); }  //$NON-NLS-1$
+			    consumeEnumConstants();  
+				break;
+	 
+	    case 669 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); }  //$NON-NLS-1$
+			    consumeEnumConstantHeaderName();  
+				break;
+	 
+	    case 670 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); }  //$NON-NLS-1$
+			    consumeEnumConstantHeader();  
+				break;
+	 
+	    case 671 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); }  //$NON-NLS-1$
+			    consumeEnumConstantWithClassBody();  
+				break;
+	 
+	    case 672 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); }  //$NON-NLS-1$
+			    consumeEnumConstantNoClassBody();  
+				break;
+	 
+	    case 673 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); }  //$NON-NLS-1$
+			    consumeArguments();  
+				break;
+	 
+	    case 674 : if (DEBUG) { System.out.println("Argumentsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyArguments();  
+				break;
+	 
+	    case 676 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); }  //$NON-NLS-1$
+			    consumeEnumDeclarations();  
+				break;
+	 
+	    case 677 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyEnumDeclarations();  
+				break;
+	 
+	    case 679 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); }  //$NON-NLS-1$
+			    consumeEnhancedForStatement();  
+				break;
+	 
+	    case 680 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); }  //$NON-NLS-1$
+			    consumeEnhancedForStatement();  
+				break;
+	 
+	    case 681 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::= for LPAREN Type..."); }  //$NON-NLS-1$
+			    consumeEnhancedForStatementHeader(false);  
+				break;
+	 
+	    case 682 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::= for LPAREN Modifiers Type"); }  //$NON-NLS-1$
+			    consumeEnhancedForStatementHeader(true);  
+				break;
+	 
+	    case 683 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeImportDeclaration();  
+				break;
+	 
+	    case 684 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); }  //$NON-NLS-1$
+			    consumeSingleStaticImportDeclarationName();  
+				break;
+	 
+	    case 685 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeImportDeclaration();  
+				break;
+	 
+	    case 686 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); }  //$NON-NLS-1$
+			    consumeStaticImportOnDemandDeclarationName();  
+				break;
+	 
+	    case 687 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
+			    consumeTypeArguments();  
+				break;
+	 
+	    case 688 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
+			    consumeOnlyTypeArguments();  
+				break;
+	 
+	    case 690 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentList1();  
+				break;
+	 
+	    case 692 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); }  //$NON-NLS-1$
+			    consumeTypeArgumentList();  
+				break;
+	 
+	    case 693 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); }  //$NON-NLS-1$
+			    consumeTypeArgument();  
+				break;
+	 
+	    case 697 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); }  //$NON-NLS-1$
+			    consumeReferenceType1();  
+				break;
+	 
+	    case 698 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentReferenceType1();  
+				break;
+	 
+	    case 700 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentList2();  
+				break;
+	 
+	    case 703 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeReferenceType2();  
+				break;
+	 
+	    case 704 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentReferenceType2();  
+				break;
+	 
+	    case 706 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentList3();  
+				break;
+	 
+	    case 709 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeReferenceType3();  
+				break;
+	 
+	    case 710 : if (DEBUG) { System.out.println("Wildcard ::= QUESTION"); }  //$NON-NLS-1$
+			    consumeWildcard();  
+				break;
+	 
+	    case 711 : if (DEBUG) { System.out.println("Wildcard ::= QUESTION WildcardBounds"); }  //$NON-NLS-1$
+			    consumeWildcardWithBounds();  
+				break;
+	 
+	    case 712 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); }  //$NON-NLS-1$
+			    consumeWildcardBoundsExtends();  
+				break;
+	 
+	    case 713 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); }  //$NON-NLS-1$
+			    consumeWildcardBoundsSuper();  
+				break;
+	 
+	    case 714 : if (DEBUG) { System.out.println("Wildcard1 ::= QUESTION GREATER"); }  //$NON-NLS-1$
+			    consumeWildcard1();  
+				break;
+	 
+	    case 715 : if (DEBUG) { System.out.println("Wildcard1 ::= QUESTION WildcardBounds1"); }  //$NON-NLS-1$
+			    consumeWildcard1WithBounds();  
+				break;
+	 
+	    case 716 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); }  //$NON-NLS-1$
+			    consumeWildcardBounds1Extends();  
+				break;
+	 
+	    case 717 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); }  //$NON-NLS-1$
+			    consumeWildcardBounds1Super();  
+				break;
+	 
+	    case 718 : if (DEBUG) { System.out.println("Wildcard2 ::= QUESTION RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeWildcard2();  
+				break;
+	 
+	    case 719 : if (DEBUG) { System.out.println("Wildcard2 ::= QUESTION WildcardBounds2"); }  //$NON-NLS-1$
+			    consumeWildcard2WithBounds();  
+				break;
+	 
+	    case 720 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); }  //$NON-NLS-1$
+			    consumeWildcardBounds2Extends();  
+				break;
+	 
+	    case 721 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); }  //$NON-NLS-1$
+			    consumeWildcardBounds2Super();  
+				break;
+	 
+	    case 722 : if (DEBUG) { System.out.println("Wildcard3 ::= QUESTION UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeWildcard3();  
+				break;
+	 
+	    case 723 : if (DEBUG) { System.out.println("Wildcard3 ::= QUESTION WildcardBounds3"); }  //$NON-NLS-1$
+			    consumeWildcard3WithBounds();  
+				break;
+	 
+	    case 724 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); }  //$NON-NLS-1$
+			    consumeWildcardBounds3Extends();  
+				break;
+	 
+	    case 725 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); }  //$NON-NLS-1$
+			    consumeWildcardBounds3Super();  
+				break;
+	 
+	    case 726 : if (DEBUG) { System.out.println("TypeParameterHeader ::= JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeTypeParameterHeader();  
+				break;
+	 
+	    case 727 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); }  //$NON-NLS-1$
+			    consumeTypeParameters();  
+				break;
+	 
+	    case 729 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeParameterList();  
+				break;
+	 
+	    case 731 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameterWithExtends();  
+				break;
+	 
+	    case 732 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameterWithExtendsAndBounds();  
+				break;
+	 
+	    case 734 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); }  //$NON-NLS-1$
+			    consumeAdditionalBoundList();  
+				break;
+	 
+	    case 735 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); }  //$NON-NLS-1$
+			    consumeAdditionalBound();  
+				break;
+	 
+	    case 737 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeParameterList1();  
+				break;
+	 
+	    case 738 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); }  //$NON-NLS-1$
+			    consumeTypeParameter1();  
+				break;
+	 
+	    case 739 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameter1WithExtends();  
+				break;
+	 
+	    case 740 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameter1WithExtendsAndBounds();  
+				break;
+	 
+	    case 742 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); }  //$NON-NLS-1$
+			    consumeAdditionalBoundList1();  
+				break;
+	 
+	    case 743 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); }  //$NON-NLS-1$
+			    consumeAdditionalBound1();  
+				break;
+	 
+	    case 749 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.PLUS);  
+				break;
+	 
+	    case 750 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.MINUS);  
+				break;
+	 
+	    case 753 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.TWIDDLE);  
+				break;
+	 
+	    case 754 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.NOT);  
+				break;
+	 
+	    case 757 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.MULTIPLY);  
+				break;
+	 
+	    case 758 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name MULTIPLY..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.MULTIPLY);  
+				break;
+	 
+	    case 759 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.DIVIDE);  
+				break;
+	 
+	    case 760 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name DIVIDE..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.DIVIDE);  
+				break;
+	 
+	    case 761 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.REMAINDER);  
+				break;
+	 
+	    case 762 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name REMAINDER..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.REMAINDER);  
+				break;
+	 
+	    case 764 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.PLUS);  
+				break;
+	 
+	    case 765 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name PLUS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.PLUS);  
+				break;
+	 
+	    case 766 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.MINUS);  
+				break;
+	 
+	    case 767 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name MINUS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.MINUS);  
+				break;
+	 
+	    case 769 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LEFT_SHIFT);  
+				break;
+	 
+	    case 770 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name LEFT_SHIFT..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT);  
+				break;
+	 
+	    case 771 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.RIGHT_SHIFT);  
+				break;
+	 
+	    case 772 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name RIGHT_SHIFT..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT);  
+				break;
+	 
+	    case 773 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
+				break;
+	 
+	    case 774 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name UNSIGNED_RIGHT_SHIFT..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
+				break;
+	 
+	    case 776 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LESS);  
+				break;
+	 
+	    case 777 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.LESS);  
+				break;
+	 
+	    case 778 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.GREATER);  
+				break;
+	 
+	    case 779 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.GREATER);  
+				break;
+	 
+	    case 780 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LESS_EQUAL);  
+				break;
+	 
+	    case 781 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS_EQUAL..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL);  
+				break;
+	 
+	    case 782 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.GREATER_EQUAL);  
+				break;
+	 
+	    case 783 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER_EQUAL..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL);  
+				break;
+	 
+	    case 785 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= Name instanceof..."); }  //$NON-NLS-1$
+			    consumeInstanceOfExpressionWithName(OperatorIds.INSTANCEOF);  
+				break;
+	 
+	    case 786 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeInstanceOfExpression(OperatorIds.INSTANCEOF);  
+				break;
+	 
+	    case 788 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeEqualityExpression(OperatorIds.EQUAL_EQUAL);  
+				break;
+	 
+	    case 789 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name EQUAL_EQUAL..."); }  //$NON-NLS-1$
+			    consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL);  
+				break;
+	 
+	    case 790 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeEqualityExpression(OperatorIds.NOT_EQUAL);  
+				break;
+	 
+	    case 791 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name NOT_EQUAL..."); }  //$NON-NLS-1$
+			    consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL);  
+				break;
+	 
+	    case 793 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.AND);  
+				break;
+	 
+	    case 794 : if (DEBUG) { System.out.println("AndExpression_NotName ::= Name AND EqualityExpression"); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.AND);  
+				break;
+	 
+	    case 796 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.XOR);  
+				break;
+	 
+	    case 797 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= Name XOR AndExpression"); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.XOR);  
+				break;
+	 
+	    case 799 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.OR);  
+				break;
+	 
+	    case 800 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= Name OR..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.OR);  
+				break;
+	 
+	    case 802 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.AND_AND);  
+				break;
+	 
+	    case 803 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= Name AND_AND..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.AND_AND);  
+				break;
+	 
+	    case 805 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.OR_OR);  
+				break;
+	 
+	    case 806 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= Name OR_OR..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.OR_OR);  
+				break;
+	 
+	    case 808 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ;  
+				break;
+	 
+	    case 809 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= Name QUESTION..."); }  //$NON-NLS-1$
 			    consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ;  
 				break;
 	 
-	    case 812 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); }  //$NON-NLS-1$
+	    case 813 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); }  //$NON-NLS-1$
 			    consumeAnnotationTypeDeclarationHeaderName() ;  
 				break;
 	 
-	    case 813 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); }  //$NON-NLS-1$
+	    case 814 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); }  //$NON-NLS-1$
 			    consumeAnnotationTypeDeclarationHeaderName() ;  
 				break;
 	 
-	    case 814 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); }  //$NON-NLS-1$
+	    case 815 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); }  //$NON-NLS-1$
 			    consumeAnnotationTypeDeclarationHeader() ;  
 				break;
 	 
-	    case 815 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); }  //$NON-NLS-1$
+	    case 816 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); }  //$NON-NLS-1$
 			    consumeAnnotationTypeDeclaration() ;  
 				break;
 	 
-	    case 817 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); }  //$NON-NLS-1$
+	    case 818 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); }  //$NON-NLS-1$
 			    consumeEmptyAnnotationTypeMemberDeclarationsopt() ;  
 				break;
 	 
-	    case 820 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); }  //$NON-NLS-1$
+	    case 821 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); }  //$NON-NLS-1$
 			    consumeAnnotationTypeMemberDeclarations() ;  
 				break;
 	 
-	    case 821 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+	    case 822 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
 			    consumeMethodHeaderNameWithTypeParameters(true);  
 				break;
 	 
-	    case 822 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+	    case 823 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
 			    consumeMethodHeaderName(true);  
 				break;
 	 
-	    case 823 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); }  //$NON-NLS-1$
+	    case 824 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); }  //$NON-NLS-1$
 			    consumeEmptyMethodHeaderDefaultValue() ;  
 				break;
 	 
-	    case 824 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); }  //$NON-NLS-1$
+	    case 825 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); }  //$NON-NLS-1$
 			    consumeMethodHeaderDefaultValue();  
 				break;
 	 
-	    case 825 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName..."); }  //$NON-NLS-1$
+	    case 826 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName..."); }  //$NON-NLS-1$
 			    consumeMethodHeader();  
 				break;
 	 
-	    case 826 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); }  //$NON-NLS-1$
+	    case 827 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); }  //$NON-NLS-1$
 			    consumeAnnotationTypeMemberDeclaration() ;  
 				break;
 	 
-	    case 834 : if (DEBUG) { System.out.println("AnnotationName ::= AT NameOrAj"); }  //$NON-NLS-1$
+	    case 835 : if (DEBUG) { System.out.println("AnnotationName ::= AT NameOrAj"); }  //$NON-NLS-1$
 			    consumeAnnotationName() ;  
 				break;
 	 
-	    case 835 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
+	    case 836 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
 			    consumeNormalAnnotation() ;  
 				break;
 	 
-	    case 836 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); }  //$NON-NLS-1$
+	    case 837 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); }  //$NON-NLS-1$
 			    consumeEmptyMemberValuePairsopt() ;  
 				break;
 	 
-	    case 839 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); }  //$NON-NLS-1$
+	    case 840 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); }  //$NON-NLS-1$
 			    consumeMemberValuePairs() ;  
 				break;
 	 
-	    case 840 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleNameOrAj EQUAL..."); }  //$NON-NLS-1$
+	    case 841 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleNameOrAj EQUAL..."); }  //$NON-NLS-1$
 			    consumeMemberValuePair() ;  
 				break;
 	 
-	    case 841 : if (DEBUG) { System.out.println("EnterMemberValue ::="); }  //$NON-NLS-1$
+	    case 842 : if (DEBUG) { System.out.println("EnterMemberValue ::="); }  //$NON-NLS-1$
 			    consumeEnterMemberValue() ;  
 				break;
 	 
-	    case 842 : if (DEBUG) { System.out.println("ExitMemberValue ::="); }  //$NON-NLS-1$
+	    case 843 : if (DEBUG) { System.out.println("ExitMemberValue ::="); }  //$NON-NLS-1$
 			    consumeExitMemberValue() ;  
 				break;
 	 
-	    case 844 : if (DEBUG) { System.out.println("MemberValue ::= NameOrAj"); }  //$NON-NLS-1$
+	    case 845 : if (DEBUG) { System.out.println("MemberValue ::= NameOrAj"); }  //$NON-NLS-1$
 			    consumeMemberValueAsName() ;  
 				break;
 	 
-	    case 847 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
-			    consumeMemberValueArrayInitializer() ;  
-				break;
-	 
 	    case 848 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
 			    consumeMemberValueArrayInitializer() ;  
 				break;
 	 
 	    case 849 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
-			    consumeEmptyMemberValueArrayInitializer() ;  
+			    consumeMemberValueArrayInitializer() ;  
 				break;
 	 
 	    case 850 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
 			    consumeEmptyMemberValueArrayInitializer() ;  
 				break;
 	 
-	    case 852 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); }  //$NON-NLS-1$
+	    case 851 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
+			    consumeEmptyMemberValueArrayInitializer() ;  
+				break;
+	 
+	    case 853 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); }  //$NON-NLS-1$
 			    consumeMemberValues() ;  
 				break;
 	 
-	    case 853 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); }  //$NON-NLS-1$
+	    case 854 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); }  //$NON-NLS-1$
 			    consumeMarkerAnnotation() ;  
 				break;
 	 
-	    case 854 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
+	    case 855 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
 			    consumeSingleMemberAnnotation() ;  
 				break;
 	 
-	    case 855 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt TypeParameters"); }  //$NON-NLS-1$
+	    case 856 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt TypeParameters"); }  //$NON-NLS-1$
 			    consumeRecoveryMethodHeaderNameWithTypeParameters();  
 				break;
 	 
-	    case 856 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+	    case 857 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
 			    consumeRecoveryMethodHeaderName();  
 				break;
 	 
-	    case 857 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
+	    case 858 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
 			    consumeMethodHeader();  
 				break;
 	 
-	    case 858 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
+	    case 859 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
 			    consumeMethodHeader();  
 				break;
 	 
@@ -3265,6 +3107,21 @@
 	super.consumeSimpleAssertStatement();
 }
 
+/**
+ * this method is called by the parser when processing inter-type declarations. We have
+ * just finished parsing the type parameters following the OnType of the ITD. Unfortunatey
+ * we parsed them as TypeParameter(s) whereas we're going to create a type reference for the
+ * on type (and type references can't have type parameters, only type declarations can). Therefore
+ * we replace the TypeParameter(s) with SingleTypeReference(s) so that everything will go 
+ * smoothly down the line.
+ */
+private void convertTypeParametersToSingleTypeReferences() {
+	for(int typeParameterIndex = 0; typeParameterIndex < genericsLengthStack[genericsLengthPtr]; typeParameterIndex++) {
+		TypeParameter tp = (TypeParameter) genericsStack[genericsPtr - typeParameterIndex];
+		SingleTypeReference str = new SingleTypeReference(tp.name,tp.declarationSourceStart);
+		genericsStack[genericsPtr - typeParameterIndex] = str;
+	}
+}
 
 public Parser(
 	ProblemReporter problemReporter,
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java
index ec3b0c2..258d6b0 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java
@@ -33,16 +33,16 @@
     NT_OFFSET         = 117,
     SCOPE_UBOUND      = 170,
     SCOPE_SIZE        = 171,
-    LA_STATE_OFFSET   = 15076,
+    LA_STATE_OFFSET   = 15042,
     MAX_LA            = 1,
-    NUM_RULES         = 858,
+    NUM_RULES         = 859,
     NUM_TERMINALS     = 117,
-    NUM_NON_TERMINALS = 359,
-    NUM_SYMBOLS       = 476,
-    START_STATE       = 1093,
+    NUM_NON_TERMINALS = 360,
+    NUM_SYMBOLS       = 477,
+    START_STATE       = 912,
     EOFT_SYMBOL       = 75,
     EOLT_SYMBOL       = 75,
-    ACCEPT_ACTION     = 15075,
-    ERROR_ACTION      = 15076;
+    ACCEPT_ACTION     = 15041,
+    ERROR_ACTION      = 15042;
  
 }
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser1.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
index b34366a..3e0d97a 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser12.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
index c04e44a..9e8b904 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser14.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
index 018988a..69853cb 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser15.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
index 72695f3..a17d51a 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser16.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
index b832510..cb6b94e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser17.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
index 1679337..175ef0a 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser2.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
index a37e01d..79c8571 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser20.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
index 9281565..c16e3be 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser21.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
index 8b5079e..95aebd9 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser3.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
index 77720b8..468b0e6 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser4.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
index 315565c..0c49351 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser5.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
index cef66ee..3bcc381 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser6.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
index 0d6aa10..c952a13 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser8.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
index f1738f3..eeb3c63 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser9.rsc b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
index c18feb9..b54767a 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
Binary files differ
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/readableNames.properties b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/readableNames.properties
index 1b9e3a3..25705d6 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/readableNames.properties
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/readableNames.properties
@@ -1,4 +1,5 @@
 ,opt=,
+AbstractInterTypeMethodDeclaration=abstract inter-type method declaration
 AbstractMethodDeclaration=MethodDeclaration
 AbstractMethodDeclarationNoAround=MethodDeclaration
 AdditionalBound1=AdditionalBound1
@@ -7,6 +8,10 @@
 AdditionalBoundList=AdditionalBoundList
 AdditiveExpression=Expression
 AdditiveExpression_NotName=Expression
+AjName=name
+AjQualifiedName=qualified name
+AjSimpleName=identifer
+AjSimpleNameNoAround=identifier (aspect keywords permitted)
 AllocationHeader=AllocationHeader
 AndExpression=Expression
 AndExpression_NotName=Expression
@@ -26,6 +31,9 @@
 ArgumentListopt=ArgumentList
 Arguments=Arguments
 Argumentsopt=Argumentsopt
+AroundDeclaration=around advice
+AroundHeader=around advice header
+AroundHeaderName=[modifiers] <return-type> around (
 ArrayAccess=ArrayAccess
 ArrayCreationHeader=ArrayCreationHeader
 ArrayCreationWithArrayInitializer=ArrayCreationWithArrayInitializer
@@ -33,8 +41,17 @@
 ArrayInitializer=ArrayInitializer
 ArrayType=ArrayType
 ArrayTypeWithTypeArgumentsName=ArrayTypeWithTypeArgumentsName
+AspectBody=aspect body
+AspectBodyDeclaration=aspect member declaration
+AspectBodyDeclarations=member declaration
+AspectBodyDeclarationsopt=empty aspect body
 AspectDeclaration=aspect declaration
+AspectHeader=aspect header
+AspectHeaderName1=aspect declaration
+AspectHeaderName2=privileged aspect declaration
 AspectHeaderName=aspect header
+AspectHeaderRest=per-clause
+AspectHeaderRestStart=per-clause
 AssertStatement=AssertStatement
 Assignment=Assignment
 AssignmentExpression=Expression
@@ -77,6 +94,7 @@
 ClassType=ClassType
 ClassTypeElt=ClassType
 ClassTypeList=ClassTypeList
+ColonPseudoToken=any allowable token in pointcut or type pattern, except ':'
 CompilationUnit=CompilationUnit
 ConditionalAndExpression=Expression
 ConditionalAndExpression_NotName=Expression
@@ -90,6 +108,9 @@
 ConstructorHeader=ConstructorDeclaration
 ConstructorHeaderName=ConstructorHeaderName
 ContinueStatement=ContinueStatement
+DeclareAnnotationHeader=declare @AnnotationName
+DeclareDeclaration=declare statement
+DeclareHeader=declare [error | warning | parents | soft | precedence]
 DefaultValue=DefaultValue
 Diet=Diet
 DimWithOrWithOutExpr=Dimension
@@ -164,6 +185,15 @@
 InstanceofExpression=Expression
 InstanceofExpression_NotName=Expression
 IntegralType=IntegralType
+InterTypeConstructorDeclaration=inter-type constructor declaration
+InterTypeConstructorHeader=inter-type constructor declaration header
+InterTypeConstructorHeaderName=inter-type constructor declaration header
+InterTypeFieldBody=field initialization expression
+InterTypeFieldDeclaration=inter-type field declaration
+InterTypeFieldHeader=inter-type field declaration header
+InterTypeMethodDeclaration=inter-type method declaration
+InterTypeMethodHeader=inter-type method declaration header
+InterTypeMethodHeaderName=inter-type method declaration header
 InterfaceBody=InterfaceBody
 InterfaceDeclaration=InterfaceDeclaration
 InterfaceHeader=InterfaceHeader
@@ -179,6 +209,8 @@
 InternalCompilationUnit=CompilationUnit
 InvalidArrayInitializerAssignement=ArrayInitializerAssignement
 InvalidConstructorDeclaration=InvalidConstructorDeclaration
+JavaIdentifier=identifier
+JavaIdentifierNoAround=identifier
 LabeledStatement=LabeledStatement
 LabeledStatementNoShortIf=LabeledStatement
 Literal=Literal
@@ -209,6 +241,7 @@
 MultiplicativeExpression=Expression
 MultiplicativeExpression_NotName=Expression
 Name=Name
+NameOrAj=name
 NestedMethod=NestedMethod
 NestedType=NestedType
 NormalAnnotation=NormalAnnotation
@@ -223,6 +256,7 @@
 PackageDeclaration=PackageDeclaration
 PackageDeclarationName=PackageDeclarationName
 PointcutDeclaration=pointcut declaration
+PointcutHeader=pointcut declaration
 PostDecrementExpression=PostDecrementExpression
 PostIncrementExpression=PostIncrementExpression
 PostfixExpression=Expression
@@ -232,6 +266,9 @@
 Primary=Expression
 PrimaryNoNewArray=Expression
 PrimitiveType=PrimitiveType
+PseudoToken=allowable token in pointcut or type pattern
+PseudoTokens=type pattern or pointcut expression
+PseudoTokensNoColon=allowable token in pointcut or type pattern
 PushLPAREN=(
 PushLeftBrace=PushLeftBrace
 PushModifiers=PushModifiers
@@ -253,7 +290,9 @@
 ReturnStatement=ReturnStatement
 ShiftExpression=Expression
 ShiftExpression_NotName=Expression
+SimpleModifier=Modifiers
 SimpleName=SimpleName
+SimpleNameOrAj=name
 SingleMemberAnnotation=SingleMemberAnnotation
 SingleStaticImportDeclaration=SingleStaticImportDeclaration
 SingleStaticImportDeclarationName=SingleStaticImportDeclarationName
@@ -298,6 +337,7 @@
 TypeParameterList1=TypeParameterList1
 TypeParameterList=TypeParameterList
 TypeParameters=TypeParameters
+TypeParametersAsReference=type parameter list
 UnaryExpression=Expression
 UnaryExpressionNotPlusMinus=Expression
 UnaryExpressionNotPlusMinus_NotName=Expression