Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   /* *******************************************************************
    * Copyright (c) 2002,2003 Palo Alto Research Center, Incorporated (PARC).
    *               2004, contributors
    * All rights reserved. 
    * This program and the accompanying materials are made available 
    * under the terms of the Common Public License v1.0 
    * which accompanies this distribution and is available at 
    * http://www.eclipse.org/legal/cpl-v10.html 
    *  
   * Contributors: 
   *     PARC     initial implementation
   *     Adrian Colyer refactored for use in org.aspectj.org.eclipse.jdt.core package 
   * ******************************************************************/
  
  
  package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
  
  import java.util.Arrays;
  import java.util.List;
  
  
  
  // AspectJ Extension - this whole class is an AspectJ extension to the parser
  public class Parser extends TheOriginalJDTParserClass {
  	
  	private static final String ASPECTJ_DECLARATION_FACTORY = "org.aspectj.ajdt.internal.compiler.parser.DeclarationFactory";
  	
  	static {
  		try{
  			initTables(Parser.class);
  		} catch(java.io.IOException ex){
  		} catch (InstantiationException ex) {
  		} catch (IllegalAccessException ex) {
  		} catch (ClassNotFoundException ex) {
  			..println("Warning: AspectJ declaration factory class not found on classpath");
  			//throw new ExceptionInInitializerError(ex.getMessage());
  		}
  	}
  
  	public interface IDeclarationFactory {
  			void setPrivileged(TypeDeclaration aspectDeclboolean isPrivileged);
  			void setPerClauseFrom(TypeDeclaration aspectDeclASTNode pseudoTokensParser parser);
  			void setDominatesPatternFrom(TypeDeclaration aspectDeclASTNode pseudoTokensParser parser);
  			ASTNode createPointcutDesignator(Parser parserASTNode pseudoTokens);
  			void setExtraArgument(MethodDeclaration adviceDeclarationArgument arg);
  			boolean isAfterAdvice(MethodDeclaration adviceDecl);
  			void setSelector(MethodDeclaration interTypeDeclchar[] selector);
  			void setDeclaredModifiers(MethodDeclaration interTypeDeclint modifiers);
  			void setInitialization(MethodDeclaration itdFieldDeclExpression initialization);
  			void setOnType(MethodDeclaration interTypeDeclTypeReference onType);
  			ASTNode createPseudoToken(Parser parserString valueboolean isIdentifier);
  			void setLiteralKind(ASTNode pseudoTokenString string);
  			boolean shouldTryToRecover(ASTNode node);
  	}
  	
 //	public final static void initAjTables(Class parserClass)
 //		throws java.io.IOException {
 //
 //		final String prefix = FILEPREFIX;
 //		int i = 0;
 //		lhsStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
 //		char[] chars = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
 //		check_tableStatic = new short[chars.length];
 //		for (int c = chars.length; c-- > 0;) {
 //			check_tableStatic[c] = (short) (chars[c] - 32768);
 //		}
 //		asbStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
 //		asrStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
 //		symbol_indexStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
 //		actionStatic = lhsStatic;
 //	}
 
 	//positions , dimensions , .... (int stacks)
 	protected int aspectIntPtr;
 	protected int[] aspectIntStack;
 
 	/* (non-Javadoc)
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.TheOriginalJDTParserClass#initialize()
 	 */
 	public void initialize() {
 		super.initialize();
 		 = -1;
 		 = new int[4];
 	}
 
 	public void initialize(boolean initializeNLS) {
 		super.initialize(initializeNLS);
 		 = -1;
 		 = new int[4];
 	}
 	
 	public void initializeScanner(){
 		this. = new Scanner(
 			false /*comment*/
 			false /*whitespace*/
 			this.. /*sourceLevel*/
 			this../*taskTags*/,
 			this../*taskPriorities*/,
 			this../*taskCaseSensitive*/);
 	}
 	
 	
 	
 //*************New display debugging method
 	private static final boolean AJ_DEBUG = false;
 
 	void println(Object o) {
 	}
 
 	private void printStack(Object[] sint p) {
 		List list = Arrays.asList(s);
 		..println("  " + list.subList(0, p+1));
 	}
 	
 	private void printStack(int[] sint p) {
 		StringBuffer buf = new StringBuffer("[");
 		for (int i=0; i<p+1; i++) {
 			if (i > 0) buf.append(", ");
 			buf.append(Integer.toString(s[i]));
 		}
 		buf.append("]");
 		..println("  " + buf);
 	}
 			
 	private void printStack(long[] sint p) {
 		StringBuffer buf = new StringBuffer("[");
 		for (int i=0; i<p+1; i++) {
 			if (i > 0) buf.append(", ");
 			buf.append(Long.toString(s[i]));
 		}
 		buf.append("]");
 		..println("  " + buf);
 	}
 			
 	private void printStack(char[][] sint p) {
 		StringBuffer buf = new StringBuffer("[");
 		for (int i=0; i<p+1; i++) {
 			if (i > 0) buf.append(", ");
 			buf.append(new String(s[i]));
 		}
 		buf.append("]");
 		..println("  " + buf);
 	}
 			
 	public void display() {
 		if (!return;
 		..print("astStack: ");
 		..print("astLengthStack: ");
 		
 		..print("expressionStack: ");
 		..print("expressionLengthStack: ");
 
 		..print("identifierStack: ");
 		..print("identifierLengthStack: ");
 		..print("identifierPositionStack: ");
 
 		
 		..print("intStack:");
 	}	
 
 
 
 //************** Overriding behavior for standard Java rules
 	}
 	
 	}
 	
 	protected void consumeMethodInvocationName() {
 
 		if (CharOperation.equals(m.selector"proceed".toCharArray())) {
 		}
 	}
 	
 	protected void consumeToken(int type) {
 		super.consumeToken(type);
 		switch (type) {
 			case  :  // pseudo keyword
 				//aspectIntPtr = -1; //XXX  If we ever see a bug with aspects nested in aspects,
                 //                   // this line is the culprit!
 				// deliberate fall through...
 			case  :  // pseudo keyword
 			case  :  // pseudo keyword
 			case  :  // pseudo keyword
 			case  :  // pseudo keyword
 			case  :  // pseudo keyword
 			case  :  // pseudo keyword
 				break;
 		}
 	}
 
 
 //************New AspectJ rules	
 	protected void consumeAspectDeclaration() {
 	    // AspectDeclaration ::= AspectHeader AspectBody
 	    //??? post parsing step here
 	}
 	
 	protected void consumeAspectHeader() {
 	    // AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt AspectHeaderRest
 	}
 
 	protected void consumeAspectHeaderName(boolean isPrivileged) {
 		// (isPrivileged == false) -> AspectHeaderName ::= Modifiersopt 'aspect' 'Identifier'
 		// (isPrivileged == true) -> AspectHeaderName ::= Modifiersopt 'privileged' Modifiersopt 'aspect' 'Identifier'
 		if (this.[this.] == 0) {
 			if (this. != 0) {
 				aspectDecl.bits |= .;
 			}
 		} else {
 			// Record that the block has a declaration for local types
 			aspectDecl.bits |= .;
 		}			
 
 		println("aspect header name: ");
 		this.display();
 
 		//highlight the name of the type
 		aspectDecl.sourceEnd = (intpos;
 		aspectDecl.sourceStart = (int) (pos >>> 32);
 		aspectDecl.name = [--];
 
 		//compute the declaration source too
 		// 'class' and 'interface' push two int positions: the beginning of the class token and its end.
 		// we want to keep the beginning position but get rid of the end position
 		// it is only used for the ClassLiteralAccess positions.
 		aspectDecl.declarationSourceStart = this.[this.--]; 
 		this.--; // remove the end position of the class token
 
 		// pop the aspect pseudo-token
 
 
 		// handle modifiers, only without privileged for now
 		if (isPrivileged) {
 			pos = eatIdentifier(); // eat the privileged
 //			int end = (int) pos;
 //		    int start = (int) (pos >>> 32);
 		    .setPrivileged(aspectDecl,true);
 			//problemReporter().signalError(start, end, "privileged is unimplemented in 1.1alpha1");
 		}
 		aspectDecl.modifiersSourceStart = [--];
 		aspectDecl.modifiers = [--];
 		if (isPrivileged) {
 			aspectDecl.modifiersSourceStart = [--];
 			aspectDecl.modifiers |= [--];
 		}
 		if (aspectDecl.modifiersSourceStart >= 0) {
 			aspectDecl.declarationSourceStart = aspectDecl.modifiersSourceStart;
 		}
 
 		println("modifiers: " + aspectDecl.modifiers);
 
 		// consume annotations
 		int length;
 		if ((length = this.[this.--]) != 0) {
 			System.arraycopy(
 				(this. -= length) + 1, 
 				aspectDecl.annotations = new Annotation[length], 
 				0, 
 				length); 
 		}
 
 		aspectDecl.bodyStart = aspectDecl.sourceEnd + 1;
 		pushOnAstStack(aspectDecl);
 
 		 = 0; // will be updated when reading super-interfaces
 		// recovery
 		if ( != null) {
 			 = aspectDecl.bodyStart;
 			 = .add(aspectDecl, 0);
 		}
 
         // Grab the javadoc
         aspectDecl.javadoc = this.;
         this. = null;
 
 		this.display();
 	}
 
 	protected void consumeAspectHeaderNameWithTypeParameters(boolean isPriviliged) {
 		TypeDeclaration typeDecl = (TypeDeclaration)this.[this.];
 
 		// consume type parameters
 		int length = this.[this.--];
 		this. -= length;
 		System.arraycopy(this.this. + 1, typeDecl.typeParameters = new TypeParameter[length], 0, length);
 
 		typeDecl.bodyStart = typeDecl.typeParameters[length-1]. + 1;
 		
 		
 		if (this. != null) { // is recovering
 			this. = typeDecl.bodyStart;
 		}
 	}
 	
 	private long eatIdentifier() {
 		return pos;
 	}
 
 	protected void consumeAspectHeaderRest() {
 		//--[dominates TypePattern] [persingleton() | percflow(PCD) | perthis(PCD) | pertarget(PCD)]
 		//AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens
 		this.display();
 		ASTNode pseudoTokens = popPseudoTokens("{");
 		println("pseudo: " + pseudoTokens);
 
 		
 		.setDominatesPatternFrom(aspectDecl,pseudoTokens,this);
 		.setPerClauseFrom(aspectDecl,pseudoTokens,this);
 		// XXX handle dominates
 	}
 	
 	
 	protected void consumePointcutDeclaration() {
 	}
 	
 	// AspectJ extension - accessor method for the currentTokenStart
 	public int getCurrentTokenStart() {
 	}
 	// End AspectJ extension
 	
 	protected void consumeEmptyPointcutDeclaration() {
 		// AspectJ extension - set up some positions, required by AST support
 		pcutDecl.bodyEnd = ;
 		// End Aspectj Extension
 		//??? set pcd to non-null
 	}
 	
 	protected void consumePointcutHeader() {
 		//PointcutDeclaration ::= Modifiersopt 'pointcut'  JavaIdentifier '('
 		
 		
 		//the name
 //		int sourceEnd = (int) pos;
 		ret.sourceStart = (int) (pos >>> 32);
 		ret.selector = [--];
         
         // Grab the javadoc
 		ret.javadoc = this.;
         this. = null;
         
 		// pop the 'pointcut' keyword
 
 		// modifiers
 		ret.declarationSourceStart = [--];
 		ret.modifiers = [--];
 		// consume annotations
 		int length;
 		if ((length = this.[this.--]) != 0) {
 			System.arraycopy(
 				(this. -= length) + 1, 
 				ret.annotations = new Annotation[length], 
 				0, 
 				length); 
 		}
 		
 	}
 	
 
 
 	protected void consumeAroundDeclaration() {
 		// AroundDeclaration ::= AroundHeader MethodBody
 	}
 
 	protected void consumeAroundHeader() {
 		resetModifiers(); // forget any modifiers encountered in the pointcut 263666
 	}
 
 	protected void consumeAroundHeaderName() {
 		// AroundHeaderName ::= Modifiersopt Type  'around' '(' 
 		
 		
 		// skip the name of the advice
 		long pos = eatIdentifier();
 		adviceDecl.sourceStart = (int) (pos >>> 32);
         
 		// but put in a placeholder name
         adviceDecl.selector = new char[] {'a','j','c','$','a','d','v','i','c','e'};
 
 		
 		//modifiers
 		adviceDecl.declarationSourceStart = [--];
 		adviceDecl.modifiers = [--];
 
 		adviceDecl.returnType = returnType;
 		
 		// consume annotations
 		int length;
 		if ((length = this.[this.--]) != 0) {
 			System.arraycopy(
 				(this. -= length) + 1, 
 				adviceDecl.annotations = new Annotation[length], 
 				0, 
 				length); 
 		}
         
         // Grab the javadoc
         adviceDecl.javadoc = this.;
         this. = null;
 		
 		//XXX get some locations right
 		
 		pushOnAstStack(adviceDecl);
 	}
 	
 	protected void consumePointcutDesignatorOnAdvice() {
 		adviceDecl.sourceEnd = 	des.sourceEnd;
 		adviceDecl.bodyStart = des.sourceEnd+1;
 	}
 	
 		pcutDecl.sourceEnd = 	des.sourceEnd;
 		pcutDecl.bodyStart = des.sourceEnd+1;
 		pcutDecl.bodyEnd = ;
 		pcutDecl.declarationSourceEnd = flushCommentsDefinedPriorTo();
 	}
 	
 	
 	protected void consumeBasicAdviceDeclaration() {
 		// BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody
 	}
 
 	protected void consumeBasicAdviceHeader() {
 		// BasicAdviceHeader ::= BasicAdviceHeaderName MethodHeaderParameters ExtraParamopt MethodHeaderThrowsClauseopt ':' PseudoTokens
 		resetModifiers(); // forget any modifiers encountered in the pointcut 263666
 	}
 	
 	
 	protected void consumeBasicAdviceHeaderName(boolean isAfter) {
 		// BasicAdviceHeaderName ::= 'before'|'after '(' 
 		
 		MethodDeclaration adviceDecl =
 		
         // skip the name of the advice
 		long pos = eatIdentifier();
 		// but give a placeholder selector name
 		adviceDecl.selector = new char[] {'a','j','c','$','a','d','v','i','c','e'};
         adviceDecl.sourceStart = (int) (pos >>> 32);
 		
 		//modifiers
 		adviceDecl.declarationSourceStart = [--];
 		adviceDecl.modifiers = [--];
 
 		// consume annotations
 		int length;
 		if ((length = this.[this.--]) != 0) {
 			System.arraycopy(
 				(this. -= length) + 1, 
 				adviceDecl.annotations = new Annotation[length], 
 				0, 
 				length); 
 		}
 
         // Grab the javadoc
         adviceDecl.javadoc = this.;
         this. = null;
 		
 		//??? get more locations right
 		
 		pushOnAstStack(adviceDecl);
 	}
 	
 	protected void consumeExtraParameterWithFormal() {
 		
 		
 	}
 
 	
 	protected void consumeExtraParameterNoFormal() {
 		
 		
 	    long pos = [];
 	    int end = (intpos;
 		int start = (int) (pos >>> 32);
 	    char[] name = [--];
 	    
 	    //System.out.println("extra parameter: " + new String(name));
 	    
 	    if (.isAfterAdvice(adviceDecl)) {
 	    	//XXX error, extra param makes no sense here
 	    }
 	    
 	    if (CharOperation.equals(name"throwing".toCharArray())) {
 	    } else if (CharOperation.equals(name"returning".toCharArray())) {
 	    } else {
 				start
 				end
 				name
 				String.valueOf(name), 
 				new String[] {"throwing""returning"":"}); 
 	    }
 	}
 
 	protected void consumeClassBodyDeclarationInAspect() { }
 	
 
 	protected void consumeDeclareDeclaration() {
 		ASTNode tokens = popPseudoTokens(";");
 //		println("parsed declare: " + declare);
 		pushOnAstStack(declareDecl);
 	}
 
 
 	protected void consumeDeclareAnnotation() {
 		ASTNode tokens = popPseudoTokens(";");
 
 		int length;
 		Annotation[] annotations = new Annotation[1]; // there should only ever be one for us...
     	if ((length = this.[this.--]) != 0) {
     		System.arraycopy(
     			this.
     			(this. -= length) + 1, 
     			annotations = new Annotation[length], 
     			0, 
     			length); 
     	}
 
     	pushOnAstStack(declareDecl);
 	}
 
 	protected void consumeDeclareAnnotationHeader() {
 		consumePseudoTokenIdentifier();  // declare
 
 		consumePseudoToken("@",0,false);
 		
 		consumePseudoToken(":", 0, false);
 
 		println(">>>>>>>>>>>>>>>>>>>>>>>declare annotation header");
 	}
 
 	protected void consumeDeclareHeader() {
 		consumePseudoTokenIdentifier();  // declare
 		
 		consumePseudoToken(":", 0, false);
 
 		println(">>>>>>>>>>>>>>>>>>>>>>>declare header");
 	}
 
 	protected void consumeInterTypeFieldHeader(boolean hasTypeParameters) {
 		println("about to consume field");
 		this.display();
 
 		int end = (intpos;
 		int start = (int) (pos >>> 32);
 		char[] identifierName = [--];
 //		int extendedDimension = this.intStack[this.intPtr--];  // XXXX see consumeEnterVariable for what to do with this
 
 		if (hasTypeParameters) {
 		} else {
 		}
 
 
 		this.display();
 
 		int decSourceStart = [--];
 		int fieldModifiers = [--];
 
 				onType);
 		
 		dec.returnType = returnType;
 		dec.sourceStart = start;
 		dec.sourceEnd = end;
 		.setSelector(dec,identifierName);
 		dec.declarationSourceStart = decSourceStart;
 //		declarationFactory.setInitialization(dec,initialization);
 		
 		dec.bodyEnd = ;
 //		dec.declarationSourceEnd = flushCommentsDefinedPriorTo(endStatementPosition);
 
 		// Grab the javadoc
         dec.javadoc = this.;
         this. = null;
 
     	// consume annotations
     	int length;
     	if ((length = this.[this.--]) != 0) {
     		System.arraycopy(
     			this.
     			(this. -= length) + 1, 
     			dec.annotations = new Annotation[length], 
     			0, 
     			length); 
     	}
 
 		println("consumed field: " + dec);
 		this.display();
 }
 		MethodDeclaration itdDecl = (MethodDeclarationthis.[this.];
 	}
 		MethodDeclaration itdDecl = (MethodDeclarationthis.[this.];
 		Expression initialization = this.[this.--];
 		.setInitialization(itdDecl,initialization);
 		// we need to update the declarationSourceEnd of the local variable declaration to the
 		// source end position of the initialization expression
 		itdDecl.declarationSourceEnd = initialization.sourceEnd;
 	}
 
 	protected void consumeInterTypeFieldDeclaration() {
 
 		dec.bodyEnd = ;
 		dec.declarationSourceEnd = flushCommentsDefinedPriorTo();
 	}
 
 	protected void consumeInterTypeMethodDeclaration(boolean isNotAbstract) {
 		consumeMethodDeclaration(isNotAbstract);
 	}
 
 	protected void consumeInterTypeMethodHeader() {
 	}
 
 	}
 
 	protected void consumeInterTypeConstructorHeader() {
 	}
 
 	protected void consumeInterTypeMethodHeaderName(boolean hasMethodTypeParametersboolean hasGenericTypeParameters) {
 		//InterTypeMethodHeaderName ::= Modifiersopt Type OnType '.' JavaIdentifier '('
 		this.display();
 
 		//identifier
 		char[] name = [];
 		long selectorSource = [--];
 
 
 		//onType
 		if (hasGenericTypeParameters) {
 			//consumeClassOrInterfaceName();
 		} else {
 		}
 
 		//type
 		md.returnType = getTypeReference([--]);
 
 		// consume method type parameters
 		if (hasMethodTypeParameters) {
 			int tp_length = this.[this.--];
 			this. -= tp_length;
 			System.arraycopy(this.this. + 1, md.typeParameters = new TypeParameter[tp_length], 0, tp_length);
 		}
 
 
 		//modifiers
 		md.declarationSourceStart = [--];
 
 		//highlight starts at selector start
 		md.sourceStart = (int) (selectorSource >>> 32);
 		md.sourceEnd = ;
 		md.bodyStart =  + 1;
 		 = 0;
 		// initialize listLength before reading parameters/throws
  
  		// Grab the javadoc
         md.javadoc = this.;
         this. = null;
 
     	// consume annotations
     	int length;
     	if ((length = this.[this.--]) != 0) {
     		System.arraycopy(
     			this.
     			(this. -= length) + 1, 
     			md.annotations = new Annotation[length], 
     			0, 
     			length); 
     	}
 
 		// recovery
 		if ( != null) {
 			if ( instanceof RecoveredType
 				//|| md.modifiers != 0
 				|| (.getLineNumber(md.returnType.sourceStart)
 					== .getLineNumber(md.sourceStart))) {
 				 = md.bodyStart;
 			} else {
 				 = md.sourceStart;
 				 = true;
 			}
 		}
 	}
 
 	protected void consumeInterTypeConstructorHeaderName(boolean hasConstructorTypeParametersboolean hasTargetTypeParameters) {
 		//InterTypeConstructorHeaderName ::= Modifiersopt Name '.' 'new' '('
 		this.display();
 
 		//identifier
 //		md.selector = identifierStack[identifierPtr];
 //		long selectorSource = identifierPositionStack[identifierPtr--];
 ////		identifierLengthPtr--;
 
 		//onType
 		if (!hasTargetTypeParameters) {
 		}
 
 		println("got onType: " + onType);
 		this.display();
 
 		--; // pop new info
 		//type
 		md.returnType = TypeReference.baseTypeReference(, 0); //getTypeReference(intStack[intPtr--]);
 		
 		if (hasConstructorTypeParameters) {
 			// consume type parameters
 			int tp_length = this.[this.--];
 			this. -= tp_length;
 			System.arraycopy(this.this. + 1, md.typeParameters = new TypeParameter[tp_length], 0, tp_length);
 		}
 		
 		//modifiers
 		md.declarationSourceStart = [--];
 		//md.modifiers = intStack[intPtr--];
 
 		// consume annotations
 		int length;
 		if ((length = this.[this.--]) != 0) {
 			System.arraycopy(
 				(this. -= length) + 1, 
 				md.annotations = new Annotation[length], 
 				0, 
 				length); 
 		}
 
 		//highlight starts at selector start
 		//md.sourceStart = (int) (selectorSource >>> 32);
 		md.sourceStart = onType.sourceStart;
 		md.sourceEnd = ;
 		md.bodyStart =  + 1;
 		 = 0;
 		// initialize listLength before reading parameters/throws
 
 			(new String(CharOperation.concatWith(onType.getTypeName(), '_')) + "_new").toCharArray());
 		
 
 		// recovery
 		if ( != null) {
 			if ( instanceof RecoveredType
 				//|| md.modifiers != 0
 				//|| (scanner.getLineNumber(md.returnType.sourceStart)
 				//	== scanner.getLineNumber(md.sourceStart))
 				) {
 				//lastCheckPoint = md.bodyStart;
 			} else {
 				 = md.sourceStart;
 				 = true;
 			}
 		}
 	}
 
 
 
 //*********************************************************
 
 
 	protected void consumePseudoToken(String value) {
 		consumePseudoToken(value, 0, false);
 	}
 
 	protected void consumePseudoToken(
 		String value,
 		int popFromIntStack,
 		boolean isIdentifier) {
 		 -= popFromIntStack;
 
 		int start = ;
 		int end = start + value.length() - 1;
 		ASTNode tok = .createPseudoToken(thisvalueisIdentifier);
 		tok.sourceStart = start;
 		tok.sourceEnd = end;
 	}
 
 	protected void consumePseudoTokenIdentifier() {
 		int end = (intpos;
 		int start = (int) (pos >>> 32);
 		char[] name = [--];
 
 		ASTNode tok = .createPseudoToken(thisnew String(name), true);
 		tok.sourceStart = start;
 		tok.sourceEnd = end;
 	}
 
 	protected void consumePseudoTokenIf() {
 		//this.display();
 		println("expr: " + expr);
 
 		int start = [--];
 		tok.sourceStart = start;
 		tok.sourceEnd = this.;
 	}
 
 	protected void consumePseudoTokenLiteral() {
 		//System.out.println("literal: " + new String(literal.source()));
 
 		ASTNode tok = .createPseudoToken(thisnew String(literal.source()), false);
 		tok.sourceStart = literal.sourceStart;
 		tok.sourceEnd = literal.sourceEnd;
 	}
 
 	protected void consumePseudoTokenModifier() {
 		//int modifier = modifiers;
 		consumePseudoToken(Modifier.toString(), 0, true);
 	}
 
 	protected void consumePseudoTokenPrimitiveType() {
 
 		ASTNode tok = .createPseudoToken(thistype.toString(), true);
 		tok.sourceStart = type.sourceStart;
 		tok.sourceEnd = type.sourceEnd;
	protected void consumePseudoTokens() {
	// This method is part of an automatic generation : do NOT edit-modify  
	protected void consumeRule(int act) {
	  switch ( act ) {
	    case 34 : if () { ..println("Type ::= PrimitiveType"); }  //$NON-NLS-1$
			    consumePrimitiveType();  
				break;
	 
	    case 48 : if () { ..println("ReferenceType ::= ClassOrInterfaceType"); }  //$NON-NLS-1$
			    consumeReferenceType();   
				break;
	 
	    case 52 : if () { ..println("ClassOrInterface ::= Name"); }  //$NON-NLS-1$
				break;
	 
	    case 53 : if () { ..println("ClassOrInterface ::= GenericType DOT Name"); }  //$NON-NLS-1$
			    consumeClassOrInterface();   
				break;
	 
	    case 54 : if () { ..println("GenericType ::= ClassOrInterface TypeArguments"); }  //$NON-NLS-1$
			    consumeGenericType();   
				break;
	 
	    case 55 : if () { ..println("ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name"); }  //$NON-NLS-1$
				break;
	 
	    case 56 : if () { ..println("ArrayType ::= PrimitiveType Dims"); }  //$NON-NLS-1$
				break;
	 
	    case 57 : if () { ..println("ArrayType ::= Name Dims"); }  //$NON-NLS-1$
			    consumeNameArrayType();   
				break;
	 
	    case 58 : if () { ..println("ArrayType ::= ArrayTypeWithTypeArgumentsName Dims"); }  //$NON-NLS-1$
				break;
	 
	    case 59 : if () { ..println("ArrayType ::= GenericType Dims"); }  //$NON-NLS-1$
				break;
	 
	    case 75 : if () { ..println("AjQualifiedName ::= AjName DOT SimpleNameOrAj"); }  //$NON-NLS-1$
			    consumeQualifiedName();  
				break;
	 
	    case 79 : if () { ..println("QualifiedName ::= Name DOT JavaIdentifier"); }  //$NON-NLS-1$
			    consumeQualifiedName();  
				break;
	 
	    case 80 : if () { ..println("CompilationUnit ::= EnterCompilationUnit..."); }  //$NON-NLS-1$
				break;
	 
	    case 81 : if () { ..println("InternalCompilationUnit ::= PackageDeclaration"); }  //$NON-NLS-1$
				break;
	 
	    case 82 : if () { ..println("InternalCompilationUnit ::= PackageDeclaration..."); }  //$NON-NLS-1$
				break;
	 
	    case 83 : if () { ..println("InternalCompilationUnit ::= PackageDeclaration..."); }  //$NON-NLS-1$
				break;
	 
	    case 84 : if () { ..println("InternalCompilationUnit ::= PackageDeclaration..."); }  //$NON-NLS-1$
				break;
	 
	    case 85 : if () { ..println("InternalCompilationUnit ::= ImportDeclarations..."); }  //$NON-NLS-1$
				break;
	 
	    case 86 : if () { ..println("InternalCompilationUnit ::= TypeDeclarations"); }  //$NON-NLS-1$
				break;
	 
	    case 87 : if () { ..println("InternalCompilationUnit ::= ImportDeclarations..."); }  //$NON-NLS-1$
				break;
	 
	    case 88 : if () { ..println("InternalCompilationUnit ::="); }  //$NON-NLS-1$
				break;
	 
	    case 89 : if () { ..println("ReduceImports ::="); }  //$NON-NLS-1$
			    consumeReduceImports();  
				break;
	 
	    case 90 : if () { ..println("EnterCompilationUnit ::="); }  //$NON-NLS-1$
				break;
	 
	    case 106 : if () { ..println("CatchHeader ::= catch LPAREN FormalParameter RPAREN..."); }  //$NON-NLS-1$
			    consumeCatchHeader();  
				break;
	 
	    case 108 : if () { ..println("ImportDeclarations ::= ImportDeclarations..."); }  //$NON-NLS-1$
				break;
	 
	    case 110 : if () { ..println("TypeDeclarations ::= TypeDeclarations TypeDeclaration"); }  //$NON-NLS-1$
				break;
	 
	    case 111 : if () { ..println("PackageDeclaration ::= PackageDeclarationName SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 112 : if () { ..println("PackageDeclarationName ::= Modifiers package..."); }  //$NON-NLS-1$
				break;
	 
	    case 113 : if () { ..println("PackageDeclarationName ::= PackageComment package Name"); }  //$NON-NLS-1$
				break;
	 
	    case 114 : if () { ..println("PackageComment ::="); }  //$NON-NLS-1$
			     consumePackageComment();  
				break;
	 
	    case 119 : if () { ..println("SingleTypeImportDeclaration ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 120 : if () { ..println("SingleTypeImportDeclarationName ::= import Name"); }  //$NON-NLS-1$
				break;
	 
	    case 121 : if () { ..println("TypeImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 122 : if () { ..println("TypeImportOnDemandDeclarationName ::= import Name DOT"); }  //$NON-NLS-1$
				break;
	 
	     case 125 : if () { ..println("TypeDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 129 : if () { ..println("Modifiers ::= Modifiers Modifier"); }  //$NON-NLS-1$
			    consumeModifiers2();  
				break;
	 
	    case 142 : if () { ..println("Modifier ::= Annotation"); }  //$NON-NLS-1$
				break;
	 
	    case 155 : if () { ..println("AspectDeclaration ::= AspectHeader AspectBody"); }  //$NON-NLS-1$
				break;
	 
	    case 156 : if () { ..println("AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt"); }  //$NON-NLS-1$
			    consumeAspectHeader();  
				break;
	 
	    case 159 : if () { ..println("AspectHeaderName ::= AspectHeaderName1 TypeParameters"); }  //$NON-NLS-1$
				break;
	 
	    case 160 : if () { ..println("AspectHeaderName ::= AspectHeaderName2 TypeParameters"); }  //$NON-NLS-1$
				break;
	 
	    case 161 : if () { ..println("AspectHeaderName1 ::= Modifiersopt aspect Identifier"); }  //$NON-NLS-1$
			    consumeAspectHeaderName(false);  
				break;
	 
	    case 162 : if () { ..println("AspectHeaderName2 ::= Modifiersopt privileged..."); }  //$NON-NLS-1$
			    consumeAspectHeaderName(true);  
				break;
	 
	    case 164 : if () { ..println("AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens"); }  //$NON-NLS-1$
				break;
	 
	    case 165 : if () { ..println("AspectHeaderRestStart ::= Identifier"); }  //$NON-NLS-1$
				break;
	 
	    case 168 : if () { ..println("AspectBodyDeclarations ::= AspectBodyDeclarations..."); }  //$NON-NLS-1$
				break;
	 
	    case 169 : if () { ..println("AspectBodyDeclarationsopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 170 : if () { ..println("AspectBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
				break;
	 
	    case 171 : if () { ..println("AspectBodyDeclaration ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 175 : if () { ..println("ClassBodyDeclarationNoAroundMethod ::= Diet..."); }  //$NON-NLS-1$
				break;
	 
	    case 184 : if () { ..println("ClassMemberDeclarationNoAroundMethod ::= SEMICOLON"); }  //$NON-NLS-1$
				break;
	    case 186 : if () { ..println("MethodDeclarationNoAround ::= MethodHeaderNoAround..."); }  //$NON-NLS-1$
			    // set to true to consume a method with a body
				break;
	 
	    case 187 : if () { ..println("AbstractMethodDeclarationNoAround ::=..."); }  //$NON-NLS-1$
			    // set to false to consume a method without body
				break;
	 
	    case 188 : if () { ..println("MethodHeaderNoAround ::= MethodHeaderNameNoAround..."); }  //$NON-NLS-1$
			    consumeMethodHeader();  
				break;
	 
	    case 189 : if () { ..println("MethodHeaderNameNoAround ::= Modifiersopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 190 : if () { ..println("MethodHeaderNameNoAround ::= Modifiersopt Type..."); }  //$NON-NLS-1$
			    consumeMethodHeaderName(false);  
				break;
	 
	    case 191 : if () { ..println("PointcutDeclaration ::= PointcutHeader..."); }  //$NON-NLS-1$
				break;
	 
	    case 192 : if () { ..println("PointcutDeclaration ::= PointcutHeader..."); }  //$NON-NLS-1$
				break;
	 
	    case 193 : if () { ..println("PointcutHeader ::= Modifiersopt pointcut JavaIdentifier"); }  //$NON-NLS-1$
				break;
	 
	    case 196 : if () { ..println("AroundDeclaration ::= AroundHeader MethodBody"); }  //$NON-NLS-1$
				break;
	 
	    case 197 : if () { ..println("AroundHeader ::= AroundHeaderName..."); }  //$NON-NLS-1$
			    consumeAroundHeader();  
				break;
	 
	    case 198 : if () { ..println("AroundHeaderName ::= Modifiersopt Type around LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 199 : if () { ..println("AroundHeaderName ::= Modifiersopt around LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 200 : if () { ..println("BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody"); }  //$NON-NLS-1$
				break;
	 
	    case 203 : if () { ..println("BeforeAdviceHeader ::= BeforeAdviceHeaderName..."); }  //$NON-NLS-1$
				break;
	 
	    case 204 : if () { ..println("AfterAdviceHeader ::= AfterAdviceHeaderName..."); }  //$NON-NLS-1$
				break;
	 
	    case 205 : if () { ..println("BeforeAdviceHeaderName ::= Modifiersopt before LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 206 : if () { ..println("AfterAdviceHeaderName ::= Modifiersopt after LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 207 : if () { ..println("ExtraParamopt ::= Identifier LPAREN FormalParameter..."); }  //$NON-NLS-1$
				break;
	 
	    case 208 : if () { ..println("ExtraParamopt ::= Identifier LPAREN RPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 209 : if () { ..println("ExtraParamopt ::= Identifier"); }  //$NON-NLS-1$
				break;
	 
	    case 212 : if () { ..println("OnType ::= OnType DOT JavaIdentifier"); }  //$NON-NLS-1$
			    consumeQualifiedName();  
				break;
	 
	    case 217 : if () { ..println("InterTypeMethodDeclaration ::= InterTypeMethodHeader..."); }  //$NON-NLS-1$
			    // set to true to consume a method with a body
				break;
	 
	    case 218 : if () { ..println("InterTypeMethodHeader ::= InterTypeMethodHeaderName..."); }  //$NON-NLS-1$
				break;
	 
	    case 219 : if () { ..println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
			    consumeInterTypeMethodHeaderName(false,false);  
				break;
	 
	    case 220 : if () { ..println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
				break;
	 
	    case 221 : if () { ..println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
				break;
	 
	    case 222 : if () { ..println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
			    consumeInterTypeMethodHeaderName(false,true);  
				break;
	 
	    case 223 : if () { ..println("InterTypeMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
			    consumeInterTypeMethodHeaderName(true,false);  
				break;
	 
	    case 224 : if () { ..println("InterTypeMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
			    consumeInterTypeMethodHeaderName(true,true);  
				break;
	 
	    case 225 : if () { ..println("AbstractInterTypeMethodDeclaration ::=..."); }  //$NON-NLS-1$
			    // set to false to consume a method without body
				break;
	 
	    case 226 : if () { ..println("TypeParametersAsReference ::= TypeParameters"); }  //$NON-NLS-1$
				break;
	 
	    case 227 : if () { ..println("InterTypeConstructorDeclaration ::=..."); }  //$NON-NLS-1$
			    // set to true to consume a method with a body
				break;
	 
	    case 228 : if () { ..println("InterTypeConstructorHeader ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 229 : if () { ..println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); }  //$NON-NLS-1$
				break;
	 
	    case 230 : if () { ..println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); }  //$NON-NLS-1$
				break;
	 
	    case 231 : if () { ..println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); }  //$NON-NLS-1$
				break;
	 
	    case 232 : if () { ..println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 233 : if () { ..println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 234 : if () { ..println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 235 : if () { ..println("InterTypeFieldDeclaration ::= InterTypeFieldHeader..."); }  //$NON-NLS-1$
				break;
	 
	    case 236 : if () { ..println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT"); }  //$NON-NLS-1$
			    consumeInterTypeFieldHeader(false);  
				break;
	 
	    case 237 : if () { ..println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT"); }  //$NON-NLS-1$
				break;
	 
	    case 238 : if () { ..println("InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS"); }  //$NON-NLS-1$
				break;
	 
	    case 239 : if () { ..println("InterTypeFieldHeader ::= Modifiersopt Type OnType..."); }  //$NON-NLS-1$
				break;
	 
	    case 240 : if () { ..println("InterTypeFieldBody ::="); }  //$NON-NLS-1$
				break;
	 
	    case 241 : if () { ..println("InterTypeFieldBody ::= EQUAL ForceNoDiet..."); }  //$NON-NLS-1$
				break;
	 
	    case 243 : if () { ..println("DeclareDeclaration ::= DeclareHeader PseudoTokens..."); }  //$NON-NLS-1$
				break;
	 
	    case 244 : if () { ..println("DeclareHeader ::= declare Identifier COLON"); }  //$NON-NLS-1$
			    consumeDeclareHeader();  
				break;
	 
	    case 245 : if () { ..println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
				break;
	 
	    case 246 : if () { ..println("DeclareAnnotationHeader ::= declare AT Identifier COLON"); }  //$NON-NLS-1$
				break;
	 
	    case 249 : if () { ..println("PseudoTokens ::= PseudoTokens ColonPseudoToken"); }  //$NON-NLS-1$
			    consumePseudoTokens();  
				break;
	 
	    case 250 : if () { ..println("PseudoTokens ::= PseudoTokens PseudoToken"); }  //$NON-NLS-1$
			    consumePseudoTokens();  
				break;
	 
	    case 252 : if () { ..println("PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken"); }  //$NON-NLS-1$
			    consumePseudoTokens();  
				break;
	 
	    case 253 : if () { ..println("ColonPseudoToken ::= COLON"); }  //$NON-NLS-1$
			    consumePseudoToken(":");  
				break;
	 
	    case 254 : if () { ..println("PseudoToken ::= JavaIdentifier"); }  //$NON-NLS-1$
				break;
	 
	    case 255 : if () { ..println("PseudoToken ::= LPAREN"); }  //$NON-NLS-1$
			    consumePseudoToken("(");  
				break;
	 
	    case 256 : if () { ..println("PseudoToken ::= RPAREN"); }  //$NON-NLS-1$
			    consumePseudoToken(")");  
				break;
	 
	    case 257 : if () { ..println("PseudoToken ::= DOT"); }  //$NON-NLS-1$
			    consumePseudoToken(".");  
				break;
	 
	    case 258 : if () { ..println("PseudoToken ::= MULTIPLY"); }  //$NON-NLS-1$
			    consumePseudoToken("*");  
				break;
	 
	    case 259 : if () { ..println("PseudoToken ::= PLUS"); }  //$NON-NLS-1$
			    consumePseudoToken("+");  
				break;
	 
	    case 260 : if () { ..println("PseudoToken ::= EQUAL"); }  //$NON-NLS-1$
			    consumePseudoToken("=");  
				break;
	 
	    case 261 : if () { ..println("PseudoToken ::= AND_AND"); }  //$NON-NLS-1$
			    consumePseudoToken("&&");  
				break;
	 
	    case 262 : if () { ..println("PseudoToken ::= OR_OR"); }  //$NON-NLS-1$
			    consumePseudoToken("||");  
				break;
	 
	    case 263 : if () { ..println("PseudoToken ::= NOT"); }  //$NON-NLS-1$
			    consumePseudoToken("!");  
				break;
	 
	    case 264 : if () { ..println("PseudoToken ::= COMMA"); }  //$NON-NLS-1$
			    consumePseudoToken(",");  
				break;
	 
	    case 265 : if () { ..println("PseudoToken ::= LBRACKET"); }  //$NON-NLS-1$
			    consumePseudoToken("[");  
				break;
	 
	    case 266 : if () { ..println("PseudoToken ::= RBRACKET"); }  //$NON-NLS-1$
			    consumePseudoToken("]");  
				break;
	 
	    case 267 : if () { ..println("PseudoToken ::= AT"); }  //$NON-NLS-1$
			    consumePseudoToken("@");  
				break;
	 
	    case 268 : if () { ..println("PseudoToken ::= ELLIPSIS"); }  //$NON-NLS-1$
			    consumePseudoToken("...");  
				break;
	 
	    case 269 : if () { ..println("PseudoToken ::= QUESTION"); }  //$NON-NLS-1$
			    consumePseudoToken("?");  
				break;
	 
	    case 270 : if () { ..println("PseudoToken ::= LESS"); }  //$NON-NLS-1$
			    consumePseudoToken("<");  
				break;
	 
	    case 271 : if () { ..println("PseudoToken ::= GREATER"); }  //$NON-NLS-1$
			    consumePseudoToken(">");  
				break;
	 
	    case 272 : if () { ..println("PseudoToken ::= RIGHT_SHIFT"); }  //$NON-NLS-1$
			    consumePseudoToken(">>");  
				break;
	 
	    case 273 : if () { ..println("PseudoToken ::= UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
			    consumePseudoToken(">>>");  
				break;
	 
	    case 274 : if () { ..println("PseudoToken ::= AND"); }  //$NON-NLS-1$
			    consumePseudoToken("&");  
				break;
	 
	    case 275 : if () { ..println("PseudoToken ::= PrimitiveType"); }  //$NON-NLS-1$
				break;
	 
	    case 276 : if () { ..println("PseudoToken ::= SimpleModifier"); }  //$NON-NLS-1$
				break;
	 
	    case 277 : if () { ..println("PseudoToken ::= Literal"); }  //$NON-NLS-1$
				break;
	 
	    case 278 : if () { ..println("PseudoToken ::= this"); }  //$NON-NLS-1$
			    consumePseudoToken("this", 1, true);  
				break;
	 
	    case 279 : if () { ..println("PseudoToken ::= super"); }  //$NON-NLS-1$
			    consumePseudoToken("super", 1, true);  
				break;
	 
	    case 280 : if () { ..println("PseudoToken ::= if LPAREN Expression RPAREN"); }  //$NON-NLS-1$
			    consumePseudoTokenIf();  
				break;
	 
	    case 281 : if () { ..println("PseudoToken ::= assert"); }  //$NON-NLS-1$
			    consumePseudoToken("assert", 1, true);  
				break;
	 
	    case 282 : if () { ..println("PseudoToken ::= import"); }  //$NON-NLS-1$
			    consumePseudoToken("import", 1, true);  
				break;
	 
	    case 283 : if () { ..println("PseudoToken ::= package"); }  //$NON-NLS-1$
			    consumePseudoToken("package", 1, true);  
				break;
	 
	    case 284 : if () { ..println("PseudoToken ::= throw"); }  //$NON-NLS-1$
			    consumePseudoToken("throw", 1, true);  
				break;
	 
	    case 285 : if () { ..println("PseudoToken ::= new"); }  //$NON-NLS-1$
			    consumePseudoToken("new", 1, true);  
				break;
	 
	    case 286 : if () { ..println("PseudoToken ::= do"); }  //$NON-NLS-1$
			    consumePseudoToken("do", 1, true);  
				break;
	 
	    case 287 : if () { ..println("PseudoToken ::= for"); }  //$NON-NLS-1$
			    consumePseudoToken("for", 1, true);  
				break;
	 
	    case 288 : if () { ..println("PseudoToken ::= switch"); }  //$NON-NLS-1$
			    consumePseudoToken("switch", 1, true);  
				break;
	 
	    case 289 : if () { ..println("PseudoToken ::= try"); }  //$NON-NLS-1$
			    consumePseudoToken("try", 1, true);  
				break;
	 
	    case 290 : if () { ..println("PseudoToken ::= while"); }  //$NON-NLS-1$
			    consumePseudoToken("while", 1, true);  
				break;
	 
	    case 291 : if () { ..println("PseudoToken ::= break"); }  //$NON-NLS-1$
			    consumePseudoToken("break", 1, true);  
				break;
	 
	    case 292 : if () { ..println("PseudoToken ::= continue"); }  //$NON-NLS-1$
			    consumePseudoToken("continue", 1, true);  
				break;
	 
	    case 293 : if () { ..println("PseudoToken ::= return"); }  //$NON-NLS-1$
			    consumePseudoToken("return", 1, true);  
				break;
	 
	    case 294 : if () { ..println("PseudoToken ::= case"); }  //$NON-NLS-1$
			    consumePseudoToken("case", 1, true);  
				break;
	 
	    case 295 : if () { ..println("PseudoToken ::= catch"); }  //$NON-NLS-1$
			    consumePseudoToken("catch", 0, true);  
				break;
	 
	    case 296 : if () { ..println("PseudoToken ::= instanceof"); }  //$NON-NLS-1$
			    consumePseudoToken("instanceof", 0, true);  
				break;
	 
	    case 297 : if () { ..println("PseudoToken ::= else"); }  //$NON-NLS-1$
			    consumePseudoToken("else", 0, true);  
				break;
	 
	    case 298 : if () { ..println("PseudoToken ::= extends"); }  //$NON-NLS-1$
			    consumePseudoToken("extends", 0, true);  
				break;
	 
	    case 299 : if () { ..println("PseudoToken ::= finally"); }  //$NON-NLS-1$
			    consumePseudoToken("finally", 0, true);  
				break;
	 
	    case 300 : if () { ..println("PseudoToken ::= implements"); }  //$NON-NLS-1$
			    consumePseudoToken("implements", 0, true);  
				break;
	 
	    case 301 : if () { ..println("PseudoToken ::= throws"); }  //$NON-NLS-1$
			    consumePseudoToken("throws", 0, true);  
				break;
	 
	    case 302 : if () { ..println("ClassDeclaration ::= ClassHeader ClassBody"); }  //$NON-NLS-1$
				break;
	 
	    case 303 : if () { ..println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt"); }  //$NON-NLS-1$
			    consumeClassHeader();  
				break;
	 
	    case 304 : if () { ..println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); }  //$NON-NLS-1$
				break;
	 
	    case 306 : if () { ..println("ClassHeaderName1 ::= Modifiersopt class JavaIdentifier"); }  //$NON-NLS-1$
				break;
	 
	    case 307 : if () { ..println("ClassHeaderExtends ::= extends ClassType"); }  //$NON-NLS-1$
				break;
	 
	    case 308 : if () { ..println("ClassHeaderImplements ::= implements InterfaceTypeList"); }  //$NON-NLS-1$
				break;
	 
	    case 310 : if () { ..println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 311 : if () { ..println("InterfaceType ::= ClassOrInterfaceType"); }  //$NON-NLS-1$
			    consumeInterfaceType();  
				break;
	 
	    case 314 : if () { ..println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); }  //$NON-NLS-1$
				break;
	 
	    case 318 : if () { ..println("ClassBodyDeclaration ::= Diet NestedMethod Block"); }  //$NON-NLS-1$
				break;
	 
	    case 319 : if () { ..println("Diet ::="); }  //$NON-NLS-1$
			    consumeDiet();  
				break;
	    case 320 : if () { ..println("Initializer ::= Diet NestedMethod Block"); }  //$NON-NLS-1$
				break;
	 
	    case 327 : if () { ..println("ClassMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
				break;
	    case 330 : if () { ..println("FieldDeclaration ::= Modifiersopt Type..."); }  //$NON-NLS-1$
				break;
	 
	    case 332 : if () { ..println("VariableDeclarators ::= VariableDeclarators COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 335 : if () { ..println("EnterVariable ::="); }  //$NON-NLS-1$
			    consumeEnterVariable();  
				break;
	 
	    case 336 : if () { ..println("ExitVariableWithInitialization ::="); }  //$NON-NLS-1$
				break;
	 
	    case 337 : if () { ..println("ExitVariableWithoutInitialization ::="); }  //$NON-NLS-1$
				break;
	 
	    case 338 : if () { ..println("ForceNoDiet ::="); }  //$NON-NLS-1$
			    consumeForceNoDiet();  
				break;
	 
	    case 339 : if () { ..println("RestoreDiet ::="); }  //$NON-NLS-1$
			    consumeRestoreDiet();  
				break;
	 
	    case 344 : if () { ..println("MethodDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
			    // set to true to consume a method with a body
				break;
	 
	    case 345 : if () { ..println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); }  //$NON-NLS-1$
			    // set to false to consume a method without body
				break;
	 
	    case 346 : if () { ..println("MethodHeader ::= MethodHeaderName..."); }  //$NON-NLS-1$
			    consumeMethodHeader();  
				break;
	 
	    case 347 : if () { ..println("MethodHeaderName ::= Modifiersopt TypeParameters Type"); }  //$NON-NLS-1$
				break;
	 
	    case 348 : if () { ..println("MethodHeaderName ::= Modifiersopt Type JavaIdentifier"); }  //$NON-NLS-1$
			    consumeMethodHeaderName(false);  
				break;
	 
	    case 349 : if () { ..println("MethodHeaderRightParen ::= RPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 350 : if () { ..println("MethodHeaderExtendedDims ::= Dimsopt"); }  //$NON-NLS-1$
				break;
	 
	    case 351 : if () { ..println("MethodHeaderThrowsClause ::= throws ClassTypeList"); }  //$NON-NLS-1$
				break;
	 
	    case 352 : if () { ..println("ConstructorHeader ::= ConstructorHeaderName..."); }  //$NON-NLS-1$
				break;
	 
	    case 353 : if () { ..println("ConstructorHeaderName ::= Modifiersopt TypeParameters"); }  //$NON-NLS-1$
				break;
	 
	    case 354 : if () { ..println("ConstructorHeaderName ::= Modifiersopt Identifier..."); }  //$NON-NLS-1$
				break;
	 
	    case 355 : if () { ..println("ConstructorHeaderName ::= Modifiersopt aspect LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 357 : if () { ..println("FormalParameterList ::= FormalParameterList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 358 : if () { ..println("FormalParameter ::= Modifiersopt Type..."); }  //$NON-NLS-1$
			    consumeFormalParameter(false);  
				break;
	 
	    case 359 : if () { ..println("FormalParameter ::= Modifiersopt Type ELLIPSIS..."); }  //$NON-NLS-1$
			    consumeFormalParameter(true);  
				break;
	 
	    case 361 : if () { ..println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); }  //$NON-NLS-1$
			    consumeClassTypeList();  
				break;
	 
	    case 362 : if () { ..println("ClassTypeElt ::= ClassType"); }  //$NON-NLS-1$
			    consumeClassTypeElt();  
				break;
	 
	    case 363 : if () { ..println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt"); }  //$NON-NLS-1$
			    consumeMethodBody();  
				break;
	 
	    case 364 : if () { ..println("NestedMethod ::="); }  //$NON-NLS-1$
			    consumeNestedMethod();  
				break;
	 
	    case 365 : if () { ..println("StaticInitializer ::= StaticOnly Block"); }  //$NON-NLS-1$
				break;
	    case 366 : if () { ..println("StaticOnly ::= static"); }  //$NON-NLS-1$
			    consumeStaticOnly();  
				break;
	 
	    case 367 : if () { ..println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); }  //$NON-NLS-1$
				break;
	 
	    case 368 : if () { ..println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 369 : if () { ..println("ExplicitConstructorInvocation ::= this LPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 370 : if () { ..println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); }  //$NON-NLS-1$
				break;
	 
	    case 371 : if () { ..println("ExplicitConstructorInvocation ::= super LPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 372 : if () { ..println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); }  //$NON-NLS-1$
				break;
	 
	    case 373 : if () { ..println("ExplicitConstructorInvocation ::= Primary DOT super..."); }  //$NON-NLS-1$
				break;
	 
	    case 374 : if () { ..println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
				break;
	 
	    case 375 : if () { ..println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 376 : if () { ..println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
				break;
	 
	    case 377 : if () { ..println("ExplicitConstructorInvocation ::= Primary DOT this..."); }  //$NON-NLS-1$
				break;
	 
	    case 378 : if () { ..println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
				break;
	 
	    case 379 : if () { ..println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 380 : if () { ..println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
				break;
	 
	    case 381 : if () { ..println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); }  //$NON-NLS-1$
				break;
	 
	    case 382 : if () { ..println("InterfaceHeader ::= InterfaceHeaderName..."); }  //$NON-NLS-1$
				break;
	 
	    case 383 : if () { ..println("InterfaceHeaderName ::= InterfaceHeaderName1..."); }  //$NON-NLS-1$
				break;
	 
	    case 385 : if () { ..println("InterfaceHeaderName1 ::= Modifiersopt interface..."); }  //$NON-NLS-1$
				break;
	 
	    case 386 : if () { ..println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); }  //$NON-NLS-1$
				break;
	 
	    case 389 : if () { ..println("InterfaceMemberDeclarations ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 390 : if () { ..println("InterfaceMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 392 : if () { ..println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
				break;
	 
	    case 393 : if () { ..println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
				break;
	 
	    case 394 : if () { ..println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
				break;
	 
	    case 402 : if () { ..println("PushLeftBrace ::="); }  //$NON-NLS-1$
			    consumePushLeftBrace();  
				break;
	 
	    case 403 : if () { ..println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); }  //$NON-NLS-1$
				break;
	 
	    case 404 : if () { ..println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
				break;
	 
	    case 405 : if () { ..println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
				break;
	 
	    case 407 : if () { ..println("VariableInitializers ::= VariableInitializers COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 408 : if () { ..println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); }  //$NON-NLS-1$
			    consumeBlock();  
				break;
	 
	    case 409 : if () { ..println("OpenBlock ::="); }  //$NON-NLS-1$
			    consumeOpenBlock() ;  
				break;
	 
	    case 411 : if () { ..println("BlockStatements ::= BlockStatements BlockStatement"); }  //$NON-NLS-1$
			    consumeBlockStatements() ;  
				break;
	 
	    case 415 : if () { ..println("BlockStatement ::= InterfaceDeclaration"); }  //$NON-NLS-1$
				break;
	 
	    case 416 : if () { ..println("BlockStatement ::= AnnotationTypeDeclaration"); }  //$NON-NLS-1$
				break;
	 
	    case 417 : if () { ..println("BlockStatement ::= EnumDeclaration"); }  //$NON-NLS-1$
				break;
	 
	    case 418 : if () { ..println("LocalVariableDeclarationStatement ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 419 : if () { ..println("LocalVariableDeclaration ::= Type PushModifiers..."); }  //$NON-NLS-1$
				break;
	 
	    case 420 : if () { ..println("LocalVariableDeclaration ::= Modifiers Type..."); }  //$NON-NLS-1$
				break;
	 
	    case 421 : if () { ..println("PushModifiers ::="); }  //$NON-NLS-1$
			    consumePushModifiers();  
				break;
	 
	    case 422 : if () { ..println("PushModifiersForHeader ::="); }  //$NON-NLS-1$
				break;
	 
	    case 423 : if () { ..println("PushRealModifiers ::="); }  //$NON-NLS-1$
				break;
	 
	    case 449 : if () { ..println("EmptyStatement ::= SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 450 : if () { ..println("LabeledStatement ::= Label COLON Statement"); }  //$NON-NLS-1$
			    consumeStatementLabel() ;  
				break;
	 
	    case 451 : if () { ..println("LabeledStatementNoShortIf ::= Label COLON..."); }  //$NON-NLS-1$
			    consumeStatementLabel() ;  
				break;
	 
	    case 452 : if () { ..println("Label ::= JavaIdentifier"); }  //$NON-NLS-1$
			    consumeLabel() ;  
				break;
	 
	     case 453 : if () { ..println("ExpressionStatement ::= StatementExpression SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 462 : if () { ..println("IfThenStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 463 : if () { ..println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 464 : if () { ..println("IfThenElseStatementNoShortIf ::= if LPAREN Expression"); }  //$NON-NLS-1$
				break;
	 
	    case 465 : if () { ..println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
			    consumeStatementSwitch() ;  
				break;
	 
	    case 466 : if () { ..println("SwitchBlock ::= LBRACE RBRACE"); }  //$NON-NLS-1$
			    consumeEmptySwitchBlock() ;  
				break;
	 
	    case 469 : if () { ..println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); }  //$NON-NLS-1$
			    consumeSwitchBlock() ;  
				break;
	 
	    case 471 : if () { ..println("SwitchBlockStatements ::= SwitchBlockStatements..."); }  //$NON-NLS-1$
				break;
	 
	    case 472 : if () { ..println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); }  //$NON-NLS-1$
				break;
	 
	    case 474 : if () { ..println("SwitchLabels ::= SwitchLabels SwitchLabel"); }  //$NON-NLS-1$
			    consumeSwitchLabels() ;  
				break;
	 
	     case 475 : if () { ..println("SwitchLabel ::= case ConstantExpression COLON"); }  //$NON-NLS-1$
			    consumeCaseLabel();  
				break;
	 
	     case 476 : if () { ..println("SwitchLabel ::= default COLON"); }  //$NON-NLS-1$
			    consumeDefaultLabel();  
				break;
	 
	    case 477 : if () { ..println("WhileStatement ::= while LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
			    consumeStatementWhile() ;  
				break;
	 
	    case 478 : if () { ..println("WhileStatementNoShortIf ::= while LPAREN Expression..."); }  //$NON-NLS-1$
			    consumeStatementWhile() ;  
				break;
	 
	    case 479 : if () { ..println("DoStatement ::= do Statement while LPAREN Expression..."); }  //$NON-NLS-1$
			    consumeStatementDo() ;  
				break;
	 
	    case 480 : if () { ..println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); }  //$NON-NLS-1$
			    consumeStatementFor() ;  
				break;
	 
	    case 481 : if () { ..println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); }  //$NON-NLS-1$
			    consumeStatementFor() ;  
				break;
	 
	    case 482 : if () { ..println("ForInit ::= StatementExpressionList"); }  //$NON-NLS-1$
			    consumeForInit() ;  
				break;
	 
	    case 486 : if () { ..println("StatementExpressionList ::= StatementExpressionList..."); }  //$NON-NLS-1$
				break;
	 
	    case 487 : if () { ..println("AssertStatement ::= assert Expression SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 488 : if () { ..println("AssertStatement ::= assert Expression COLON Expression"); }  //$NON-NLS-1$
			    consumeAssertStatement() ;  
				break;
	 
	    case 489 : if () { ..println("BreakStatement ::= break SEMICOLON"); }  //$NON-NLS-1$
			    consumeStatementBreak() ;  
				break;
	 
	    case 490 : if () { ..println("BreakStatement ::= break Identifier SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 491 : if () { ..println("ContinueStatement ::= continue SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 492 : if () { ..println("ContinueStatement ::= continue Identifier SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 493 : if () { ..println("ReturnStatement ::= return Expressionopt SEMICOLON"); }  //$NON-NLS-1$
			    consumeStatementReturn() ;  
				break;
	 
	    case 494 : if () { ..println("ThrowStatement ::= throw Expression SEMICOLON"); }  //$NON-NLS-1$
				break;
	 
	    case 495 : if () { ..println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 496 : if () { ..println("OnlySynchronized ::= synchronized"); }  //$NON-NLS-1$
				break;
	 
	    case 497 : if () { ..println("TryStatement ::= try TryBlock Catches"); }  //$NON-NLS-1$
			    consumeStatementTry(false);  
				break;
	 
	    case 498 : if () { ..println("TryStatement ::= try TryBlock Catchesopt Finally"); }  //$NON-NLS-1$
			    consumeStatementTry(true);  
				break;
	 
	    case 500 : if () { ..println("ExitTryBlock ::="); }  //$NON-NLS-1$
			    consumeExitTryBlock();  
				break;
	 
	    case 502 : if () { ..println("Catches ::= Catches CatchClause"); }  //$NON-NLS-1$
			    consumeCatches();  
				break;
	 
	    case 503 : if () { ..println("CatchClause ::= catch LPAREN FormalParameter RPAREN..."); }  //$NON-NLS-1$
			    consumeStatementCatch() ;  
				break;
	 
	    case 505 : if () { ..println("PushLPAREN ::= LPAREN"); }  //$NON-NLS-1$
			    consumeLeftParen();  
				break;
	 
	    case 506 : if () { ..println("PushRPAREN ::= RPAREN"); }  //$NON-NLS-1$
			    consumeRightParen();  
				break;
	 
	    case 511 : if () { ..println("PrimaryNoNewArray ::= this"); }  //$NON-NLS-1$
				break;
	 
	    case 512 : if () { ..println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); }  //$NON-NLS-1$
				break;
	 
	    case 513 : if () { ..println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 516 : if () { ..println("PrimaryNoNewArray ::= Name DOT this"); }  //$NON-NLS-1$
				break;
	 
	    case 517 : if () { ..println("PrimaryNoNewArray ::= Name DOT super"); }  //$NON-NLS-1$
				break;
	 
	    case 518 : if () { ..println("PrimaryNoNewArray ::= Name DOT class"); }  //$NON-NLS-1$
				break;
	 
	    case 519 : if () { ..println("PrimaryNoNewArray ::= Name Dims DOT class"); }  //$NON-NLS-1$
				break;
	 
	    case 520 : if () { ..println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); }  //$NON-NLS-1$
				break;
	 
	    case 521 : if () { ..println("PrimaryNoNewArray ::= PrimitiveType DOT class"); }  //$NON-NLS-1$
				break;
	 
	    case 524 : if () { ..println("AllocationHeader ::= new ClassType LPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 525 : if () { ..println("ClassInstanceCreationExpression ::= new..."); }  //$NON-NLS-1$
				break;
	 
	    case 526 : if () { ..println("ClassInstanceCreationExpression ::= new ClassType..."); }  //$NON-NLS-1$
				break;
	 
	    case 527 : if () { ..println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
				break;
	 
	    case 528 : if () { ..println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
				break;
	 
	    case 529 : if () { ..println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 530 : if () { ..println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 531 : if () { ..println("ClassInstanceCreationExpressionName ::= Name DOT"); }  //$NON-NLS-1$
				break;
	 
	    case 532 : if () { ..println("ClassBodyopt ::="); }  //$NON-NLS-1$
			    consumeClassBodyopt();  
				break;
	 
	    case 534 : if () { ..println("EnterAnonymousClassBody ::="); }  //$NON-NLS-1$
				break;
	 
	    case 536 : if () { ..println("ArgumentList ::= ArgumentList COMMA Expression"); }  //$NON-NLS-1$
			    consumeArgumentList();  
				break;
	 
	    case 537 : if () { ..println("ArrayCreationHeader ::= new PrimitiveType..."); }  //$NON-NLS-1$
				break;
	 
	    case 538 : if () { ..println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); }  //$NON-NLS-1$
				break;
	 
	    case 539 : if () { ..println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
				break;
	 
	    case 540 : if () { ..println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); }  //$NON-NLS-1$
				break;
	 
	    case 541 : if () { ..println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
				break;
	 
	    case 542 : if () { ..println("ArrayCreationWithArrayInitializer ::= new..."); }  //$NON-NLS-1$
				break;
	 
	    case 544 : if () { ..println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); }  //$NON-NLS-1$
				break;
	 
	     case 546 : if () { ..println("DimWithOrWithOutExpr ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
				break;
	 
	     case 547 : if () { ..println("Dims ::= DimsLoop"); }  //$NON-NLS-1$
			    consumeDims();  
				break;
	 
	     case 550 : if () { ..println("OneDimLoop ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
			    consumeOneDimLoop();  
				break;
	 
	    case 551 : if () { ..println("FieldAccess ::= Primary DOT JavaIdentifier"); }  //$NON-NLS-1$
			    consumeFieldAccess(false);  
				break;
	 
	    case 552 : if () { ..println("FieldAccess ::= super DOT JavaIdentifier"); }  //$NON-NLS-1$
			    consumeFieldAccess(true);  
				break;
	 
	    case 553 : if () { ..println("MethodInvocation ::= NameOrAj LPAREN ArgumentListopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 554 : if () { ..println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
				break;
	 
	    case 555 : if () { ..println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
				break;
	 
	    case 556 : if () { ..println("MethodInvocation ::= Primary DOT JavaIdentifier LPAREN"); }  //$NON-NLS-1$
				break;
	 
	    case 557 : if () { ..println("MethodInvocation ::= super DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
				break;
	 
	    case 558 : if () { ..println("MethodInvocation ::= super DOT JavaIdentifier LPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 559 : if () { ..println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
			    consumeArrayAccess(true);  
				break;
	 
	    case 560 : if () { ..println("ArrayAccess ::= AjName LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
			    consumeArrayAccess(true);  
				break;
	 
	    case 561 : if () { ..println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression"); }  //$NON-NLS-1$
			    consumeArrayAccess(false);  
				break;
	 
	    case 562 : if () { ..println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); }  //$NON-NLS-1$
			    consumeArrayAccess(false);  
				break;
	 
	    case 564 : if () { ..println("PostfixExpression ::= NameOrAj"); }  //$NON-NLS-1$
				break;
	 
	    case 567 : if () { ..println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); }  //$NON-NLS-1$
				break;
	 
	    case 568 : if () { ..println("PostDecrementExpression ::= PostfixExpression..."); }  //$NON-NLS-1$
				break;
	 
	    case 569 : if () { ..println("PushPosition ::="); }  //$NON-NLS-1$
			    consumePushPosition();  
				break;
	 
	    case 572 : if () { ..println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
				break;
	 
	    case 573 : if () { ..println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
				break;
	 
	    case 575 : if () { ..println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); }  //$NON-NLS-1$
				break;
	 
	    case 576 : if () { ..println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); }  //$NON-NLS-1$
				break;
	 
	    case 578 : if () { ..println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); }  //$NON-NLS-1$
				break;
	 
	    case 579 : if () { ..println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); }  //$NON-NLS-1$
				break;
	 
	    case 581 : if () { ..println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 582 : if () { ..println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
				break;
	 
	    case 583 : if () { ..println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
				break;
	 
	    case 584 : if () { ..println("CastExpression ::= PushLPAREN Name PushRPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 585 : if () { ..println("CastExpression ::= PushLPAREN Name Dims PushRPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 586 : if () { ..println("OnlyTypeArgumentsForCastExpression ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 587 : if () { ..println("InsideCastExpression ::="); }  //$NON-NLS-1$
				break;
	 
	    case 588 : if () { ..println("InsideCastExpressionLL1 ::="); }  //$NON-NLS-1$
				break;
	 
	    case 589 : if () { ..println("InsideCastExpressionWithQualifiedGenerics ::="); }  //$NON-NLS-1$
				break;
	 
	    case 591 : if () { ..println("MultiplicativeExpression ::= MultiplicativeExpression"); }  //$NON-NLS-1$
				break;
	 
	    case 592 : if () { ..println("MultiplicativeExpression ::= MultiplicativeExpression"); }  //$NON-NLS-1$
				break;
	 
	    case 593 : if () { ..println("MultiplicativeExpression ::= MultiplicativeExpression"); }  //$NON-NLS-1$
				break;
	 
	    case 595 : if () { ..println("AdditiveExpression ::= AdditiveExpression PLUS..."); }  //$NON-NLS-1$
				break;
	 
	    case 596 : if () { ..println("AdditiveExpression ::= AdditiveExpression MINUS..."); }  //$NON-NLS-1$
				break;
	 
	    case 598 : if () { ..println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); }  //$NON-NLS-1$
				break;
	 
	    case 599 : if () { ..println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); }  //$NON-NLS-1$
				break;
	 
	    case 600 : if () { ..println("ShiftExpression ::= ShiftExpression..."); }  //$NON-NLS-1$
				break;
	 
	    case 602 : if () { ..println("RelationalExpression ::= RelationalExpression LESS..."); }  //$NON-NLS-1$
				break;
	 
	    case 603 : if () { ..println("RelationalExpression ::= RelationalExpression GREATER"); }  //$NON-NLS-1$
				break;
	 
	    case 604 : if () { ..println("RelationalExpression ::= RelationalExpression..."); }  //$NON-NLS-1$
				break;
	 
	    case 605 : if () { ..println("RelationalExpression ::= RelationalExpression..."); }  //$NON-NLS-1$
				break;
	 
	    case 607 : if () { ..println("InstanceofExpression ::= InstanceofExpression..."); }  //$NON-NLS-1$
				break;
	 
	    case 609 : if () { ..println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 610 : if () { ..println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); }  //$NON-NLS-1$
				break;
	 
	    case 612 : if () { ..println("AndExpression ::= AndExpression AND EqualityExpression"); }  //$NON-NLS-1$
				break;
	 
	    case 614 : if () { ..println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); }  //$NON-NLS-1$
				break;
	 
	    case 616 : if () { ..println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); }  //$NON-NLS-1$
				break;
	 
	    case 618 : if () { ..println("ConditionalAndExpression ::= ConditionalAndExpression"); }  //$NON-NLS-1$
				break;
	 
	    case 620 : if () { ..println("ConditionalOrExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
				break;
	 
	    case 622 : if () { ..println("ConditionalExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
				break;
	 
	    case 625 : if () { ..println("Assignment ::= PostfixExpression AssignmentOperator..."); }  //$NON-NLS-1$
			    consumeAssignment();  
				break;
	 
	    case 627 : if () { ..println("Assignment ::= InvalidArrayInitializerAssignement"); }  //$NON-NLS-1$
				break;
	 
	    case 628 : if () { ..println("AssignmentOperator ::= EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 629 : if () { ..println("AssignmentOperator ::= MULTIPLY_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 630 : if () { ..println("AssignmentOperator ::= DIVIDE_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 631 : if () { ..println("AssignmentOperator ::= REMAINDER_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 632 : if () { ..println("AssignmentOperator ::= PLUS_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 633 : if () { ..println("AssignmentOperator ::= MINUS_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 634 : if () { ..println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 635 : if () { ..println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 636 : if () { ..println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 637 : if () { ..println("AssignmentOperator ::= AND_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 638 : if () { ..println("AssignmentOperator ::= XOR_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 639 : if () { ..println("AssignmentOperator ::= OR_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 643 : if () { ..println("Expressionopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 648 : if () { ..println("ClassBodyDeclarationsopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 649 : if () { ..println("ClassBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
				break;
	 
	     case 650 : if () { ..println("Modifiersopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 651 : if () { ..println("Modifiersopt ::= Modifiers"); }  //$NON-NLS-1$
			    consumeModifiers();  
				break;
	 
	    case 652 : if () { ..println("BlockStatementsopt ::="); }  //$NON-NLS-1$
				break;
	 
	     case 654 : if () { ..println("Dimsopt ::="); }  //$NON-NLS-1$
			    consumeEmptyDimsopt();  
				break;
	 
	     case 656 : if () { ..println("ArgumentListopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 660 : if () { ..println("FormalParameterListopt ::="); }  //$NON-NLS-1$
				break;
	 
	     case 664 : if () { ..println("InterfaceMemberDeclarationsopt ::="); }  //$NON-NLS-1$
				break;
	 
	     case 665 : if () { ..println("InterfaceMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
				break;
	 
	    case 666 : if () { ..println("NestedType ::="); }  //$NON-NLS-1$
			    consumeNestedType();  
				break;
	     case 667 : if () { ..println("ForInitopt ::="); }  //$NON-NLS-1$
				break;
	 
	     case 669 : if () { ..println("ForUpdateopt ::="); }  //$NON-NLS-1$
				break;
	 
	     case 673 : if () { ..println("Catchesopt ::="); }  //$NON-NLS-1$
				break;
	 
	     case 675 : if () { ..println("EnumDeclaration ::= EnumHeader EnumBody"); }  //$NON-NLS-1$
				break;
	 
	     case 676 : if () { ..println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); }  //$NON-NLS-1$
			    consumeEnumHeader();  
				break;
	 
	     case 677 : if () { ..println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier"); }  //$NON-NLS-1$
				break;
	 
	     case 678 : if () { ..println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); }  //$NON-NLS-1$
				break;
	 
	     case 679 : if () { ..println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); }  //$NON-NLS-1$
				break;
	 
	     case 680 : if () { ..println("EnumBody ::= LBRACE EnumConstants COMMA..."); }  //$NON-NLS-1$
				break;
	 
	     case 681 : if () { ..println("EnumBody ::= LBRACE EnumConstants..."); }  //$NON-NLS-1$
				break;
	 
	    case 683 : if () { ..println("EnumConstants ::= EnumConstants COMMA EnumConstant"); }  //$NON-NLS-1$
			    consumeEnumConstants();  
				break;
	 
	    case 684 : if () { ..println("EnumConstantHeaderName ::= Modifiersopt Identifier"); }  //$NON-NLS-1$
				break;
	 
	    case 685 : if () { ..println("EnumConstantHeader ::= EnumConstantHeaderName..."); }  //$NON-NLS-1$
				break;
	 
	    case 686 : if () { ..println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); }  //$NON-NLS-1$
				break;
	 
	    case 687 : if () { ..println("EnumConstant ::= EnumConstantHeader"); }  //$NON-NLS-1$
				break;
	 
	    case 688 : if () { ..println("Arguments ::= LPAREN ArgumentListopt RPAREN"); }  //$NON-NLS-1$
			    consumeArguments();  
				break;
	 
	    case 689 : if () { ..println("Argumentsopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 691 : if () { ..println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); }  //$NON-NLS-1$
				break;
	 
	    case 692 : if () { ..println("EnumBodyDeclarationsopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 694 : if () { ..println("EnhancedForStatement ::= EnhancedForStatementHeader..."); }  //$NON-NLS-1$
				break;
	 
	    case 695 : if () { ..println("EnhancedForStatementNoShortIf ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 696 : if () { ..println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); }  //$NON-NLS-1$
				break;
	 
	    case 697 : if () { ..println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); }  //$NON-NLS-1$
				break;
	 
	    case 698 : if () { ..println("EnhancedForStatementHeader ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 699 : if () { ..println("SingleStaticImportDeclaration ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 700 : if () { ..println("SingleStaticImportDeclarationName ::= import static..."); }  //$NON-NLS-1$
				break;
	 
	    case 701 : if () { ..println("StaticImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 702 : if () { ..println("StaticImportOnDemandDeclarationName ::= import static"); }  //$NON-NLS-1$
				break;
	 
	    case 703 : if () { ..println("TypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
			    consumeTypeArguments();  
				break;
	 
	    case 704 : if () { ..println("OnlyTypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
				break;
	 
	    case 706 : if () { ..println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 708 : if () { ..println("TypeArgumentList ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 709 : if () { ..println("TypeArgument ::= ReferenceType"); }  //$NON-NLS-1$
			    consumeTypeArgument();  
				break;
	 
	    case 713 : if () { ..println("ReferenceType1 ::= ReferenceType GREATER"); }  //$NON-NLS-1$
				break;
	 
	    case 714 : if () { ..println("ReferenceType1 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
				break;
	 
	    case 716 : if () { ..println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 719 : if () { ..println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); }  //$NON-NLS-1$
				break;
	 
	    case 720 : if () { ..println("ReferenceType2 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
				break;
	 
	    case 722 : if () { ..println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 725 : if () { ..println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
				break;
	 
	    case 726 : if () { ..println("Wildcard ::= QUESTION"); }  //$NON-NLS-1$
			    consumeWildcard();  
				break;
	 
	    case 727 : if () { ..println("Wildcard ::= QUESTION WildcardBounds"); }  //$NON-NLS-1$
				break;
	 
	    case 728 : if () { ..println("WildcardBounds ::= extends ReferenceType"); }  //$NON-NLS-1$
				break;
	 
	    case 729 : if () { ..println("WildcardBounds ::= super ReferenceType"); }  //$NON-NLS-1$
				break;
	 
	    case 730 : if () { ..println("Wildcard1 ::= QUESTION GREATER"); }  //$NON-NLS-1$
			    consumeWildcard1();  
				break;
	 
	    case 731 : if () { ..println("Wildcard1 ::= QUESTION WildcardBounds1"); }  //$NON-NLS-1$
				break;
	 
	    case 732 : if () { ..println("WildcardBounds1 ::= extends ReferenceType1"); }  //$NON-NLS-1$
				break;
	 
	    case 733 : if () { ..println("WildcardBounds1 ::= super ReferenceType1"); }  //$NON-NLS-1$
				break;
	 
	    case 734 : if () { ..println("Wildcard2 ::= QUESTION RIGHT_SHIFT"); }  //$NON-NLS-1$
			    consumeWildcard2();  
				break;
	 
	    case 735 : if () { ..println("Wildcard2 ::= QUESTION WildcardBounds2"); }  //$NON-NLS-1$
				break;
	 
	    case 736 : if () { ..println("WildcardBounds2 ::= extends ReferenceType2"); }  //$NON-NLS-1$
				break;
	 
	    case 737 : if () { ..println("WildcardBounds2 ::= super ReferenceType2"); }  //$NON-NLS-1$
				break;
	 
	    case 738 : if () { ..println("Wildcard3 ::= QUESTION UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
			    consumeWildcard3();  
				break;
	 
	    case 739 : if () { ..println("Wildcard3 ::= QUESTION WildcardBounds3"); }  //$NON-NLS-1$
				break;
	 
	    case 740 : if () { ..println("WildcardBounds3 ::= extends ReferenceType3"); }  //$NON-NLS-1$
				break;
	 
	    case 741 : if () { ..println("WildcardBounds3 ::= super ReferenceType3"); }  //$NON-NLS-1$
				break;
	 
	    case 742 : if () { ..println("TypeParameterHeader ::= JavaIdentifier"); }  //$NON-NLS-1$
				break;
	 
	    case 743 : if () { ..println("TypeParameters ::= LESS TypeParameterList1"); }  //$NON-NLS-1$
				break;
	 
	    case 745 : if () { ..println("TypeParameterList ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 747 : if () { ..println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
				break;
	 
	    case 748 : if () { ..println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
				break;
	 
	    case 750 : if () { ..println("AdditionalBoundList ::= AdditionalBoundList..."); }  //$NON-NLS-1$
				break;
	 
	    case 751 : if () { ..println("AdditionalBound ::= AND ReferenceType"); }  //$NON-NLS-1$
				break;
	 
	    case 753 : if () { ..println("TypeParameterList1 ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
				break;
	 
	    case 754 : if () { ..println("TypeParameter1 ::= TypeParameterHeader GREATER"); }  //$NON-NLS-1$
				break;
	 
	    case 755 : if () { ..println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
				break;
	 
	    case 756 : if () { ..println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
				break;
	 
	    case 758 : if () { ..println("AdditionalBoundList1 ::= AdditionalBoundList..."); }  //$NON-NLS-1$
				break;
	 
	    case 759 : if () { ..println("AdditionalBound1 ::= AND ReferenceType1"); }  //$NON-NLS-1$
				break;
	 
	    case 765 : if () { ..println("UnaryExpression_NotName ::= PLUS PushPosition..."); }  //$NON-NLS-1$
				break;
	 
	    case 766 : if () { ..println("UnaryExpression_NotName ::= MINUS PushPosition..."); }  //$NON-NLS-1$
				break;
	 
	    case 769 : if () { ..println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); }  //$NON-NLS-1$
				break;
	 
	    case 770 : if () { ..println("UnaryExpressionNotPlusMinus_NotName ::= NOT..."); }  //$NON-NLS-1$
				break;
	 
	    case 773 : if () { ..println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 774 : if () { ..println("MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY"); }  //$NON-NLS-1$
				break;
	 
	    case 775 : if () { ..println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 776 : if () { ..println("MultiplicativeExpression_NotName ::= NameOrAj DIVIDE..."); }  //$NON-NLS-1$
				break;
	 
	    case 777 : if () { ..println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 778 : if () { ..println("MultiplicativeExpression_NotName ::= NameOrAj REMAINDER"); }  //$NON-NLS-1$
				break;
	 
	    case 780 : if () { ..println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 781 : if () { ..println("AdditiveExpression_NotName ::= NameOrAj PLUS..."); }  //$NON-NLS-1$
				break;
	 
	    case 782 : if () { ..println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 783 : if () { ..println("AdditiveExpression_NotName ::= NameOrAj MINUS..."); }  //$NON-NLS-1$
				break;
	 
	    case 785 : if () { ..println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
				break;
	 
	    case 786 : if () { ..println("ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT..."); }  //$NON-NLS-1$
				break;
	 
	    case 787 : if () { ..println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
				break;
	 
	    case 788 : if () { ..println("ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT..."); }  //$NON-NLS-1$
				break;
	 
	    case 789 : if () { ..println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
				break;
	 
	    case 790 : if () { ..println("ShiftExpression_NotName ::= NameOrAj..."); }  //$NON-NLS-1$
				break;
	 
	    case 792 : if () { ..println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 793 : if () { ..println("RelationalExpression_NotName ::= Name LESS..."); }  //$NON-NLS-1$
				break;
	 
	    case 794 : if () { ..println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 795 : if () { ..println("RelationalExpression_NotName ::= NameOrAj GREATER..."); }  //$NON-NLS-1$
				break;
	 
	    case 796 : if () { ..println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 797 : if () { ..println("RelationalExpression_NotName ::= NameOrAj LESS_EQUAL..."); }  //$NON-NLS-1$
				break;
	 
	    case 798 : if () { ..println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 799 : if () { ..println("RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL"); }  //$NON-NLS-1$
				break;
	 
	    case 801 : if () { ..println("InstanceofExpression_NotName ::= NameOrAj instanceof..."); }  //$NON-NLS-1$
				break;
	 
	    case 802 : if () { ..println("InstanceofExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 804 : if () { ..println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 805 : if () { ..println("EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL..."); }  //$NON-NLS-1$
				break;
	 
	    case 806 : if () { ..println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 807 : if () { ..println("EqualityExpression_NotName ::= NameOrAj NOT_EQUAL..."); }  //$NON-NLS-1$
				break;
	 
	    case 809 : if () { ..println("AndExpression_NotName ::= AndExpression_NotName AND..."); }  //$NON-NLS-1$
				break;
	 
	    case 810 : if () { ..println("AndExpression_NotName ::= NameOrAj AND..."); }  //$NON-NLS-1$
				break;
	 
	    case 812 : if () { ..println("ExclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 813 : if () { ..println("ExclusiveOrExpression_NotName ::= NameOrAj XOR..."); }  //$NON-NLS-1$
				break;
	 
	    case 815 : if () { ..println("InclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 816 : if () { ..println("InclusiveOrExpression_NotName ::= NameOrAj OR..."); }  //$NON-NLS-1$
				break;
	 
	    case 818 : if () { ..println("ConditionalAndExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 819 : if () { ..println("ConditionalAndExpression_NotName ::= NameOrAj AND_AND"); }  //$NON-NLS-1$
				break;
	 
	    case 821 : if () { ..println("ConditionalOrExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 822 : if () { ..println("ConditionalOrExpression_NotName ::= NameOrAj OR_OR..."); }  //$NON-NLS-1$
				break;
	 
	    case 824 : if () { ..println("ConditionalExpression_NotName ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 825 : if () { ..println("ConditionalExpression_NotName ::= NameOrAj QUESTION..."); }  //$NON-NLS-1$
				break;
	 
	    case 829 : if () { ..println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); }  //$NON-NLS-1$
				break;
	 
	    case 830 : if () { ..println("AnnotationTypeDeclarationHeaderName ::= AT..."); }  //$NON-NLS-1$
				break;
	 
	    case 831 : if () { ..println("AnnotationTypeDeclarationHeader ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 832 : if () { ..println("AnnotationTypeDeclaration ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 834 : if () { ..println("AnnotationTypeMemberDeclarationsopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 835 : if () { ..println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
				break;
	 
	    case 837 : if () { ..println("AnnotationTypeMemberDeclarations ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 838 : if () { ..println("AnnotationMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 839 : if () { ..println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
			    consumeMethodHeaderName(true);  
				break;
	 
	    case 840 : if () { ..println("AnnotationMethodHeaderDefaultValueopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 841 : if () { ..println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); }  //$NON-NLS-1$
				break;
	 
	    case 842 : if () { ..println("AnnotationMethodHeader ::= AnnotationMethodHeaderName"); }  //$NON-NLS-1$
			    consumeMethodHeader();  
				break;
	 
	    case 843 : if () { ..println("AnnotationTypeMemberDeclaration ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 851 : if () { ..println("AnnotationName ::= AT NameOrAj"); }  //$NON-NLS-1$
			    consumeAnnotationName() ;  
				break;
	 
	    case 852 : if () { ..println("NormalAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
			    consumeNormalAnnotation() ;  
				break;
	 
	    case 853 : if () { ..println("MemberValuePairsopt ::="); }  //$NON-NLS-1$
				break;
	 
	    case 856 : if () { ..println("MemberValuePairs ::= MemberValuePairs COMMA..."); }  //$NON-NLS-1$
			    consumeMemberValuePairs() ;  
				break;
	 
	    case 857 : if () { ..println("MemberValuePair ::= SimpleNameOrAj EQUAL..."); }  //$NON-NLS-1$
			    consumeMemberValuePair() ;  
				break;
	 
	    case 858 : if () { ..println("EnterMemberValue ::="); }  //$NON-NLS-1$
			    consumeEnterMemberValue() ;  
				break;
	 
	    case 859 : if () { ..println("ExitMemberValue ::="); }  //$NON-NLS-1$
			    consumeExitMemberValue() ;  
				break;
	 
	    case 861 : if () { ..println("MemberValue ::= NameOrAj"); }  //$NON-NLS-1$
				break;
	 
	    case 864 : if () { ..println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 865 : if () { ..println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 866 : if () { ..println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 867 : if () { ..println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
				break;
	 
	    case 868 : if () { ..println("EnterMemberValueArrayInitializer ::="); }  //$NON-NLS-1$
				break;
	 
	    case 870 : if () { ..println("MemberValues ::= MemberValues COMMA MemberValue"); }  //$NON-NLS-1$
			    consumeMemberValues() ;  
				break;
	 
	    case 871 : if () { ..println("MarkerAnnotation ::= AnnotationName"); }  //$NON-NLS-1$
			    consumeMarkerAnnotation() ;  
				break;
	 
	    case 872 : if () { ..println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
				break;
	 
	    case 873 : if () { ..println("RecoveryMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
				break;
	 
	    case 874 : if () { ..println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
				break;
	 
	    case 875 : if () { ..println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
			    consumeMethodHeader();  
				break;
	 
	    case 876 : if () { ..println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
			    consumeMethodHeader();  
				break;
	 
	// Helpers
	protected ASTNode popPointcutDesignator(String terminator) {
		ASTNode tokens = popPseudoTokens(terminator);
	protected ASTNode popPseudoTokens(String terminator) {
		//System.out.println("next token is: " + new String(scanner.getCurrentTokenSource()));
		int length = [--];
		 -= length;
		//arguments
		ASTNode[] tokens = new ASTNode[length];
		System.arraycopy( + 1, tokens, 0, length);
		//md.bodyStart = rParenPos+1;
		 = 0; // reset listLength after having read all parameters
			//	new PseudoTokens(tokens, makeSourceContext(this.compilationUnit.compilationResult()));
//	private ISourceContext makeSourceContext(CompilationResult compilationResult) {
//		return new EclipseSourceContext(compilationResult);
//	}
	private void swapAstStack() {
		ASTNode next = [-1];
		[] = next;
		[-1] = top;
	}



Recovery rule for when someone tries to use * or + in an ITD
		consumeInterTypeFieldHeader(false); // make the best of what we did get
		problemReporter().parseErrorDeleteToken(errorNode.sourceStart -2,  // '+.'
				                                errorNode.sourceStart,  
				                                ,
				                                badToken.toCharArray(),
				                                badToken);	 	
	}

Recovery rule for when someone tries to use * or + in an ITD
		consumeInterTypeConstructorHeaderName(false,false); // make the best of what we did get
		problemReporter().parseErrorDeleteToken(errorNode.sourceStart -2,  // '+.'
				                                errorNode.sourceStart,  
				                                ,
				                                badToken.toCharArray(),
				                                badToken);	 		
	}

Recovery rule for when someone tries to use * or + in an ITD
		consumeInterTypeMethodHeaderName(false,false); // make the best of what we did get
		problemReporter().parseErrorDeleteToken(errorNode.sourceStart -2,  // '+.'
				                                errorNode.sourceStart,  
				                                ,
				                                badToken.toCharArray(),
				                                badToken);	 		
	}

Recovery rule for when around advice is specified without a return type
		problemReporter().parseErrorInsertToComplete(.."return type","around advice declaration");
		this. = true;
	}

Recovery rule for a screwed up declaration
	private void consumeBadHeader() {
		// we read... modifiersopt QualifiedName LPAREN FormalParameterListopt RPAREN		
		this. = true;
protected void 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.
	for(int typeParameterIndex = 0; typeParameterIndex < []; typeParameterIndex++) {
		TypeParameter tp = (TypeParameter[ - typeParameterIndex];
		SingleTypeReference str = new SingleTypeReference(tp.name,tp.declarationSourceStart);
		[ - typeParameterIndex] = str;
public Parser(
	ProblemReporter problemReporter,
	boolean optimizeStringLiterals) {
	super(problemReporteroptimizeStringLiterals);
// don't try to recover if we're parsing AspectJ constructs
protected boolean shouldTryToRecover() {
	int index = 0;
	ASTNode node;
	while (index < . && (node = [index++]) != null) {
			return false;
	return true;
protected void pushOnAspectIntStack(int pos) {
	int stackLength = this..length;
	if (++this. >= stackLength) {
		System.arraycopy(
			this. = new int[stackLength + ], 0,
			stackLength);
	this.[this.] = pos;
New to GrepCode? Check out our FAQ X