Ptidej-v5.2-master/PADL Creator C++/src/padl/creator/cppfile/antlr/parser/CPPParser.java
/*******************************************************************************
 * Copyright (c) 2001-2014 Yann-Gal Guhneuc and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Contributors:
 *     Yann-Gal Guhneuc and others, see in file; API and its implementation
 ******************************************************************************/
/* Generated By:JavaCC: Do not edit this line. CPPParser.java */
package padl.creator.cppfile.antlr.parser;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import padl.creator.cppfile.antlr.CPPCreator;
import padl.kernel.ICodeLevelModel;
import padl.kernel.IConstructor;
import padl.kernel.IElement;
import padl.kernel.IEntity;
import padl.kernel.IField;
import padl.kernel.IFirstClassEntity;
import padl.kernel.IGhost;
import padl.kernel.IMethod;
import padl.kernel.IPackage;
import padl.kernel.IParameter;
import padl.kernel.IPrimitiveEntity;
import padl.kernel.IRelationship;
import padl.kernel.IUseRelationship;
import padl.kernel.cpp.antlr.ICPPFactoryANTLR;
import padl.kernel.cpp.antlr.IDestructor;
import padl.kernel.cpp.antlr.IGlobalField;
import util.lang.Modifier;

public final class CPPParser implements CPPParserConstants {
	private static String vers = "0.4";
	private static String id = "C++ Parser";

	//------------------------------------------------------------
	/* Field and methods to recognize a global field */
	private static boolean isGlobalField = false;
	private static void setIsGlobalField(final boolean b) {
		CPPParser.isGlobalField = b;
	}
	private static boolean getIsGlobalField() {
		return CPPParser.isGlobalField;
	}

	//------------------------------------------------------------
	/* Field and methods to manage the members acces */

	private static int accessFlag = Modifier.PUBLIC;
	private static void setAccess(final int theAccess) {
		CPPParser.accessFlag = theAccess;
	}
	private static int getAccess() {
		return CPPParser.accessFlag;
	}

	//------------------------------------------------------------
	/* Field and methods to recognize a member */

	private static boolean isMember = false;
	private static void enableMember(final boolean b) {
		CPPParser.isMember = b;
	}
	private static boolean getIsMember() {
		return CPPParser.isMember;
	}

	//------------------------------------------------------------
	/* Field and methods to manage the member type */

	private static String typeMember = "";
	private static void setTypeMember(final String unType) {
		CPPParser.typeMember = unType;
	}
	private static String getTypeMember() {
		return CPPParser.typeMember;
	}
	private static void resetTypeMember() {
		CPPParser.typeMember = "";
	}

	//------------------------------------------------------------
	/* Field and methods to manage the global field type */

	private static String typeGlobalField = "";
	private static void setTypeGlobalField(final String unType) {
		CPPParser.typeGlobalField = unType;
	}
	private static String getTypeGlobalField() {
		return CPPParser.typeGlobalField;
	}

	//------------------------------------------------------------
	/* Field and methods to manage the members of a class */

	private static List listOfElements = new ArrayList();
	private static List getListOfElements() {
		return CPPParser.listOfElements;
	}
	private static void addToListOfElements(final IElement anElement) {
		CPPParser.listOfElements.add(anElement);
	}
	private static void resetListOfElements() {
		CPPParser.listOfElements.clear();
	}

	//------------------------------------------------------------
	/* Field and methods to manage the super classes of a class */

	private static List listOfGeneralizations = new ArrayList();
	private static List getListOfGeneralizations() {
		return CPPParser.listOfGeneralizations;
	}
	private static void addToListOfGeneralizations(final String aName) {
		CPPParser.listOfGeneralizations.add(aName);
	}
	private static void resetListOfGeneralizations() {
		CPPParser.listOfGeneralizations.clear();
	}

	//------------------------------------------------------------
	/* Field and methods to manage the useRelationships of a class */

	private static List listOfUseDisplay = new ArrayList();
	private static List getListOfUseDisplay() {
		return CPPParser.listOfUseDisplay;
	}
	private static void addToListOfUseDisplay(final String aName) {
		final Iterator iterator = CPPParser.listOfUseDisplay.iterator();
		while (iterator.hasNext())
			if (aName.equals((String) iterator.next()))
				return;
		CPPParser.listOfUseDisplay.add(aName);
	}
	private static void resetListOfUseDisplay() {
		CPPParser.listOfUseDisplay.clear();
	}

	//------------------------------------------------------------
	/* Field and methods to recognize a parameter */

	private static boolean isParameter = false;
	private static void enableParameter(final boolean b) {
		CPPParser.isParameter = b;
	}
	private static boolean getIsParameter() {
		return CPPParser.isParameter;
	}

	//------------------------------------------------------------
	/* Field and methods to manage the parameter type */

	private static String typeParameter = "";
	private static void setTypeParameter(final String aType) {
		CPPParser.typeParameter = aType;
	}
	private static String getTypeParameter() {
		return CPPParser.typeParameter;
	}
	private static void resetTypeParameter() {
		CPPParser.typeParameter = "";
	}

	//------------------------------------------------------------
	/* Field and methods to manage the parameters */

	private static List listOfArguments = new ArrayList();
	private static List getListOfArguments() {
		return CPPParser.listOfArguments;
	}
	private static void addToListOfArguments(final IParameter aParameter) {
		CPPParser.listOfArguments.add(aParameter);
	}
	private static void resetListOfArguments() {
		CPPParser.listOfArguments.clear();
	}

	//------------------------------------------------------------
	/* Field and methods to manage the display of table suffixes */

	private static String suffix = "";
	private static void setSuffix(final String aSuffix) {
		CPPParser.suffix += aSuffix;
	}
	private static String getSuffix() {
		return CPPParser.suffix;
	}
	private static void resetSuffix() {
		CPPParser.suffix = "";
	}

	//------------------------------------------------------------
	/* Field and methods to manage the codeLevelModel */
	/* and the default package to contain entities    */

	private static ICodeLevelModel codeLevelModel;
	private static int UniqueIdentifier;
	public static ICodeLevelModel getCodeLevelModel() {
		return CPPParser.codeLevelModel;
	}
	public static void setCodeLevelModel(final ICodeLevelModel aCodeLevelModel) {
		CPPParser.codeLevelModel = aCodeLevelModel;
	}
	private static IPackage createAndGetDefaultPackage() {
		IPackage enclosingPackage =
			(IPackage) CPPParser.getCodeLevelModel().getConstituentFromID(
				CPPCreator.CPP_PACKAGE_ID);
		if (enclosingPackage == null) {
			enclosingPackage = factory.createPackage(CPPCreator.CPP_PACKAGE_ID);
			CPPParser.getCodeLevelModel().addConstituent(enclosingPackage);
		}
		return enclosingPackage;
	}

	//------------------------------------------------------------
	/* Field and methods to manage the factory */

	private static ICPPFactoryANTLR factory;
	private static ICPPFactoryANTLR getFactory() {
		return CPPParser.factory;
	}
	private static void setFactory(final ICPPFactoryANTLR aFactory) {
		CPPParser.factory = aFactory;
	}

	//------------------------------------------------------------
	// 2004/08/19: Sbastien Robidoux
	// This method replace any ghost find with the same name of a new entity
	// This method will fixed any relation create with the ghost
	// This method will fixed any inheritance create with the ghost
	private static void replaceGhost(final IFirstClassEntity anEntity)
			throws ParseException {
		final IFirstClassEntity entity =
			(IFirstClassEntity) CPPParser
				.createAndGetDefaultPackage()
				.getConstituentFromName(anEntity.getName());

		// If we find a ghost...
		if (entity != null && entity instanceof IGhost) {
			final char[] tempId = entity.getID();
			// Remove the Ghost from the model
			CPPParser.createAndGetDefaultPackage().removeConstituentFromID(
				tempId);

			// Look in each Entity for link with this ghost
			final Iterator tempListEntities =
				CPPParser
					.createAndGetDefaultPackage()
					.getIteratorOnConstituents();
			while (tempListEntities.hasNext()) {
				final IFirstClassEntity tempEntity =
					(IFirstClassEntity) tempListEntities.next();

				// Look in each possible element of the entity
				final Iterator tempListOfElement =
					tempEntity.getIteratorOnConstituents();
				while (tempListOfElement.hasNext()) {
					final IElement tempElement =
						(IElement) tempListOfElement.next();

					// If we find a relationship
					if (tempElement instanceof IRelationship) {
						final IRelationship tempLink =
							(IRelationship) tempElement;
						if (Arrays.equals(tempId, tempLink
							.getTargetEntity()
							.getID())) {
							tempLink.setTargetEntity(anEntity);
						}
					}
				}

				final Iterator tempListOfInherited =
					tempEntity.getIteratorOnInheritedEntities();
				// Look in each inhereted
				while (tempListOfInherited.hasNext()) {
					final IFirstClassEntity tempInherited =
						(IFirstClassEntity) tempListOfInherited.next();
					// If we find a ghost in the inheritance list...
					if (tempId.equals(tempInherited.getID())) {
						tempEntity.removeInheritedEntity(entity);
						tempEntity.addInheritedEntity(anEntity);
					}
				}
			}
		}
	}

	//------------------------------------------------------------
	private static void msg(String s) {
		System.out.println(id + " Version " + vers + ": " + s);
	}

	public static ICodeLevelModel parse(
		String aFileName,
		ICodeLevelModel aCodeLevelModel) {
		InputStream input;
		CPPParser.setCodeLevelModel(aCodeLevelModel);
		/* 2004/08/18: Ward Flores */
		CPPParser.setFactory((ICPPFactoryANTLR) CPPParser
			.getCodeLevelModel()
			.getFactory());
		/* END */

		try {
			input = new FileInputStream(aFileName);
		}
		catch (FileNotFoundException fnfe) {
			return CPPParser.getCodeLevelModel();
		}

		try {
			if (jj_initialized_once) {
				ReInit(input);
				SymtabManager.depth = 0;
				CPPParser.resetTypeParameter();
				CPPParser.resetListOfArguments();
				CPPParser.resetListOfElements();
				CPPParser.resetListOfGeneralizations();
				CPPParser.resetListOfUseDisplay();
				CPPParser.resetSuffix();
				CPPParser.resetTypeMember();
			}
			else {
				new CPPParser(input);
			}
			translation_unit();
			msg("File parsed successfully: \"" + aFileName + "\".");
		}
		catch (ParseException e) {
			msg("Encountered errors during parse in file: \"" + aFileName
					+ "\".");
		}

		return CPPParser.getCodeLevelModel();
	}

	public static void main(final String args[]) {
		int ai = 0;
		if (ai == (args.length - 1)) {
			msg("Reading from file " + args[ai] + " . . .");
			try {
				final InputStream input = new java.io.FileInputStream(args[ai]);
				new CPPParser(input);
				translation_unit();
				input.close();
				msg("Program parsed successfully.");
			}
			catch (FileNotFoundException e) {
				msg("File " + args[0] + " not found.");
				return;
			}
			catch (ParseException e) {
				msg("Encountered errors during parse.");
			}
			catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		else if (ai >= args.length) {
			try {
				msg("Reading from standard input . . .");
				new CPPParser(System.in);
				translation_unit();
				msg("Program parsed successfully.");
			}
			catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		else {
			msg("Usage: java " + id + " [-d] [inputfile]");
			return;
		}
	}

	/**
	 * A symbol table manager object. Currently only types are recorded for
	 * doing semantic predicates for parsing.
	 */
	static SymtabManager sym;

	/*
	 * Methods used in semantics predicates.
	 */

	/**
	 * Reads a fully qualified name (since it is used during lookahead, we
	 * cannot use token. We have to explicitly use getToken).
	 */
	// Modif Robidoux
	static String GetFullyScopedName() throws RuntimeException //ParseException
	{
		Token t = getToken(1);

		if (t.kind != ID && t.kind != SCOPE)
			return null;

		StringBuffer s = new StringBuffer();

		int i;
		if (t.kind != SCOPE) {
			s.append(t.image);
			t = getToken(2);
			i = 3;
		}
		else
			i = 2;

		while (t.kind == SCOPE) {
			s.append(t.image);
			s.append((t = getToken(i++)).image);
			t = getToken(i++);
		}

		return s.toString();
	}

	/**
	 * This method first tries to read a sequence of tokens of the form
	 *             ("::")? <ID> ("::" <ID>)*
	 * and if it succeeds then asks the symbol table manager  if this is
	 * the name of a constructor.
	 */
	// Modif Robidoux
	static boolean IsCtor() throws RuntimeException //ParseException
	{
		return SymtabManager.IsCtor(GetFullyScopedName());
	}

	static final public void translation_unit() throws ParseException {
		SymtabManager.OpenScope(null, false);
		label_1: while (true) {
			if (jj_2_1(2)) {
				;
			}
			else {
				break label_1;
			}
			external_declaration();
		}
		jj_consume_token(0);
		SymtabManager.CloseScope();
	}

	static final public void external_declaration() throws ParseException {
		boolean isTypedef = false;
		if (jj_2_5(2147483647)) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case TEMPLATE :
					template_head();
					break;
				default :
					jj_la1[0] = jj_gen;
					;
			}
			declaration();
		}
		else if (jj_2_6(2147483647)) {
			enum_specifier();
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPARENTHESIS :
				case SCOPE :
				case AMPERSAND :
				case STAR :
				case TILDE :
				case OPERATOR :
				case ID :
					init_declarator_list(false);
					break;
				default :
					jj_la1[1] = jj_gen;
					;
			}
			jj_consume_token(SEMICOLON);
		}
		else if (jj_2_7(2147483647)) {
			dtor_definition();
		}
		else if (jj_2_8(2147483647)) {
			ctor_definition();
		}
		else if (jj_2_9(2147483647)) {
			function_definition();
		}
		else if (jj_2_10(2147483647)) {
			conversion_function_decl_or_def();
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case TEMPLATE :
					template_head();
					if (jj_2_2(2147483647)) {
						ctor_definition();
					}
					else if (jj_2_3(2147483647)) {
						function_definition();
					}
					else if (jj_2_4(1)) {
						isTypedef = declaration_specifiers();
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case LPARENTHESIS :
							case SCOPE :
							case AMPERSAND :
							case STAR :
							case TILDE :
							case OPERATOR :
							case ID :
								init_declarator_list(isTypedef);
								break;
							default :
								jj_la1[2] = jj_gen;
								;
						}
						jj_consume_token(SEMICOLON);
					}
					else {
						jj_consume_token(-1);
						throw new ParseException();
					}
					break;
				default :
					jj_la1[3] = jj_gen;
					if (jj_2_11(1)) {
						/* 2004/08/24: Sbastien Robidoux, Ward Flores */
						CPPParser.setIsGlobalField(true);
						declaration();
						CPPParser.setIsGlobalField(false);
					}
					else {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case SEMICOLON :
								jj_consume_token(SEMICOLON);
								break;
							default :
								jj_la1[4] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
						}
					}
			}
		}
	}

	static final public void function_definition() throws ParseException {
		Scope sc = null;
		boolean isTypedef;
		if (jj_2_12(3)) {
			isTypedef = declaration_specifiers();
			sc = function_declarator(isTypedef);
			func_decl_def(sc);
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SCOPE :
				case AMPERSAND :
				case STAR :
				case OPERATOR :
				case ID :
					sc = function_declarator(false);
					func_decl_def(sc);
					break;
				default :
					jj_la1[5] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
	}

	static final public void func_decl_def(Scope sc) throws ParseException {
		boolean closeReqd = false;
		if (closeReqd = (sc != null && sc != SymtabManager.GetCurScope()))
			SymtabManager.OpenScope(sc);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case SEMICOLON :
				jj_consume_token(SEMICOLON);
				break;
			case LCURLYBRACE :
				compound_statement();
				break;
			default :
				jj_la1[6] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		if (closeReqd)
			SymtabManager.CloseScope();
	}

	static final public void linkage_specification() throws ParseException {
		jj_consume_token(EXTERN);
		jj_consume_token(STRING);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LCURLYBRACE :
				jj_consume_token(LCURLYBRACE);
				label_2: while (true) {
					if (jj_2_13(1)) {
						;
					}
					else {
						break label_2;
					}
					external_declaration();
				}
				jj_consume_token(RCURLYBRACE);
				if (jj_2_14(2147483647)) {
					jj_consume_token(SEMICOLON);
				}
				else {
					;
				}
				break;
			default :
				jj_la1[7] = jj_gen;
				if (jj_2_15(1)) {
					declaration();
				}
				else {
					jj_consume_token(-1);
					throw new ParseException();
				}
		}
	}

	static final public void declaration() throws ParseException {
		boolean isTypedef = false;
		if (jj_2_16(2)) {
			isTypedef = declaration_specifiers();
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPARENTHESIS :
				case SCOPE :
				case AMPERSAND :
				case STAR :
				case TILDE :
				case OPERATOR :
				case ID :
					init_declarator_list(isTypedef);
					break;
				default :
					jj_la1[8] = jj_gen;
					;
			}
			jj_consume_token(SEMICOLON);
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case EXTERN :
					linkage_specification();
					break;
				default :
					jj_la1[9] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
	}

	/**
	 * Very temporary. Just returns true if it sees a typedef. Finally, we will
	 * need a structure that stores all the attributes.
	 */
	static final public boolean type_modifiers() throws ParseException {
		boolean isTypedef = false;
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case AUTO :
			case EXTERN :
			case REGISTER :
			case STATIC :
			case TYPEDEF :
				isTypedef = storage_class_specifier();
				break;
			case CONST :
			case VOLATILE :
				type_qualifier();
				break;
			case INLINE :
				jj_consume_token(INLINE);
				break;
			case VIRTUAL :
				jj_consume_token(VIRTUAL);
				break;
			case FRIEND :
				jj_consume_token(FRIEND);
				break;
			default :
				jj_la1[10] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		{
			if (true)
				return isTypedef;
		}
		throw new Error("Missing return statement in function");
	}

	/**
	 * Very temporary. Just returns true if it sees a typedef. Finally, we will
	 * need a structure that stores all the attributes.
	 */
	static final public boolean declaration_specifiers() throws ParseException {
		Token t = getToken(1);
		boolean isTypedef = false, tmp;
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case AUTO :
			case CONST :
			case EXTERN :
			case FRIEND :
			case INLINE :
			case REGISTER :
			case STATIC :
			case TYPEDEF :
			case VIRTUAL :
			case VOLATILE :
				label_3: while (true) {
					tmp = type_modifiers();
					isTypedef |= tmp;
					if (jj_2_17(2147483647)) {
						;
					}
					else {
						break label_3;
					}
				}
				if (jj_2_25(2)) {
					if (jj_2_23(2147483647)) {
						builtin_type_specifier();
						label_4: while (true) {
							if (jj_2_18(2)) {
								;
							}
							else {
								break label_4;
							}
							if (jj_2_19(2147483647)) {
								builtin_type_specifier();
							}
							else if (jj_2_20(2147483647)) {
								tmp = type_modifiers();
							}
							else {
								jj_consume_token(-1);
								throw new ParseException();
							}
							isTypedef |= tmp;
						}
					}
					else if (jj_2_24(1)) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case STRUCT :
							case CLASS :
							case UNION :
								class_specifier();
								break;
							case ENUM :
								enum_specifier();
								break;
							default :
								jj_la1[11] = jj_gen;
								if (jj_2_21(1)) {
									qualified_type();
								}
								else {
									jj_consume_token(-1);
									throw new ParseException();
								}
						}
						label_5: while (true) {
							if (jj_2_22(2)) {
								;
							}
							else {
								break label_5;
							}
							tmp = type_modifiers();
							isTypedef |= tmp;
						}
					}
					else {
						jj_consume_token(-1);
						throw new ParseException();
					}
				}
				else {
					;
				}
				break;
			default :
				jj_la1[14] = jj_gen;
				if (jj_2_30(2147483647)) {
					builtin_type_specifier();
					label_6: while (true) {
						if (jj_2_26(2)) {
							;
						}
						else {
							break label_6;
						}
						if (jj_2_27(2147483647)) {
							builtin_type_specifier();
						}
						else {
							switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
								case AUTO :
								case CONST :
								case EXTERN :
								case FRIEND :
								case INLINE :
								case REGISTER :
								case STATIC :
								case TYPEDEF :
								case VIRTUAL :
								case VOLATILE :
									tmp = type_modifiers();
									isTypedef |= tmp;
									break;
								default :
									jj_la1[12] = jj_gen;
									jj_consume_token(-1);
									throw new ParseException();
							}
						}
					}
				}
				else if (jj_2_31(1)) {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case STRUCT :
						case CLASS :
						case UNION :
							class_specifier();
							break;
						case ENUM :
							enum_specifier();
							break;
						default :
							jj_la1[13] = jj_gen;
							if (jj_2_28(1)) {
								qualified_type();
							}
							else {
								jj_consume_token(-1);
								throw new ParseException();
							}
					}
					label_7: while (true) {
						if (jj_2_29(2)) {
							;
						}
						else {
							break label_7;
						}
						tmp = type_modifiers();
						isTypedef |= tmp;
					}
				}
				else {
					jj_consume_token(-1);
					throw new ParseException();
				}
		}
		/* 2004/07/19: Sbastien Robidoux */
		if (CPPParser.getIsMember()) {
			if (CPPParser.getIsParameter()) {
				CPPParser.setTypeParameter(t.image);
			}
			else {
				CPPParser.setTypeMember(t.image);
			}
		}
		else if (CPPParser.getIsGlobalField()) {
			CPPParser.setTypeGlobalField(t.image);
		}
		{
			if (true)
				return isTypedef;
		}
		throw new Error("Missing return statement in function");
	}

	/*
	void type_specifier() :
	{}
	{
	    simple_type_specifier()
	   |
	    class_specifier()
	   |
	    enum_specifier()
	}
	*/
	static final public void simple_type_specifier() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case CHAR :
			case DOUBLE :
			case FLOAT :
			case INT :
			case LONG :
			case SHORT :
			case SIGNED :
			case UNSIGNED :
			case VOID :
				builtin_type_specifier();
				break;
			default :
				jj_la1[15] = jj_gen;
				if (jj_2_32(1)) {
					qualified_type();
				}
				else {
					jj_consume_token(-1);
					throw new ParseException();
				}
		}
	}

	static final public void scope_override_lookahead() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case SCOPE :
				jj_consume_token(SCOPE);
				break;
			case ID :
				jj_consume_token(ID);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case LESSTHAN :
						jj_consume_token(LESSTHAN);
						template_argument_list();
						jj_consume_token(GREATERTHAN);
						break;
					default :
						jj_la1[16] = jj_gen;
						;
				}
				jj_consume_token(SCOPE);
				break;
			default :
				jj_la1[17] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public String scope_override() throws ParseException {
		String name = "";
		Token t;
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case SCOPE :
				jj_consume_token(SCOPE);
				name += "::";
				label_8: while (true) {
					if (jj_2_33(2)) {
						;
					}
					else {
						break label_8;
					}
					t = jj_consume_token(ID);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case LESSTHAN :
							jj_consume_token(LESSTHAN);
							template_argument_list();
							jj_consume_token(GREATERTHAN);
							break;
						default :
							jj_la1[18] = jj_gen;
							;
					}
					jj_consume_token(SCOPE);
					name += t.image + "::";
				}
				break;
			case ID :
				label_9: while (true) {
					t = jj_consume_token(ID);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case LESSTHAN :
							jj_consume_token(LESSTHAN);
							template_argument_list();
							jj_consume_token(GREATERTHAN);
							break;
						default :
							jj_la1[19] = jj_gen;
							;
					}
					jj_consume_token(SCOPE);
					name += t.image + "::";
					if (jj_2_34(2)) {
						;
					}
					else {
						break label_9;
					}
				}
				break;
			default :
				jj_la1[20] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		{
			if (true)
				return name;
		}
		throw new Error("Missing return statement in function");
	}

	static final public String qualified_id() throws ParseException {
		String name = "";
		Token t;
		/* 2004/08/03: Sbastien Robidoux */
		String operateur = "";
		if (jj_2_35(2147483647)) {
			name = scope_override();
		}
		else {
			;
		}
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ID :
				t = jj_consume_token(ID);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case LESSTHAN :
						jj_consume_token(LESSTHAN);
						template_argument_list();
						jj_consume_token(GREATERTHAN);
						break;
					default :
						jj_la1[21] = jj_gen;
						;
				}
				{
					if (true)
						return name + t.image;
				}
				break;
			case OPERATOR :
				jj_consume_token(OPERATOR);
				operateur = optor();
				{
					if (true)
						return "operator" + operateur;
				}
				break;
			default :
				jj_la1[22] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		throw new Error("Missing return statement in function");
	}

	static final public void ptr_to_member() throws ParseException {
		scope_override();
		jj_consume_token(STAR);
	}

	static final public void qualified_type() throws ParseException {
		/* 2004/08/03: Sbastien Robidoux */
		String name = "";
		if (SymtabManager.IsFullyScopedTypeName(GetFullyScopedName())) {

		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
		name = qualified_id();
		/* 2004/08/03: Sbastien Robidoux */
		CPPParser.addToListOfUseDisplay(name);
		/* END */

	}

	static final public void type_qualifier() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case CONST :
				jj_consume_token(CONST);
				break;
			case VOLATILE :
				jj_consume_token(VOLATILE);
				break;
			default :
				jj_la1[23] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	/**
	 * Very temporary. Just returns true if it sees a typedef. Finally, we will
	 * need a structure that stores all the attributes.
	 */
	static final public boolean storage_class_specifier() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case AUTO :
			case EXTERN :
			case REGISTER :
			case STATIC :
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case AUTO :
						jj_consume_token(AUTO);
						break;
					case REGISTER :
						jj_consume_token(REGISTER);
						break;
					case STATIC :
						jj_consume_token(STATIC);
						break;
					case EXTERN :
						jj_consume_token(EXTERN);
						break;
					default :
						jj_la1[24] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
				}
				{
					if (true)
						return false;
				}
				break;
			case TYPEDEF :
				jj_consume_token(TYPEDEF);
				{
					if (true)
						return true;
				}
				break;
			default :
				jj_la1[25] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		throw new Error("Missing return statement in function");
	}

	static final public void builtin_type_specifier() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case VOID :
				jj_consume_token(VOID);
				break;
			case CHAR :
				jj_consume_token(CHAR);
				break;
			case SHORT :
				jj_consume_token(SHORT);
				break;
			case INT :
				jj_consume_token(INT);
				break;
			case LONG :
				jj_consume_token(LONG);
				break;
			case FLOAT :
				jj_consume_token(FLOAT);
				break;
			case DOUBLE :
				jj_consume_token(DOUBLE);
				break;
			case SIGNED :
				jj_consume_token(SIGNED);
				break;
			case UNSIGNED :
				jj_consume_token(UNSIGNED);
				break;
			default :
				jj_la1[26] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void init_declarator_list(boolean isTypedef)
			throws ParseException {
		init_declarator(isTypedef);
		label_10: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[27] = jj_gen;
					break label_10;
			}
			jj_consume_token(COMMA);
			init_declarator(isTypedef);
		}
	}

	static final public void init_declarator(boolean isTypedef)
			throws ParseException {
		String name;
		name = declarator();
		if (isTypedef)
			SymtabManager.PutTypeName(name);

		/* 2004/07/19: Sbastien Robidoux */
		/* 2004/08/09: Ward Flores */
		if (CPPParser.getIsGlobalField()) {
			{
				// Addition of fields
				final IGlobalField gfield =
					CPPParser.getFactory().createGlobalField(
						name.toCharArray(),
						CPPParser.getTypeGlobalField().toCharArray(),
						1);
				gfield.setVisibility(CPPParser.getAccess());
				CPPParser.createAndGetDefaultPackage().addConstituent(gfield);
			}
		}
		/* END */

		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LPARENTHESIS :
			case ASSIGNEQUAL :
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ASSIGNEQUAL :
						jj_consume_token(ASSIGNEQUAL);
						initializer();
						break;
					case LPARENTHESIS :
						jj_consume_token(LPARENTHESIS);
						expression_list();
						jj_consume_token(RPARENTHESIS);
						break;
					default :
						jj_la1[28] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
				}
				break;
			default :
				jj_la1[29] = jj_gen;
				;
		}
	}

	static final public void class_head() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case STRUCT :
				jj_consume_token(STRUCT);
				break;
			case UNION :
				jj_consume_token(UNION);
				break;
			case CLASS :
				jj_consume_token(CLASS);
				break;
			default :
				jj_la1[30] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ID :
				jj_consume_token(ID);
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COLON :
						base_clause(null);
						break;
					default :
						jj_la1[31] = jj_gen;
						;
				}
				break;
			default :
				jj_la1[32] = jj_gen;
				;
		}
	}

	static final public void class_specifier() throws ParseException {
		/* 2004/08/10 : Sbastien Robidoux*/
		/* 2004/08/10 : Ward Flores*/

		IFirstClassEntity entity = null;
		CPPParser.setAccess(Modifier.PUBLIC);
		ClassScope sc = null;
		Token t;
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case STRUCT :
				// Create a structure (getToken(2) gives the structure name)
				entity =
					CPPParser.getFactory().createStructure(
						getToken(2).image.toCharArray());
				CPPParser.replaceGhost(entity);
				jj_consume_token(STRUCT);
				break;
			case UNION :
				// Create an union (getToken(2) gives the union name)
				entity =
					CPPParser.getFactory().createUnion(
						getToken(2).image.toCharArray());
				CPPParser.replaceGhost(entity);
				jj_consume_token(UNION);
				break;
			case CLASS :
				// Create a class (getToken(2) gives the class name)
				entity =
					CPPParser.getFactory().createClass(
						getToken(2).image.toCharArray(),
						getToken(2).image.toCharArray());
				CPPParser.replaceGhost(entity);
				jj_consume_token(CLASS);
				break;
			default :
				jj_la1[33] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}

		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LCURLYBRACE :
				jj_consume_token(LCURLYBRACE);
				SymtabManager.OpenScope(null, false);
				label_11: while (true) {
					if (jj_2_36(1)) {
						;
					}
					else {
						break label_11;
					}
					member_declaration();
				}
				jj_consume_token(RCURLYBRACE);
				/* 2004/07/15 : Sbastien Robidoux*/
				/* 2004/08/03 : Ward Flores*/

				{
					// Addition of useRelationships
					final Iterator it1 =
						CPPParser.getListOfUseDisplay().iterator();
					while (it1.hasNext()) {
						String targetName = (String) it1.next();
						IFirstClassEntity targetEntity;
						targetEntity =
							(IFirstClassEntity) CPPParser
								.createAndGetDefaultPackage()
								.getConstituentFromName(targetName);
						// Create a Ghost if no Entity found...
						if (targetEntity == null
								&& !targetName.equals(entity.getName())) {
							// Create a Ghost
							targetEntity =
								CPPParser
									.getFactory()
									.createGhost(
										(targetName + CPPParser.UniqueIdentifier++)
											.toCharArray(),
										targetName.toCharArray());
							CPPParser
								.createAndGetDefaultPackage()
								.addConstituent(targetEntity);
						}
						if (targetEntity != null) {
							final IUseRelationship useRelationship =
								CPPParser
									.getFactory()
									.createUseRelationship(
										("uR" + CPPParser.UniqueIdentifier++).toCharArray(),
										targetEntity,
										2);
							CPPParser.addToListOfElements(useRelationship);
						}
					}
					CPPParser.resetListOfUseDisplay();

					// Addition of members
					final Iterator it2 =
						CPPParser.getListOfElements().iterator();
					while (it2.hasNext()) {
						entity.addConstituent((IElement) it2.next());
					}
					CPPParser.resetListOfElements();

					// Addition of classes, structs or unions
					CPPParser.createAndGetDefaultPackage().addConstituent(
						entity);

					// Addition of super classes
					final Iterator it3 =
						CPPParser.getListOfGeneralizations().iterator();
					while (it3.hasNext()) {
						String superName = (String) it3.next();
						IFirstClassEntity superEntity;
						superEntity =
							(IFirstClassEntity) CPPParser
								.createAndGetDefaultPackage()
								.getConstituentFromName(superName);
						//Create un Ghost if the parent isn't in the model...
						if (superEntity == null) {
							// Create a Ghost
							superEntity =
								CPPParser
									.getFactory()
									.createGhost(
										(superName + CPPParser.UniqueIdentifier++)
											.toCharArray(),
										superName.toCharArray());
							CPPParser
								.createAndGetDefaultPackage()
								.addConstituent(superEntity);
						}
						entity.addInheritedEntity(superEntity);
					}
					CPPParser.resetListOfGeneralizations();

				}
				/*END*/

				SymtabManager.CloseScope();
				break;
			default :
				jj_la1[35] = jj_gen;
				if (jj_2_39(2)) {
					t = jj_consume_token(ID);
					sc = (ClassScope) SymtabManager.OpenScope(t.image, true);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case COLON :
							base_clause(sc);
							break;
						default :
							jj_la1[34] = jj_gen;
							;
					}
					jj_consume_token(LCURLYBRACE);
					label_12: while (true) {
						if (jj_2_37(1)) {
							;
						}
						else {
							break label_12;
						}
						member_declaration();
					}
					jj_consume_token(RCURLYBRACE);
					/* 2004/07/15 : Sbastien Robidoux*/
					/* 2004/08/03 : Ward Flores*/

					{
						// Addition of useRelationships
						final Iterator it1 =
							CPPParser.getListOfUseDisplay().iterator();
						while (it1.hasNext()) {
							String targetName = (String) it1.next();
							IFirstClassEntity targetEntity;
							targetEntity =
								(IFirstClassEntity) CPPParser
									.createAndGetDefaultPackage()
									.getConstituentFromName(targetName);
							// Create a Ghost if no Entity found...
							if (targetEntity == null
									&& !targetName.equals(entity.getName())) {
								// Create a Ghost
								targetEntity =
									CPPParser
										.getFactory()
										.createGhost(
											(targetName + CPPParser.UniqueIdentifier++)
												.toCharArray(),
											targetName.toCharArray());
								CPPParser
									.createAndGetDefaultPackage()
									.addConstituent(targetEntity);
							}
							if (targetEntity != null) {
								final IUseRelationship useRelationship =
									CPPParser
										.getFactory()
										.createUseRelationship(
											("uR" + CPPParser.UniqueIdentifier++)
												.toCharArray(),
											targetEntity,
											2);
								CPPParser.addToListOfElements(useRelationship);
							}
						}
						CPPParser.resetListOfUseDisplay();

						// Addition of members
						final Iterator it2 =
							CPPParser.getListOfElements().iterator();
						while (it2.hasNext()) {
							entity.addConstituent((IElement) it2.next());
						}
						CPPParser.resetListOfElements();

						// Addition of classes, structs or unions
						CPPParser.createAndGetDefaultPackage().addConstituent(
							entity);

						// Addition of super classes
						final Iterator it3 =
							CPPParser.getListOfGeneralizations().iterator();
						while (it3.hasNext()) {
							String superName = (String) it3.next();
							IFirstClassEntity superEntity;
							superEntity =
								(IFirstClassEntity) CPPParser
									.createAndGetDefaultPackage()
									.getConstituentFromName(superName);
							//Create un Ghost if the parent isn't in the model...
							if (superEntity == null) {
								// Create a Ghost
								superEntity =
									CPPParser
										.getFactory()
										.createGhost(
											(superName + CPPParser.UniqueIdentifier++)
												.toCharArray(),
											superName.toCharArray());
								CPPParser
									.createAndGetDefaultPackage()
									.addConstituent(superEntity);
							}
							entity.addInheritedEntity(superEntity);
						}
						CPPParser.resetListOfGeneralizations();

					}
					/*END*/

					SymtabManager.CloseScope();
				}
				else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case ID :
							t = jj_consume_token(ID);
							if (jj_2_38(2)) {
								jj_consume_token(LESSTHAN);
								template_argument_list();
								jj_consume_token(GREATERTHAN);
							}
							else {
								;
							}
							/* 2004/07/15 : Sbastien Robidoux*/
							/* 2004/08/03 : Ward Flores*/
							{
								// Addition of useRelationships
								final Iterator it1 =
									CPPParser.getListOfUseDisplay().iterator();
								while (it1.hasNext()) {
									String targetName = (String) it1.next();
									IFirstClassEntity targetEntity;
									targetEntity =
										(IFirstClassEntity) CPPParser
											.createAndGetDefaultPackage()
											.getConstituentFromName(targetName);
									// Create a Ghost if no Entity found...
									if (targetEntity == null
											&& !targetName.equals(entity
												.getName())) {
										// Create a Ghost
										targetEntity =
											CPPParser
												.getFactory()
												.createGhost(
													(targetName + CPPParser.UniqueIdentifier++)
														.toCharArray(),
													targetName.toCharArray());
										CPPParser
											.createAndGetDefaultPackage()
											.addConstituent(targetEntity);
									}
									if (targetEntity != null) {
										final IUseRelationship useRelationship =
											CPPParser
												.getFactory()
												.createUseRelationship(
													("uR" + CPPParser.UniqueIdentifier++)
														.toCharArray(),
													targetEntity,
													2);
										CPPParser
											.addToListOfElements(useRelationship);
									}
								}
								CPPParser.resetListOfUseDisplay();
								// Addition of members
								final Iterator it2 =
									CPPParser.getListOfElements().iterator();
								while (it2.hasNext()) {
									entity
										.addConstituent((IElement) it2.next());
								}
								CPPParser.resetListOfElements();

								// Addition of classes, structs or unions
								CPPParser
									.createAndGetDefaultPackage()
									.addConstituent(entity);

								// Addition of super classes
								final Iterator it3 =
									CPPParser
										.getListOfGeneralizations()
										.iterator();
								while (it3.hasNext()) {
									String superName = (String) it3.next();
									IFirstClassEntity superEntity;
									superEntity =
										(IFirstClassEntity) CPPParser
											.createAndGetDefaultPackage()
											.getConstituentFromName(superName);
									//Create un Ghost if the parent isn't in the model...
									if (superEntity == null) {
										// Create a Ghost
										superEntity =
											CPPParser
												.getFactory()
												.createGhost(
													(superName + CPPParser.UniqueIdentifier++)
														.toCharArray(),
													superName.toCharArray());
										CPPParser
											.createAndGetDefaultPackage()
											.addConstituent(superEntity);
									}
									entity.addInheritedEntity(superEntity);
								}
								CPPParser.resetListOfGeneralizations();

							}
							/*END*/

							SymtabManager.PutTypeName(t.image);
							break;
						default :
							jj_la1[36] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
					}
				}
		}
	}

	static final public void base_clause(ClassScope scope)
			throws ParseException {
		jj_consume_token(COLON);
		base_specifier(scope);
		label_13: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[37] = jj_gen;
					break label_13;
			}
			jj_consume_token(COMMA);
			base_specifier(scope);
		}
	}

	static final public void base_specifier(ClassScope scope)
			throws ParseException {
		Token t;
		/* 2004/07/20: Sbastien Robidoux */
		CPPParser.addToListOfGeneralizations(getToken(2).image);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case PRIVATE :
			case PROTECTED :
			case PUBLIC :
			case VIRTUAL :
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case VIRTUAL :
						jj_consume_token(VIRTUAL);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case PRIVATE :
							case PROTECTED :
							case PUBLIC :
								access_specifier();
								break;
							default :
								jj_la1[38] = jj_gen;
								;
						}
						break;
					case PRIVATE :
					case PROTECTED :
					case PUBLIC :
						access_specifier();
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case VIRTUAL :
								jj_consume_token(VIRTUAL);
								break;
							default :
								jj_la1[39] = jj_gen;
								;
						}
						break;
					default :
						jj_la1[40] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
				}
				break;
			default :
				jj_la1[41] = jj_gen;
				;
		}
		if (jj_2_40(2147483647)) {
			scope_override();
		}
		else {
			;
		}
		t = jj_consume_token(ID);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LESSTHAN :
				jj_consume_token(LESSTHAN);
				template_argument_list();
				jj_consume_token(GREATERTHAN);
				break;
			default :
				jj_la1[42] = jj_gen;
				;
		}
		scope.AddSuper(SymtabManager.GetScope(t.image));
	}

	static final public int access_specifier() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case PUBLIC :
				jj_consume_token(PUBLIC);
				{
					if (true)
						return Modifier.PUBLIC;
				}
				break;
			case PROTECTED :
				jj_consume_token(PROTECTED);
				{
					if (true)
						return Modifier.PROTECTED;
				}
				break;
			case PRIVATE :
				jj_consume_token(PRIVATE);
				{
					if (true)
						return Modifier.PRIVATE;
				}
				break;
			default :
				jj_la1[43] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		throw new Error("Missing return statement in function");
	}

	static final public void member_declaration() throws ParseException {
		boolean isTypedef = false;
		int tmp;
		/* 2004/07/19: Sbastien Robidoux */
		/* 2004/08/03: Ward Flores */
		// Member recognized
		CPPParser.enableMember(true);
		CPPParser.resetListOfArguments();
		CPPParser.resetSuffix();
		if (jj_2_41(2147483647)) {
			declaration();
		}
		else if (jj_2_42(2147483647)) {
			enum_specifier();
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPARENTHESIS :
				case SCOPE :
				case AMPERSAND :
				case STAR :
				case TILDE :
				case OPERATOR :
				case ID :
					member_declarator_list(false);
					break;
				default :
					jj_la1[44] = jj_gen;
					;
			}
			jj_consume_token(SEMICOLON);
		}
		else if (jj_2_43(2147483647)) {
			conversion_function_decl_or_def();
		}
		else if (jj_2_44(2147483647)) {
			dtor_definition();
		}
		else if (jj_2_45(2147483647)) {
			dtor_ctor_decl_spec();
			simple_dtor_declarator();
			jj_consume_token(SEMICOLON);
		}
		else if (jj_2_46(2147483647)) {
			ctor_definition();
		}
		else if (jj_2_47(2147483647)) {
			dtor_ctor_decl_spec();
			ctor_declarator();
			jj_consume_token(SEMICOLON);
		}
		else if (jj_2_48(2147483647)) {
			function_definition();
		}
		else if (jj_2_49(2147483647)) {
			isTypedef = declaration_specifiers();
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPARENTHESIS :
				case SCOPE :
				case AMPERSAND :
				case STAR :
				case TILDE :
				case OPERATOR :
				case ID :
					member_declarator_list(isTypedef);
					break;
				default :
					jj_la1[45] = jj_gen;
					;
			}
			jj_consume_token(SEMICOLON);
		}
		else if (jj_2_50(2147483647)) {
			function_declarator(false);
			jj_consume_token(SEMICOLON);
		}
		else if (jj_2_51(3)) {
			qualified_id();
			jj_consume_token(SEMICOLON);
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case PRIVATE :
				case PROTECTED :
				case PUBLIC :
					tmp = access_specifier();
					jj_consume_token(COLON);
					// Point out the access of the next member 
					CPPParser.setAccess(tmp);
					break;
				case SEMICOLON :
					jj_consume_token(SEMICOLON);
					break;
				default :
					jj_la1[46] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
		// Member end
		CPPParser.enableMember(false);
	}

	static final public void member_declarator_list(boolean isTypedef)
			throws ParseException {
		member_declarator(isTypedef);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ASSIGNEQUAL :
				jj_consume_token(ASSIGNEQUAL);
				jj_consume_token(OCTALINT);
				break;
			default :
				jj_la1[47] = jj_gen;
				;
		}
		label_14: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[48] = jj_gen;
					break label_14;
			}
			jj_consume_token(COMMA);
			member_declarator(isTypedef);
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ASSIGNEQUAL :
					jj_consume_token(ASSIGNEQUAL);
					jj_consume_token(OCTALINT);
					break;
				default :
					jj_la1[49] = jj_gen;
					;
			}
		}
	}

	static final public void member_declarator(boolean isTypedef)
			throws ParseException {
		String name;
		name = declarator();
		if (isTypedef)
			SymtabManager.PutTypeName(name);
		/* 2004/07/19: Sbastien Robidoux */
		/* 2004/08/09: Ward Flores */
		if (CPPParser.getIsMember()) {
			{
				// Addition of fields
				final IField field =
					CPPParser.getFactory().createField(
						name.toCharArray(),
						name.toCharArray(),
						(CPPParser.getTypeMember()).toCharArray(),
						1);
				field.setVisibility(CPPParser.getAccess());
				CPPParser.addToListOfElements(field);
			}
		}
		/* END */

	}

	static final public void conversion_function_decl_or_def()
			throws ParseException {
		if (jj_2_52(2147483647)) {
			scope_override();
		}
		else {
			;
		}
		jj_consume_token(OPERATOR);
		declaration_specifiers();
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case AMPERSAND :
			case STAR :
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case STAR :
						jj_consume_token(STAR);
						break;
					case AMPERSAND :
						jj_consume_token(AMPERSAND);
						break;
					default :
						jj_la1[50] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
				}
				break;
			default :
				jj_la1[51] = jj_gen;
				;
		}
		jj_consume_token(LPARENTHESIS);
		if (jj_2_53(1)) {
			parameter_list();
		}
		else {
			;
		}
		jj_consume_token(RPARENTHESIS);
		if (jj_2_54(2)) {
			type_qualifier();
		}
		else {
			;
		}
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case THROW :
				exception_spec();
				break;
			default :
				jj_la1[52] = jj_gen;
				;
		}
		func_decl_def(null);
	}

	static final public void enum_specifier() throws ParseException {
		Token t;
		jj_consume_token(ENUM);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LCURLYBRACE :
				jj_consume_token(LCURLYBRACE);
				enumerator_list();
				jj_consume_token(RCURLYBRACE);
				break;
			case ID :
				t = jj_consume_token(ID);
				/* 2004/08/19: Ward Flores */
				// Create an enum
				{
					IFirstClassEntity entity =
						CPPParser
							.getFactory()
							.createEnum(t.image.toCharArray());
					CPPParser.replaceGhost(entity);
					// Add the enum to the default package
					CPPParser.createAndGetDefaultPackage().addConstituent(
						entity);
				}
				/* END */

				if (jj_2_55(2)) {
					jj_consume_token(LCURLYBRACE);
					enumerator_list();
					jj_consume_token(RCURLYBRACE);
				}
				else {
					;
				}
				SymtabManager.PutTypeName(t.image);
				break;
			default :
				jj_la1[53] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void enumerator_list() throws ParseException {
		enumerator();
		label_15: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[54] = jj_gen;
					break label_15;
			}
			jj_consume_token(COMMA);
			enumerator();
		}
	}

	static final public void enumerator() throws ParseException {
		jj_consume_token(ID);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ASSIGNEQUAL :
				jj_consume_token(ASSIGNEQUAL);
				constant_expression();
				break;
			default :
				jj_la1[55] = jj_gen;
				;
		}
	}

	static final public void ptr_operator() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case AMPERSAND :
				jj_consume_token(AMPERSAND);
				cv_qualifier_seq();
				break;
			case STAR :
				jj_consume_token(STAR);
				cv_qualifier_seq();
				break;
			case SCOPE :
			case ID :
				ptr_to_member();
				cv_qualifier_seq();
				break;
			default :
				jj_la1[56] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void cv_qualifier_seq() throws ParseException {
		if (jj_2_58(2)) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case CONST :
					jj_consume_token(CONST);
					if (jj_2_56(2)) {
						jj_consume_token(VOLATILE);
					}
					else {
						;
					}
					break;
				case VOLATILE :
					jj_consume_token(VOLATILE);
					if (jj_2_57(2)) {
						jj_consume_token(CONST);
					}
					else {
						;
					}
					break;
				default :
					jj_la1[57] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
		else {
			;
		}
	}

	static final public String declarator() throws ParseException {
		String name;
		if (jj_2_59(2147483647)) {
			ptr_operator();
			name = declarator();
			/* 2004/07/19: Sbastien Robidoux */
			if (CPPParser.getIsMember()) {
				if (CPPParser.getIsParameter()) {
					CPPParser.setTypeParameter(CPPParser.getTypeParameter()
							+ " *");
				}
				else {
					CPPParser.setTypeMember(CPPParser.getTypeMember() + " *");
				}
			}
			else if (CPPParser.getIsGlobalField()) {
				CPPParser.setTypeGlobalField(CPPParser.getTypeGlobalField()
						+ "*");
			}
			/* END */

		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPARENTHESIS :
				case SCOPE :
				case TILDE :
				case OPERATOR :
				case ID :
					name = direct_declarator();
					break;
				default :
					jj_la1[58] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
		{
			if (true)
				return name;
		}
		throw new Error("Missing return statement in function");
	}

	static final public String direct_declarator() throws ParseException {
		String name;
		Token t;
		if (jj_2_63(2)) {
			jj_consume_token(TILDE);
			t = jj_consume_token(ID);
			if (jj_2_60(2)) {
				declarator_suffixes();
			}
			else {
				;
			}
			{
				if (true)
					return "~" + t.image;
			}
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPARENTHESIS :
					jj_consume_token(LPARENTHESIS);
					name = declarator();
					jj_consume_token(RPARENTHESIS);
					if (jj_2_61(2)) {
						declarator_suffixes();
					}
					else {
						;
					}
					{
						if (true)
							return name;
					}
					break;
				case SCOPE :
				case OPERATOR :
				case ID :
					name = qualified_id();
					if (jj_2_62(2)) {
						declarator_suffixes();
						name += CPPParser.getSuffix();
					}
					else {
						;
					}
					{
						if (true)
							return name;
					}
					break;
				default :
					jj_la1[59] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
		throw new Error("Missing return statement in function");
	}

	static final public void declarator_suffixes() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LSQUAREBRACKET :
				label_16: while (true) {
					jj_consume_token(LSQUAREBRACKET);
					CPPParser.setSuffix("[]");
					if (jj_2_64(1)) {
						constant_expression();
					}
					else {
						;
					}
					jj_consume_token(RSQUAREBRACKET);
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case LSQUAREBRACKET :
							;
							break;
						default :
							jj_la1[60] = jj_gen;
							break label_16;
					}
				}
				break;
			case LPARENTHESIS :
				jj_consume_token(LPARENTHESIS);
				if (jj_2_65(1)) {
					parameter_list();
				}
				else {
					;
				}
				jj_consume_token(RPARENTHESIS);
				if (jj_2_66(2)) {
					type_qualifier();
				}
				else {
					;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case THROW :
						exception_spec();
						break;
					default :
						jj_la1[61] = jj_gen;
						;
				}
				break;
			default :
				jj_la1[62] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	/**
	 * Used only for lookahead.
	 */
	static final public void function_declarator_lookahead()
			throws ParseException {
		label_17: while (true) {
			if (jj_2_67(2)) {
				;
			}
			else {
				break label_17;
			}
			ptr_operator();
		}
		qualified_id();
		jj_consume_token(LPARENTHESIS);
	}

	static final public Scope function_declarator(boolean isTypedef)
			throws ParseException {
		Scope sc = null;
		if (jj_2_68(2147483647)) {
			/* 2004/07/19: Sbastien Robidoux */
			if (CPPParser.getIsMember()) {
				CPPParser.setTypeMember(CPPParser.getTypeMember() + " *");
			}
			/* END */

			ptr_operator();
			sc = function_declarator(isTypedef);
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SCOPE :
				case OPERATOR :
				case ID :
					sc = function_direct_declarator(isTypedef);
					break;
				default :
					jj_la1[63] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
		{
			if (true)
				return sc;
		}
		throw new Error("Missing return statement in function");
	}

	static final public Scope function_direct_declarator(boolean isTypedef)
			throws ParseException {
		String name;
		Scope sc = null;
		boolean closeReqd = false;
		name = qualified_id();
		sc = SymtabManager.GetScopeOfFullyScopedName(name);

		if (closeReqd = (sc != null && sc != SymtabManager.GetCurScope()))
			SymtabManager.OpenScope(sc);
		jj_consume_token(LPARENTHESIS);
		if (jj_2_69(1)) {
			parameter_list();
		}
		else {
			;
		}
		jj_consume_token(RPARENTHESIS);
		if (jj_2_70(2)) {
			type_qualifier();
		}
		else {
			;
		}
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case THROW :
				exception_spec();
				break;
			default :
				jj_la1[64] = jj_gen;
				;
		}
		if (jj_2_71(2147483647)) {
			jj_consume_token(ASSIGNEQUAL);
			jj_consume_token(OCTALINT);
		}
		else {
			;
		}
		if (closeReqd)
			SymtabManager.CloseScope();

		if (isTypedef)
			SymtabManager.PutTypeName(name);

		{
			/* 2004/07/20 - Ward Flores */
			if (CPPParser.getIsMember()) {
				{
					// Addition of methods
					final IMethod method =
						CPPParser
							.getFactory()
							.createMethod(
								(name + CPPParser.UniqueIdentifier++).toCharArray(),
								name.toCharArray());
					method.setReturnType(CPPParser
						.getTypeMember()
						.toCharArray());
					method.setVisibility(CPPParser.getAccess());

					// Addition of parameters
					final Iterator iterator =
						CPPParser.getListOfArguments().iterator();
					while (iterator.hasNext()) {
						method.addConstituent((IParameter) iterator.next());
					}
					CPPParser.resetListOfArguments();

					CPPParser.addToListOfElements(method);
				}
			}
		}
		{
			if (true)
				return sc;
		}
		throw new Error("Missing return statement in function");
	}

	static final public void dtor_ctor_decl_spec() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case INLINE :
			case VIRTUAL :
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case VIRTUAL :
						jj_consume_token(VIRTUAL);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case INLINE :
								jj_consume_token(INLINE);
								break;
							default :
								jj_la1[65] = jj_gen;
								;
						}
						break;
					case INLINE :
						jj_consume_token(INLINE);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case VIRTUAL :
								jj_consume_token(VIRTUAL);
								break;
							default :
								jj_la1[66] = jj_gen;
								;
						}
						break;
					default :
						jj_la1[67] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
				}
				break;
			default :
				jj_la1[68] = jj_gen;
				;
		}
	}

	static final public void dtor_definition() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case TEMPLATE :
				template_head();
				break;
			default :
				jj_la1[69] = jj_gen;
				;
		}
		dtor_ctor_decl_spec();
		dtor_declarator();
		compound_statement();
	}

	static final public void ctor_definition() throws ParseException {
		Scope sc = null;
		boolean closeReqd = false;
		dtor_ctor_decl_spec();
		sc = ctor_declarator();
		if (closeReqd = (sc != null && sc != SymtabManager.GetCurScope()))
			SymtabManager.OpenScope(sc);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case THROW :
				exception_spec();
				break;
			default :
				jj_la1[70] = jj_gen;
				;
		}
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case SEMICOLON :
				jj_consume_token(SEMICOLON);
				break;
			case LCURLYBRACE :
			case COLON :
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COLON :
						ctor_initializer();
						break;
					default :
						jj_la1[71] = jj_gen;
						;
				}
				compound_statement();
				break;
			default :
				jj_la1[72] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
		if (closeReqd)
			SymtabManager.CloseScope();
	}

	static final public void ctor_declarator_lookahead() throws ParseException {
		if (IsCtor()) {

		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
		qualified_id();
		jj_consume_token(LPARENTHESIS);
	}

	static final public Scope ctor_declarator() throws ParseException {
		String name;
		Scope sc = null;
		boolean closeReqd = false;
		if (IsCtor()) {

		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
		name = qualified_id();
		sc = SymtabManager.GetScopeOfFullyScopedName(name);

		if (closeReqd = (sc != null && sc != SymtabManager.GetCurScope()))
			SymtabManager.OpenScope(sc);
		jj_consume_token(LPARENTHESIS);
		if (jj_2_72(2)) {
			parameter_list();
		}
		else {
			;
		}
		jj_consume_token(RPARENTHESIS);
		if (jj_2_73(2)) {
			exception_spec();
		}
		else {
			;
		}
		if (closeReqd)
			SymtabManager.CloseScope();

		{ /* Modification 2004/07/27 : Sbastien Robidoux */
			if (CPPParser.getIsMember()) {

				{
					// Addition of constructors
					final IConstructor constr =
						CPPParser
							.getFactory()
							.createConstructor(
								(name + CPPParser.UniqueIdentifier++).toCharArray(),
								name.toCharArray());
					constr.setVisibility(CPPParser.getAccess());

					// Addition of parameters
					final Iterator iterator =
						CPPParser.getListOfArguments().iterator();
					while (iterator.hasNext()) {
						constr.addConstituent((IParameter) iterator.next());
					}
					CPPParser.resetListOfArguments();

					CPPParser.addToListOfElements(constr);
				}
			}
		}

		{
			if (true)
				return sc;
		}
		throw new Error("Missing return statement in function");
	}

	static final public void ctor_initializer() throws ParseException {
		jj_consume_token(COLON);
		superclass_init();
		label_18: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[73] = jj_gen;
					break label_18;
			}
			jj_consume_token(COMMA);
			superclass_init();
		}
	}

	static final public void superclass_init() throws ParseException {
		qualified_id();
		jj_consume_token(LPARENTHESIS);
		if (jj_2_74(1)) {
			expression_list();
		}
		else {
			;
		}
		jj_consume_token(RPARENTHESIS);
	}

	static final public void dtor_declarator() throws ParseException {
		if (jj_2_75(2147483647)) {
			scope_override();
		}
		else {
			;
		}
		simple_dtor_declarator();
	}

	static final public void simple_dtor_declarator() throws ParseException {
		/* 2004/08/03: Sbastien Robidoux */
		String name = "~" + getToken(2).image;
		jj_consume_token(TILDE);
		if (IsCtor()) {

		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
		jj_consume_token(ID);
		jj_consume_token(LPARENTHESIS);
		if (jj_2_76(1)) {
			parameter_list();
		}
		else {
			;
		}
		jj_consume_token(RPARENTHESIS);
		/* 2004/08/03: Sbastien Robidoux */
		if (CPPParser.getIsMember()) {
			{
				// Addition of destructors
				final IDestructor destr =
					CPPParser.getFactory().createDestructor(
						(name + CPPParser.UniqueIdentifier++).toCharArray(),
						name.toCharArray());
				destr.setVisibility(CPPParser.getAccess());

				// Addition of parameters
				final Iterator iterator =
					CPPParser.getListOfArguments().iterator();
				while (iterator.hasNext()) {
					destr.addConstituent((IParameter) iterator.next());
				}
				CPPParser.resetListOfArguments();

				CPPParser.addToListOfElements(destr);
			}
		}

		/* END */

	}

	static final public void parameter_list() throws ParseException {
		/* 2004/07/27: Sbastien Robidoux */
		CPPParser.enableParameter(CPPParser.getIsMember());
		if (jj_2_78(1)) {
			parameter_declaration_list();
			if (jj_2_77(2)) {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA :
						jj_consume_token(COMMA);
						break;
					default :
						jj_la1[74] = jj_gen;
						;
				}
				jj_consume_token(ELLIPSIS);
			}
			else {
				;
			}
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ELLIPSIS :
					jj_consume_token(ELLIPSIS);
					break;
				default :
					jj_la1[75] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
		/* 2004/07/27: Sbastien Robidoux */
		CPPParser.enableParameter(false);
		/* END */
	}

	static final public void parameter_declaration_list() throws ParseException {
		parameter_declaration();
		label_19: while (true) {
			if (jj_2_79(2)) {
				;
			}
			else {
				break label_19;
			}
			jj_consume_token(COMMA);
			parameter_declaration();
		}
	}

	static final public void parameter_declaration() throws ParseException {
		declaration_specifiers();
		if (jj_2_80(2147483647)) {
			declarator();
		}
		else {
			abstract_declarator();
		}
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ASSIGNEQUAL :
				jj_consume_token(ASSIGNEQUAL);
				assignment_expression();
				break;
			default :
				jj_la1[76] = jj_gen;
				;
		}
		/* 2004/07/27: Sbastien Robidoux */
		if (CPPParser.getIsMember()) {
			// Addition of parameters
			IEntity targetEntity;
			String typeName = CPPParser.getTypeParameter();
			if (typeName.indexOf(' ') > -1) {
				// For pointers...
				typeName = typeName.substring(0, typeName.indexOf(' '));
			}
			targetEntity =
				(IFirstClassEntity) CPPParser
					.createAndGetDefaultPackage()
					.getConstituentFromName(typeName);
			if (targetEntity == null) {
				// I assume that it is a primitive type, else it is a ghost...
				targetEntity =
					(IPrimitiveEntity) CPPParser
						.getFactory()
						.createPrimitiveEntity(typeName.toCharArray());
			}
			final IParameter param =
				CPPParser.getFactory().createParameter(
					targetEntity,
					CPPParser.getTypeParameter().toCharArray(),
					1);
			CPPParser.addToListOfArguments(param);
		}

		/* END */
	}

	static final public void initializer() throws ParseException {
		if (jj_2_81(3)) {
			jj_consume_token(LCURLYBRACE);
			initializer();
			label_20: while (true) {
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case COMMA :
						;
						break;
					default :
						jj_la1[77] = jj_gen;
						break label_20;
				}
				jj_consume_token(COMMA);
				initializer();
			}
			jj_consume_token(RCURLYBRACE);
		}
		else if (jj_2_82(1)) {
			assignment_expression();
		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
	}

	static final public void type_name() throws ParseException {
		declaration_specifiers();
		abstract_declarator();
	}

	static final public void abstract_declarator() throws ParseException {
		if (jj_2_84(2)) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LPARENTHESIS :
					jj_consume_token(LPARENTHESIS);
					abstract_declarator();
					jj_consume_token(RPARENTHESIS);
					label_21: while (true) {
						abstract_declarator_suffix();
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case LSQUAREBRACKET :
							case LPARENTHESIS :
								;
								break;
							default :
								jj_la1[78] = jj_gen;
								break label_21;
						}
					}
					break;
				case LSQUAREBRACKET :
					label_22: while (true) {
						jj_consume_token(LSQUAREBRACKET);
						if (jj_2_83(1)) {
							constant_expression();
						}
						else {
							;
						}
						jj_consume_token(RSQUAREBRACKET);
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case LSQUAREBRACKET :
								;
								break;
							default :
								jj_la1[79] = jj_gen;
								break label_22;
						}
					}
					break;
				case SCOPE :
				case AMPERSAND :
				case STAR :
				case ID :
					ptr_operator();
					abstract_declarator();
					/* 2004/07/19: Sbastien Robidoux */
					if (CPPParser.getIsMember()) {
						if (CPPParser.getIsParameter()) {
							CPPParser.setTypeParameter(CPPParser
								.getTypeParameter() + " *");
						}
						else {
							CPPParser.setTypeMember(CPPParser.getTypeMember()
									+ " *");
						}
					}
					/* END */

					break;
				default :
					jj_la1[80] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
		else {
			;
		}
	}

	static final public void abstract_declarator_suffix() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LSQUAREBRACKET :
				jj_consume_token(LSQUAREBRACKET);
				if (jj_2_85(1)) {
					constant_expression();
				}
				else {
					;
				}
				jj_consume_token(RSQUAREBRACKET);
				break;
			case LPARENTHESIS :
				jj_consume_token(LPARENTHESIS);
				if (jj_2_86(1)) {
					parameter_list();
				}
				else {
					;
				}
				jj_consume_token(RPARENTHESIS);
				break;
			default :
				jj_la1[81] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void template_head() throws ParseException {
		jj_consume_token(TEMPLATE);
		jj_consume_token(LESSTHAN);
		template_parameter_list();
		jj_consume_token(GREATERTHAN);
	}

	static final public void template_parameter_list() throws ParseException {
		template_parameter();
		label_23: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[82] = jj_gen;
					break label_23;
			}
			jj_consume_token(COMMA);
			template_parameter();
		}
	}

	static final public void template_parameter() throws ParseException {
		Token t;
		if (jj_2_87(3)) {
			jj_consume_token(CLASS);
			t = jj_consume_token(ID);
			SymtabManager.PutTypeName(t.image);
		}
		else if (jj_2_88(1)) {
			parameter_declaration();
		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
	}

	static final public void template_id() throws ParseException {
		jj_consume_token(ID);
		jj_consume_token(LESSTHAN);
		template_argument_list();
		jj_consume_token(GREATERTHAN);
	}

	static final public void template_argument_list() throws ParseException {
		template_argument();
		label_24: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[83] = jj_gen;
					break label_24;
			}
			jj_consume_token(COMMA);
			template_argument();
		}
	}

	static final public void template_argument() throws ParseException {
		if (jj_2_89(3)) {
			type_name();
		}
		else if (jj_2_90(1)) {
			shift_expression();
		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
	}

	static final public void statement_list() throws ParseException {
		label_25: while (true) {
			statement();
			if (jj_2_91(2147483647)) {
				;
			}
			else {
				break label_25;
			}
		}
	}

	static final public void statement() throws ParseException {
		if (jj_2_92(2147483647)) {
			declaration();
		}
		else if (jj_2_93(2147483647)) {
			expression();
			jj_consume_token(SEMICOLON);
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LCURLYBRACE :
					compound_statement();
					break;
				case IF :
				case SWITCH :
					selection_statement();
					break;
				case BREAK :
				case CONTINUE :
				case GOTO :
				case RETURN :
					jump_statement();
					break;
				case SEMICOLON :
					jj_consume_token(SEMICOLON);
					break;
				case TRY :
					try_block();
					break;
				case THROW :
					throw_statement();
					break;
				default :
					jj_la1[84] = jj_gen;
					if (jj_2_94(2)) {
						labeled_statement();
					}
					else {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case DO :
							case FOR :
							case WHILE :
								iteration_statement();
								break;
							default :
								jj_la1[85] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
						}
					}
			}
		}
	}

	static final public void labeled_statement() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ID :
				jj_consume_token(ID);
				jj_consume_token(COLON);
				statement();
				break;
			case CASE :
				jj_consume_token(CASE);
				constant_expression();
				jj_consume_token(COLON);
				statement();
				break;
			case _DEFAULT :
				jj_consume_token(_DEFAULT);
				jj_consume_token(COLON);
				statement();
				break;
			default :
				jj_la1[86] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void compound_statement() throws ParseException {
		jj_consume_token(LCURLYBRACE);
		SymtabManager.OpenScope(null, false);
		if (jj_2_95(1)) {
			statement_list();
		}
		else {
			;
		}
		SymtabManager.CloseScope();
		jj_consume_token(RCURLYBRACE);
	}

	static final public void selection_statement() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case IF :
				jj_consume_token(IF);
				jj_consume_token(LPARENTHESIS);
				expression();
				jj_consume_token(RPARENTHESIS);
				statement();
				if (jj_2_96(2)) {
					jj_consume_token(ELSE);
					statement();
				}
				else {
					;
				}
				break;
			case SWITCH :
				jj_consume_token(SWITCH);
				jj_consume_token(LPARENTHESIS);
				expression();
				jj_consume_token(RPARENTHESIS);
				statement();
				break;
			default :
				jj_la1[87] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void iteration_statement() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case WHILE :
				jj_consume_token(WHILE);
				jj_consume_token(LPARENTHESIS);
				expression();
				jj_consume_token(RPARENTHESIS);
				statement();
				break;
			case DO :
				jj_consume_token(DO);
				statement();
				jj_consume_token(WHILE);
				jj_consume_token(LPARENTHESIS);
				expression();
				jj_consume_token(RPARENTHESIS);
				jj_consume_token(SEMICOLON);
				break;
			case FOR :
				jj_consume_token(FOR);
				jj_consume_token(LPARENTHESIS);
				if (jj_2_97(3)) {
					declaration();
				}
				else if (jj_2_98(1)) {
					expression();
					jj_consume_token(SEMICOLON);
				}
				else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case SEMICOLON :
							jj_consume_token(SEMICOLON);
							break;
						default :
							jj_la1[88] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
					}
				}
				if (jj_2_99(1)) {
					expression();
				}
				else {
					;
				}
				jj_consume_token(SEMICOLON);
				if (jj_2_100(1)) {
					expression();
				}
				else {
					;
				}
				jj_consume_token(RPARENTHESIS);
				statement();
				break;
			default :
				jj_la1[89] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void jump_statement() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case GOTO :
				jj_consume_token(GOTO);
				jj_consume_token(ID);
				jj_consume_token(SEMICOLON);
				break;
			case CONTINUE :
				jj_consume_token(CONTINUE);
				jj_consume_token(SEMICOLON);
				break;
			case BREAK :
				jj_consume_token(BREAK);
				jj_consume_token(SEMICOLON);
				break;
			case RETURN :
				jj_consume_token(RETURN);
				if (jj_2_101(1)) {
					expression();
				}
				else {
					;
				}
				jj_consume_token(SEMICOLON);
				break;
			default :
				jj_la1[90] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void try_block() throws ParseException {
		jj_consume_token(TRY);
		compound_statement();
		label_26: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case CATCH :
				case 129 :
					;
					break;
				default :
					jj_la1[91] = jj_gen;
					break label_26;
			}
			handler();
		}
	}

	static final public void handler() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case CATCH :
				jj_consume_token(CATCH);
				jj_consume_token(LPARENTHESIS);
				exception_declaration();
				jj_consume_token(RPARENTHESIS);
				compound_statement();
				break;
			case 129 :
				jj_consume_token(129);
				compound_statement();
				break;
			default :
				jj_la1[92] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void exception_declaration() throws ParseException {
		if (jj_2_102(1)) {
			parameter_declaration_list();
		}
		else {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case ELLIPSIS :
					jj_consume_token(ELLIPSIS);
					break;
				default :
					jj_la1[93] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
		}
	}

	static final public void throw_statement() throws ParseException {
		jj_consume_token(THROW);
		if (jj_2_103(1)) {
			assignment_expression();
		}
		else {
			;
		}
		jj_consume_token(SEMICOLON);
	}

	static final public void expression() throws ParseException {
		assignment_expression();
		label_27: while (true) {
			if (jj_2_104(2)) {
				;
			}
			else {
				break label_27;
			}
			jj_consume_token(COMMA);
			assignment_expression();
		}
	}

	static final public void assignment_expression() throws ParseException {
		conditional_expression();
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ASSIGNEQUAL :
			case TIMESEQUAL :
			case DIVIDEEQUAL :
			case MODEQUAL :
			case PLUSEQUAL :
			case MINUSEQUAL :
			case SHIFTLEFTEQUAL :
			case SHIFTRIGHTEQUAL :
			case BITWISEANDEQUAL :
			case BITWISEXOREQUAL :
			case BITWISEOREQUAL :
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case ASSIGNEQUAL :
						jj_consume_token(ASSIGNEQUAL);
						break;
					case TIMESEQUAL :
						jj_consume_token(TIMESEQUAL);
						break;
					case DIVIDEEQUAL :
						jj_consume_token(DIVIDEEQUAL);
						break;
					case MODEQUAL :
						jj_consume_token(MODEQUAL);
						break;
					case PLUSEQUAL :
						jj_consume_token(PLUSEQUAL);
						break;
					case MINUSEQUAL :
						jj_consume_token(MINUSEQUAL);
						break;
					case SHIFTLEFTEQUAL :
						jj_consume_token(SHIFTLEFTEQUAL);
						break;
					case SHIFTRIGHTEQUAL :
						jj_consume_token(SHIFTRIGHTEQUAL);
						break;
					case BITWISEANDEQUAL :
						jj_consume_token(BITWISEANDEQUAL);
						break;
					case BITWISEXOREQUAL :
						jj_consume_token(BITWISEXOREQUAL);
						break;
					case BITWISEOREQUAL :
						jj_consume_token(BITWISEOREQUAL);
						break;
					default :
						jj_la1[94] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
				}
				assignment_expression();
				break;
			default :
				jj_la1[95] = jj_gen;
				;
		}
	}

	static final public void conditional_expression() throws ParseException {
		logical_or_expression();
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case QUESTIONMARK :
				jj_consume_token(QUESTIONMARK);
				conditional_expression();
				jj_consume_token(COLON);
				conditional_expression();
				break;
			default :
				jj_la1[96] = jj_gen;
				;
		}
	}

	static final public void constant_expression() throws ParseException {
		conditional_expression();
	}

	static final public void logical_or_expression() throws ParseException {
		logical_and_expression();
		label_28: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case OR :
					;
					break;
				default :
					jj_la1[97] = jj_gen;
					break label_28;
			}
			jj_consume_token(OR);
			logical_and_expression();
		}
	}

	static final public void logical_and_expression() throws ParseException {
		inclusive_or_expression();
		label_29: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case AND :
					;
					break;
				default :
					jj_la1[98] = jj_gen;
					break label_29;
			}
			jj_consume_token(AND);
			inclusive_or_expression();
		}
	}

	static final public void inclusive_or_expression() throws ParseException {
		exclusive_or_expression();
		label_30: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case BITWISEOR :
					;
					break;
				default :
					jj_la1[99] = jj_gen;
					break label_30;
			}
			jj_consume_token(BITWISEOR);
			exclusive_or_expression();
		}
	}

	static final public void exclusive_or_expression() throws ParseException {
		and_expression();
		label_31: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case BITWISEXOR :
					;
					break;
				default :
					jj_la1[100] = jj_gen;
					break label_31;
			}
			jj_consume_token(BITWISEXOR);
			and_expression();
		}
	}

	static final public void and_expression() throws ParseException {
		equality_expression();
		label_32: while (true) {
			if (jj_2_105(2)) {
				;
			}
			else {
				break label_32;
			}
			jj_consume_token(AMPERSAND);
			equality_expression();
		}
	}

	static final public void equality_expression() throws ParseException {
		relational_expression();
		label_33: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case EQUAL :
				case NOTEQUAL :
					;
					break;
				default :
					jj_la1[101] = jj_gen;
					break label_33;
			}
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case NOTEQUAL :
					jj_consume_token(NOTEQUAL);
					break;
				case EQUAL :
					jj_consume_token(EQUAL);
					break;
				default :
					jj_la1[102] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
			relational_expression();
		}
	}

	static final public void relational_expression() throws ParseException {
		shift_expression();
		label_34: while (true) {
			if (jj_2_106(2)) {
				;
			}
			else {
				break label_34;
			}
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case LESSTHAN :
					jj_consume_token(LESSTHAN);
					break;
				case GREATERTHAN :
					jj_consume_token(GREATERTHAN);
					break;
				case LESSTHANOREQUALTO :
					jj_consume_token(LESSTHANOREQUALTO);
					break;
				case GREATERTHANOREQUALTO :
					jj_consume_token(GREATERTHANOREQUALTO);
					break;
				default :
					jj_la1[103] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
			shift_expression();
		}
	}

	static final public void shift_expression() throws ParseException {
		additive_expression();
		label_35: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SHIFTLEFT :
				case SHIFTRIGHT :
					;
					break;
				default :
					jj_la1[104] = jj_gen;
					break label_35;
			}
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case SHIFTLEFT :
					jj_consume_token(SHIFTLEFT);
					break;
				case SHIFTRIGHT :
					jj_consume_token(SHIFTRIGHT);
					break;
				default :
					jj_la1[105] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
			additive_expression();
		}
	}

	static final public void additive_expression() throws ParseException {
		multiplicative_expression();
		label_36: while (true) {
			if (jj_2_107(2)) {
				;
			}
			else {
				break label_36;
			}
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case PLUS :
					jj_consume_token(PLUS);
					break;
				case MINUS :
					jj_consume_token(MINUS);
					break;
				default :
					jj_la1[106] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
			multiplicative_expression();
		}
	}

	static final public void multiplicative_expression() throws ParseException {
		pm_expression();
		label_37: while (true) {
			if (jj_2_108(2)) {
				;
			}
			else {
				break label_37;
			}
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case STAR :
					jj_consume_token(STAR);
					break;
				case DIVIDE :
					jj_consume_token(DIVIDE);
					break;
				case MOD :
					jj_consume_token(MOD);
					break;
				default :
					jj_la1[107] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
			pm_expression();
		}
	}

	static final public void pm_expression() throws ParseException {
		cast_expression();
		label_38: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DOTSTAR :
				case ARROWSTAR :
					;
					break;
				default :
					jj_la1[108] = jj_gen;
					break label_38;
			}
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case DOTSTAR :
					jj_consume_token(DOTSTAR);
					break;
				case ARROWSTAR :
					jj_consume_token(ARROWSTAR);
					break;
				default :
					jj_la1[109] = jj_gen;
					jj_consume_token(-1);
					throw new ParseException();
			}
			cast_expression();
		}
	}

	static final public void cast_expression() throws ParseException {
		if (jj_2_109(2147483647)) {
			jj_consume_token(LPARENTHESIS);
			type_name();
			jj_consume_token(RPARENTHESIS);
			cast_expression();
		}
		else if (jj_2_110(1)) {
			unary_expression();
		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
	}

	static final public void unary_expression() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case PLUSPLUS :
				jj_consume_token(PLUSPLUS);
				unary_expression();
				break;
			case MINUSMINUS :
				jj_consume_token(MINUSMINUS);
				unary_expression();
				break;
			default :
				jj_la1[110] = jj_gen;
				if (jj_2_113(3)) {
					unary_operator();
					cast_expression();
				}
				else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case SIZEOF :
							jj_consume_token(SIZEOF);
							if (jj_2_111(2147483647)) {
								jj_consume_token(LPARENTHESIS);
								type_name();
								jj_consume_token(RPARENTHESIS);
							}
							else if (jj_2_112(1)) {
								unary_expression();
							}
							else {
								jj_consume_token(-1);
								throw new ParseException();
							}
							break;
						default :
							jj_la1[111] = jj_gen;
							if (jj_2_114(1)) {
								postfix_expression();
							}
							else {
								jj_consume_token(-1);
								throw new ParseException();
							}
					}
				}
		}
	}

	static final public void new_expression() throws ParseException {
		if (jj_2_115(2147483647)) {
			jj_consume_token(SCOPE);
		}
		else {
			;
		}
		jj_consume_token(NEW);
		if (jj_2_119(2147483647)) {
			jj_consume_token(LPARENTHESIS);
			type_name();
			jj_consume_token(RPARENTHESIS);
		}
		else if (jj_2_120(1)) {
			if (jj_2_116(2147483647)) {
				jj_consume_token(LPARENTHESIS);
				expression_list();
				jj_consume_token(RPARENTHESIS);
			}
			else {
				;
			}
			if (jj_2_117(2147483647)) {
				jj_consume_token(LPARENTHESIS);
				type_name();
				jj_consume_token(RPARENTHESIS);
			}
			else if (jj_2_118(2147483647)) {
				new_type_id();
			}
			else {
				jj_consume_token(-1);
				throw new ParseException();
			}
		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
		if (jj_2_121(2147483647)) {
			new_initializer();
		}
		else {
			;
		}
	}

	static final public void new_type_id() throws ParseException {
		declaration_specifiers();
		if (jj_2_122(2147483647)) {
			new_declarator();
		}
		else {
			;
		}
	}

	static final public void new_declarator() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LSQUAREBRACKET :
				direct_new_declarator();
				break;
			case SCOPE :
			case AMPERSAND :
			case STAR :
			case ID :
				ptr_operator();
				cv_qualifier_seq();
				if (jj_2_123(2)) {
					new_declarator();
				}
				else {
					;
				}
				break;
			default :
				jj_la1[112] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void direct_new_declarator() throws ParseException {
		label_39: while (true) {
			jj_consume_token(LSQUAREBRACKET);
			expression();
			jj_consume_token(RSQUAREBRACKET);
			if (jj_2_124(2)) {
				;
			}
			else {
				break label_39;
			}
		}
	}

	static final public void new_initializer() throws ParseException {
		jj_consume_token(LPARENTHESIS);
		if (jj_2_125(1)) {
			expression_list();
		}
		else {
			;
		}
		jj_consume_token(RPARENTHESIS);
	}

	static final public void delete_expression() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case SCOPE :
				jj_consume_token(SCOPE);
				break;
			default :
				jj_la1[113] = jj_gen;
				;
		}
		jj_consume_token(DELETE);
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case LSQUAREBRACKET :
				jj_consume_token(LSQUAREBRACKET);
				jj_consume_token(RSQUAREBRACKET);
				break;
			default :
				jj_la1[114] = jj_gen;
				;
		}
		cast_expression();
	}

	static final public void unary_operator() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case AMPERSAND :
				jj_consume_token(AMPERSAND);
				break;
			case STAR :
				jj_consume_token(STAR);
				break;
			case PLUS :
				jj_consume_token(PLUS);
				break;
			case MINUS :
				jj_consume_token(MINUS);
				break;
			case TILDE :
				jj_consume_token(TILDE);
				break;
			case NOT :
				jj_consume_token(NOT);
				break;
			default :
				jj_la1[115] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void postfix_expression() throws ParseException {
		if (jj_2_129(3)) {
			primary_expression();
			label_40: while (true) {
				if (jj_2_126(2)) {
					;
				}
				else {
					break label_40;
				}
				switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
					case LSQUAREBRACKET :
						jj_consume_token(LSQUAREBRACKET);
						expression();
						jj_consume_token(RSQUAREBRACKET);
						break;
					case LPARENTHESIS :
						jj_consume_token(LPARENTHESIS);
						if (jj_2_127(1)) {
							expression_list();
						}
						else {
							;
						}
						jj_consume_token(RPARENTHESIS);
						break;
					case DOT :
						jj_consume_token(DOT);
						id_expression();
						break;
					case POINTERTO :
						jj_consume_token(POINTERTO);
						id_expression();
						break;
					case PLUSPLUS :
						jj_consume_token(PLUSPLUS);
						break;
					case MINUSMINUS :
						jj_consume_token(MINUSMINUS);
						break;
					default :
						jj_la1[116] = jj_gen;
						jj_consume_token(-1);
						throw new ParseException();
				}
			}
		}
		else if (jj_2_130(1)) {
			simple_type_specifier();
			jj_consume_token(LPARENTHESIS);
			if (jj_2_128(1)) {
				expression_list();
			}
			else {
				;
			}
			jj_consume_token(RPARENTHESIS);
		}
		else {
			jj_consume_token(-1);
			throw new ParseException();
		}
	}

	static final public void id_expression() throws ParseException {
		if (jj_2_131(2147483647)) {
			scope_override();
		}
		else {
			;
		}
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case ID :
				jj_consume_token(ID);
				break;
			case OPERATOR :
				jj_consume_token(OPERATOR);
				optor();
				break;
			case TILDE :
				jj_consume_token(TILDE);
				jj_consume_token(ID);
				break;
			default :
				jj_la1[117] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	static final public void primary_expression() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case THIS :
				jj_consume_token(THIS);
				break;
			case STRING :
				label_41: while (true) {
					jj_consume_token(STRING);
					if (jj_2_132(2)) {
						;
					}
					else {
						break label_41;
					}
				}
				break;
			case LPARENTHESIS :
				jj_consume_token(LPARENTHESIS);
				expression();
				jj_consume_token(RPARENTHESIS);
				break;
			default :
				jj_la1[118] = jj_gen;
				if (jj_2_133(2147483647)) {
					new_expression();
				}
				else if (jj_2_134(2147483647)) {
					delete_expression();
				}
				else {
					switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
						case SCOPE :
						case TILDE :
						case OPERATOR :
						case ID :
							id_expression();
							break;
						case TRUETOK :
						case FALSETOK :
						case OCTALINT :
						case OCTALLONG :
						case UNSIGNED_OCTALINT :
						case UNSIGNED_OCTALLONG :
						case DECIMALINT :
						case DECIMALLONG :
						case UNSIGNED_DECIMALINT :
						case UNSIGNED_DECIMALLONG :
						case HEXADECIMALINT :
						case HEXADECIMALLONG :
						case UNSIGNED_HEXADECIMALINT :
						case UNSIGNED_HEXADECIMALLONG :
						case FLOATONE :
						case FLOATTWO :
						case CHARACTER :
							constant();
							break;
						default :
							jj_la1[119] = jj_gen;
							jj_consume_token(-1);
							throw new ParseException();
					}
				}
		}
	}

	static final public void expression_list() throws ParseException {
		assignment_expression();
		label_42: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[120] = jj_gen;
					break label_42;
			}
			jj_consume_token(COMMA);
			assignment_expression();
		}
	}

	static final public void constant() throws ParseException {
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case OCTALINT :
				jj_consume_token(OCTALINT);
				break;
			case OCTALLONG :
				jj_consume_token(OCTALLONG);
				break;
			case DECIMALINT :
				jj_consume_token(DECIMALINT);
				break;
			case DECIMALLONG :
				jj_consume_token(DECIMALLONG);
				break;
			case HEXADECIMALINT :
				jj_consume_token(HEXADECIMALINT);
				break;
			case HEXADECIMALLONG :
				jj_consume_token(HEXADECIMALLONG);
				break;
			case UNSIGNED_OCTALINT :
				jj_consume_token(UNSIGNED_OCTALINT);
				break;
			case UNSIGNED_OCTALLONG :
				jj_consume_token(UNSIGNED_OCTALLONG);
				break;
			case UNSIGNED_DECIMALINT :
				jj_consume_token(UNSIGNED_DECIMALINT);
				break;
			case UNSIGNED_DECIMALLONG :
				jj_consume_token(UNSIGNED_DECIMALLONG);
				break;
			case UNSIGNED_HEXADECIMALINT :
				jj_consume_token(UNSIGNED_HEXADECIMALINT);
				break;
			case UNSIGNED_HEXADECIMALLONG :
				jj_consume_token(UNSIGNED_HEXADECIMALLONG);
				break;
			case CHARACTER :
				jj_consume_token(CHARACTER);
				break;
			case FLOATONE :
				jj_consume_token(FLOATONE);
				break;
			case FLOATTWO :
				jj_consume_token(FLOATTWO);
				break;
			case TRUETOK :
				jj_consume_token(TRUETOK);
				break;
			case FALSETOK :
				jj_consume_token(FALSETOK);
				break;
			default :
				jj_la1[121] = jj_gen;
				jj_consume_token(-1);
				throw new ParseException();
		}
	}

	/* 2004/08/03: Sbastien Robidoux */
	/* Modif void to String           */
	static final public String optor() throws ParseException {
		/* 2004/07/03: Sbastien Robidoux */
		String operateur = "";
		switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
			case NEW :
				jj_consume_token(NEW);
				if (jj_2_135(2)) {
					jj_consume_token(LSQUAREBRACKET);
					jj_consume_token(RSQUAREBRACKET);
				}
				else {
					;
				}
				break;
			case DELETE :
				jj_consume_token(DELETE);
				if (jj_2_136(2)) {
					jj_consume_token(LSQUAREBRACKET);
					jj_consume_token(RSQUAREBRACKET);
				}
				else {
					;
				}
				break;
			case PLUS :
				jj_consume_token(PLUS);
				operateur = "+";
				break;
			case MINUS :
				jj_consume_token(MINUS);
				operateur = "-";
				break;
			case STAR :
				jj_consume_token(STAR);
				operateur = "*";
				break;
			case DIVIDE :
				jj_consume_token(DIVIDE);
				operateur = "/";
				break;
			case MOD :
				jj_consume_token(MOD);
				operateur = "%";
				break;
			case BITWISEXOR :
				jj_consume_token(BITWISEXOR);
				operateur = "^";
				break;
			case AMPERSAND :
				jj_consume_token(AMPERSAND);
				operateur = "&";
				break;
			case BITWISEOR :
				jj_consume_token(BITWISEOR);
				operateur = "|";
				break;
			case TILDE :
				jj_consume_token(TILDE);
				operateur = "~";
				break;
			case NOT :
				jj_consume_token(NOT);
				operateur = "!";
				break;
			case ASSIGNEQUAL :
				jj_consume_token(ASSIGNEQUAL);
				operateur = "=";
				break;
			case LESSTHAN :
				jj_consume_token(LESSTHAN);
				operateur = "<";
				break;
			case GREATERTHAN :
				jj_consume_token(GREATERTHAN);
				operateur = ">";
				break;
			case PLUSEQUAL :
				jj_consume_token(PLUSEQUAL);
				operateur = "+=";
				break;
			case MINUSEQUAL :
				jj_consume_token(MINUSEQUAL);
				operateur = "-=";
				break;
			case TIMESEQUAL :
				jj_consume_token(TIMESEQUAL);
				operateur = "*=";
				break;
			case DIVIDEEQUAL :
				jj_consume_token(DIVIDEEQUAL);
				operateur = "/=";
				break;
			case MODEQUAL :
				jj_consume_token(MODEQUAL);
				operateur = "%=";
				break;
			case BITWISEXOREQUAL :
				jj_consume_token(BITWISEXOREQUAL);
				operateur = "^=";
				break;
			case BITWISEANDEQUAL :
				jj_consume_token(BITWISEANDEQUAL);
				operateur = "&=";
				break;
			case BITWISEOREQUAL :
				jj_consume_token(BITWISEOREQUAL);
				operateur = "|=";
				break;
			case SHIFTLEFT :
				jj_consume_token(SHIFTLEFT);
				operateur = "<<";
				break;
			case SHIFTRIGHT :
				jj_consume_token(SHIFTRIGHT);
				operateur = ">>";
				break;
			case SHIFTRIGHTEQUAL :
				jj_consume_token(SHIFTRIGHTEQUAL);
				operateur = ">>=";
				break;
			case SHIFTLEFTEQUAL :
				jj_consume_token(SHIFTLEFTEQUAL);
				operateur = "<<=";
				break;
			case EQUAL :
				jj_consume_token(EQUAL);
				operateur = "==";
				break;
			case NOTEQUAL :
				jj_consume_token(NOTEQUAL);
				operateur = "!=";
				break;
			case LESSTHANOREQUALTO :
				jj_consume_token(LESSTHANOREQUALTO);
				operateur = "<=";
				break;
			case GREATERTHANOREQUALTO :
				jj_consume_token(GREATERTHANOREQUALTO);
				operateur = ">=";
				break;
			case AND :
				jj_consume_token(AND);
				operateur = "&&";
				break;
			case OR :
				jj_consume_token(OR);
				operateur = "||";
				break;
			case PLUSPLUS :
				jj_consume_token(PLUSPLUS);
				operateur = "++";
				break;
			case MINUSMINUS :
				jj_consume_token(MINUSMINUS);
				operateur = "--";
				break;
			case COMMA :
				jj_consume_token(COMMA);
				operateur = ",";
				break;
			case ARROWSTAR :
				jj_consume_token(ARROWSTAR);
				operateur = "->*";
				break;
			case POINTERTO :
				jj_consume_token(POINTERTO);
				operateur = "->";
				break;
			case LPARENTHESIS :
				jj_consume_token(LPARENTHESIS);
				jj_consume_token(RPARENTHESIS);
				break;
			case LSQUAREBRACKET :
				jj_consume_token(LSQUAREBRACKET);
				jj_consume_token(RSQUAREBRACKET);
				break;
			default :
				jj_la1[123] = jj_gen;
				if (jj_2_138(1)) {
					declaration_specifiers();
					if (jj_2_137(2)) {
						switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
							case STAR :
								jj_consume_token(STAR);
								break;
							case AMPERSAND :
								jj_consume_token(AMPERSAND);
								break;
							default :
								jj_la1[122] = jj_gen;
								jj_consume_token(-1);
								throw new ParseException();
						}
					}
					else {
						;
					}
				}
				else {
					jj_consume_token(-1);
					throw new ParseException();
				}
		}
		{
			if (true)
				return operateur;
		}
		throw new Error("Missing return statement in function");
	}

	static final public void exception_spec() throws ParseException {
		jj_consume_token(THROW);
		jj_consume_token(LPARENTHESIS);
		exception_list();
		jj_consume_token(RPARENTHESIS);
	}

	static final public void exception_list() throws ParseException {
		type_name();
		label_43: while (true) {
			switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
				case COMMA :
					;
					break;
				default :
					jj_la1[124] = jj_gen;
					break label_43;
			}
			jj_consume_token(COMMA);
			type_name();
		}
	}

	static final private boolean jj_2_1(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_1();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(0, xla);
		}
	}

	static final private boolean jj_2_2(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_2();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(1, xla);
		}
	}

	static final private boolean jj_2_3(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_3();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(2, xla);
		}
	}

	static final private boolean jj_2_4(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_4();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(3, xla);
		}
	}

	static final private boolean jj_2_5(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_5();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(4, xla);
		}
	}

	static final private boolean jj_2_6(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_6();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(5, xla);
		}
	}

	static final private boolean jj_2_7(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_7();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(6, xla);
		}
	}

	static final private boolean jj_2_8(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_8();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(7, xla);
		}
	}

	static final private boolean jj_2_9(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_9();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(8, xla);
		}
	}

	static final private boolean jj_2_10(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_10();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(9, xla);
		}
	}

	static final private boolean jj_2_11(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_11();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(10, xla);
		}
	}

	static final private boolean jj_2_12(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_12();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(11, xla);
		}
	}

	static final private boolean jj_2_13(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_13();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(12, xla);
		}
	}

	static final private boolean jj_2_14(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_14();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(13, xla);
		}
	}

	static final private boolean jj_2_15(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_15();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(14, xla);
		}
	}

	static final private boolean jj_2_16(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_16();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(15, xla);
		}
	}

	static final private boolean jj_2_17(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_17();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(16, xla);
		}
	}

	static final private boolean jj_2_18(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_18();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(17, xla);
		}
	}

	static final private boolean jj_2_19(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_19();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(18, xla);
		}
	}

	static final private boolean jj_2_20(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_20();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(19, xla);
		}
	}

	static final private boolean jj_2_21(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_21();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(20, xla);
		}
	}

	static final private boolean jj_2_22(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_22();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(21, xla);
		}
	}

	static final private boolean jj_2_23(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_23();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(22, xla);
		}
	}

	static final private boolean jj_2_24(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_24();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(23, xla);
		}
	}

	static final private boolean jj_2_25(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_25();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(24, xla);
		}
	}

	static final private boolean jj_2_26(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_26();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(25, xla);
		}
	}

	static final private boolean jj_2_27(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_27();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(26, xla);
		}
	}

	static final private boolean jj_2_28(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_28();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(27, xla);
		}
	}

	static final private boolean jj_2_29(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_29();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(28, xla);
		}
	}

	static final private boolean jj_2_30(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_30();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(29, xla);
		}
	}

	static final private boolean jj_2_31(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_31();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(30, xla);
		}
	}

	static final private boolean jj_2_32(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_32();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(31, xla);
		}
	}

	static final private boolean jj_2_33(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_33();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(32, xla);
		}
	}

	static final private boolean jj_2_34(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_34();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(33, xla);
		}
	}

	static final private boolean jj_2_35(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_35();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(34, xla);
		}
	}

	static final private boolean jj_2_36(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_36();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(35, xla);
		}
	}

	static final private boolean jj_2_37(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_37();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(36, xla);
		}
	}

	static final private boolean jj_2_38(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_38();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(37, xla);
		}
	}

	static final private boolean jj_2_39(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_39();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(38, xla);
		}
	}

	static final private boolean jj_2_40(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_40();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(39, xla);
		}
	}

	static final private boolean jj_2_41(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_41();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(40, xla);
		}
	}

	static final private boolean jj_2_42(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_42();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(41, xla);
		}
	}

	static final private boolean jj_2_43(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_43();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(42, xla);
		}
	}

	static final private boolean jj_2_44(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_44();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(43, xla);
		}
	}

	static final private boolean jj_2_45(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_45();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(44, xla);
		}
	}

	static final private boolean jj_2_46(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_46();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(45, xla);
		}
	}

	static final private boolean jj_2_47(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_47();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(46, xla);
		}
	}

	static final private boolean jj_2_48(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_48();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(47, xla);
		}
	}

	static final private boolean jj_2_49(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_49();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(48, xla);
		}
	}

	static final private boolean jj_2_50(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_50();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(49, xla);
		}
	}

	static final private boolean jj_2_51(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_51();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(50, xla);
		}
	}

	static final private boolean jj_2_52(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_52();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(51, xla);
		}
	}

	static final private boolean jj_2_53(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_53();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(52, xla);
		}
	}

	static final private boolean jj_2_54(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_54();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(53, xla);
		}
	}

	static final private boolean jj_2_55(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_55();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(54, xla);
		}
	}

	static final private boolean jj_2_56(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_56();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(55, xla);
		}
	}

	static final private boolean jj_2_57(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_57();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(56, xla);
		}
	}

	static final private boolean jj_2_58(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_58();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(57, xla);
		}
	}

	static final private boolean jj_2_59(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_59();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(58, xla);
		}
	}

	static final private boolean jj_2_60(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_60();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(59, xla);
		}
	}

	static final private boolean jj_2_61(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_61();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(60, xla);
		}
	}

	static final private boolean jj_2_62(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_62();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(61, xla);
		}
	}

	static final private boolean jj_2_63(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_63();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(62, xla);
		}
	}

	static final private boolean jj_2_64(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_64();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(63, xla);
		}
	}

	static final private boolean jj_2_65(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_65();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(64, xla);
		}
	}

	static final private boolean jj_2_66(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_66();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(65, xla);
		}
	}

	static final private boolean jj_2_67(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_67();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(66, xla);
		}
	}

	static final private boolean jj_2_68(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_68();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(67, xla);
		}
	}

	static final private boolean jj_2_69(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_69();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(68, xla);
		}
	}

	static final private boolean jj_2_70(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_70();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(69, xla);
		}
	}

	static final private boolean jj_2_71(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_71();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(70, xla);
		}
	}

	static final private boolean jj_2_72(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_72();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(71, xla);
		}
	}

	static final private boolean jj_2_73(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_73();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(72, xla);
		}
	}

	static final private boolean jj_2_74(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_74();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(73, xla);
		}
	}

	static final private boolean jj_2_75(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_75();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(74, xla);
		}
	}

	static final private boolean jj_2_76(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_76();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(75, xla);
		}
	}

	static final private boolean jj_2_77(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_77();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(76, xla);
		}
	}

	static final private boolean jj_2_78(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_78();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(77, xla);
		}
	}

	static final private boolean jj_2_79(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_79();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(78, xla);
		}
	}

	static final private boolean jj_2_80(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_80();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(79, xla);
		}
	}

	static final private boolean jj_2_81(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_81();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(80, xla);
		}
	}

	static final private boolean jj_2_82(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_82();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(81, xla);
		}
	}

	static final private boolean jj_2_83(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_83();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(82, xla);
		}
	}

	static final private boolean jj_2_84(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_84();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(83, xla);
		}
	}

	static final private boolean jj_2_85(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_85();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(84, xla);
		}
	}

	static final private boolean jj_2_86(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_86();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(85, xla);
		}
	}

	static final private boolean jj_2_87(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_87();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(86, xla);
		}
	}

	static final private boolean jj_2_88(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_88();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(87, xla);
		}
	}

	static final private boolean jj_2_89(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_89();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(88, xla);
		}
	}

	static final private boolean jj_2_90(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_90();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(89, xla);
		}
	}

	static final private boolean jj_2_91(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_91();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(90, xla);
		}
	}

	static final private boolean jj_2_92(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_92();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(91, xla);
		}
	}

	static final private boolean jj_2_93(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_93();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(92, xla);
		}
	}

	static final private boolean jj_2_94(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_94();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(93, xla);
		}
	}

	static final private boolean jj_2_95(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_95();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(94, xla);
		}
	}

	static final private boolean jj_2_96(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_96();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(95, xla);
		}
	}

	static final private boolean jj_2_97(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_97();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(96, xla);
		}
	}

	static final private boolean jj_2_98(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_98();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(97, xla);
		}
	}

	static final private boolean jj_2_99(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_99();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(98, xla);
		}
	}

	static final private boolean jj_2_100(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_100();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(99, xla);
		}
	}

	static final private boolean jj_2_101(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_101();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(100, xla);
		}
	}

	static final private boolean jj_2_102(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_102();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(101, xla);
		}
	}

	static final private boolean jj_2_103(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_103();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(102, xla);
		}
	}

	static final private boolean jj_2_104(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_104();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(103, xla);
		}
	}

	static final private boolean jj_2_105(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_105();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(104, xla);
		}
	}

	static final private boolean jj_2_106(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_106();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(105, xla);
		}
	}

	static final private boolean jj_2_107(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_107();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(106, xla);
		}
	}

	static final private boolean jj_2_108(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_108();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(107, xla);
		}
	}

	static final private boolean jj_2_109(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_109();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(108, xla);
		}
	}

	static final private boolean jj_2_110(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_110();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(109, xla);
		}
	}

	static final private boolean jj_2_111(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_111();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(110, xla);
		}
	}

	static final private boolean jj_2_112(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_112();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(111, xla);
		}
	}

	static final private boolean jj_2_113(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_113();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(112, xla);
		}
	}

	static final private boolean jj_2_114(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_114();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(113, xla);
		}
	}

	static final private boolean jj_2_115(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_115();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(114, xla);
		}
	}

	static final private boolean jj_2_116(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_116();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(115, xla);
		}
	}

	static final private boolean jj_2_117(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_117();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(116, xla);
		}
	}

	static final private boolean jj_2_118(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_118();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(117, xla);
		}
	}

	static final private boolean jj_2_119(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_119();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(118, xla);
		}
	}

	static final private boolean jj_2_120(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_120();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(119, xla);
		}
	}

	static final private boolean jj_2_121(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_121();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(120, xla);
		}
	}

	static final private boolean jj_2_122(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_122();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(121, xla);
		}
	}

	static final private boolean jj_2_123(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_123();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(122, xla);
		}
	}

	static final private boolean jj_2_124(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_124();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(123, xla);
		}
	}

	static final private boolean jj_2_125(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_125();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(124, xla);
		}
	}

	static final private boolean jj_2_126(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_126();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(125, xla);
		}
	}

	static final private boolean jj_2_127(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_127();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(126, xla);
		}
	}

	static final private boolean jj_2_128(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_128();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(127, xla);
		}
	}

	static final private boolean jj_2_129(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_129();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(128, xla);
		}
	}

	static final private boolean jj_2_130(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_130();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(129, xla);
		}
	}

	static final private boolean jj_2_131(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_131();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(130, xla);
		}
	}

	static final private boolean jj_2_132(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_132();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(131, xla);
		}
	}

	static final private boolean jj_2_133(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_133();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(132, xla);
		}
	}

	static final private boolean jj_2_134(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_134();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(133, xla);
		}
	}

	static final private boolean jj_2_135(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_135();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(134, xla);
		}
	}

	static final private boolean jj_2_136(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_136();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(135, xla);
		}
	}

	static final private boolean jj_2_137(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_137();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(136, xla);
		}
	}

	static final private boolean jj_2_138(int xla) {
		jj_la = xla;
		jj_lastpos = jj_scanpos = token;
		try {
			return !jj_3_138();
		}
		catch (LookaheadSuccess ls) {
			return true;
		}
		finally {
			jj_save(137, xla);
		}
	}

	static final private boolean jj_3_15() {
		if (jj_3R_56())
			return true;
		return false;
	}

	static final private boolean jj_3R_334() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_99())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_319() {
		if (jj_scan_token(LCURLYBRACE))
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_13()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(RCURLYBRACE))
			return true;
		xsp = jj_scanpos;
		if (jj_scan_token(22))
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_252() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_55())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_193() {
		if (jj_scan_token(SIZEOF))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_334()) {
			jj_scanpos = xsp;
			if (jj_3_112())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_220() {
		if (jj_scan_token(EXTERN))
			return true;
		if (jj_scan_token(STRING))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_319()) {
			jj_scanpos = xsp;
			if (jj_3_15())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_251() {
		if (jj_scan_token(LCURLYBRACE))
			return true;
		if (jj_3R_82())
			return true;
		if (jj_scan_token(RCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3_113() {
		if (jj_3R_109())
			return true;
		if (jj_3R_110())
			return true;
		return false;
	}

	static final private boolean jj_3R_377() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(61)) {
			jj_scanpos = xsp;
			if (jj_scan_token(62))
				return true;
		}
		if (jj_3R_110())
			return true;
		return false;
	}

	static final private boolean jj_3R_192() {
		if (jj_scan_token(MINUSMINUS))
			return true;
		if (jj_3R_108())
			return true;
		return false;
	}

	static final private boolean jj_3R_148() {
		if (jj_scan_token(ENUM))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_251()) {
			jj_scanpos = xsp;
			if (jj_3R_252())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_52() {
		if (jj_3R_73())
			return true;
		return false;
	}

	static final private boolean jj_3_109() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_99())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_108() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_191()) {
			jj_scanpos = xsp;
			if (jj_3R_192()) {
				jj_scanpos = xsp;
				if (jj_3_113()) {
					jj_scanpos = xsp;
					if (jj_3R_193()) {
						jj_scanpos = xsp;
						if (jj_3_114())
							return true;
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_191() {
		if (jj_scan_token(PLUSPLUS))
			return true;
		if (jj_3R_108())
			return true;
		return false;
	}

	static final private boolean jj_3R_375() {
		if (jj_3R_237())
			return true;
		return false;
	}

	static final private boolean jj_3_53() {
		if (jj_3R_80())
			return true;
		return false;
	}

	static final private boolean jj_3R_369() {
		if (jj_3R_88())
			return true;
		return false;
	}

	static final private boolean jj_3_54() {
		if (jj_3R_81())
			return true;
		return false;
	}

	static final private boolean jj_3_110() {
		if (jj_3R_108())
			return true;
		return false;
	}

	static final private boolean jj_3R_255() {
		if (jj_3R_139())
			return true;
		return false;
	}

	static final private boolean jj_3R_194() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_99())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		if (jj_3R_110())
			return true;
		return false;
	}

	static final private boolean jj_3R_110() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_194()) {
			jj_scanpos = xsp;
			if (jj_3_110())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_357() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(48)) {
			jj_scanpos = xsp;
			if (jj_scan_token(49))
				return true;
		}
		if (jj_3R_177())
			return true;
		return false;
	}

	static final private boolean jj_3R_211() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_255())
			jj_scanpos = xsp;
		if (jj_scan_token(OPERATOR))
			return true;
		if (jj_3R_49())
			return true;
		xsp = jj_scanpos;
		if (jj_3R_368())
			jj_scanpos = xsp;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		xsp = jj_scanpos;
		if (jj_3_53())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		xsp = jj_scanpos;
		if (jj_3_54())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_369())
			jj_scanpos = xsp;
		if (jj_3R_370())
			return true;
		return false;
	}

	static final private boolean jj_3R_370() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(22)) {
			jj_scanpos = xsp;
			if (jj_3R_375())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_383() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		if (jj_scan_token(OCTALINT))
			return true;
		return false;
	}

	static final private boolean jj_3R_107() {
		if (jj_3R_110())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_377()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_254() {
		if (jj_3R_57())
			return true;
		if (jj_3R_370())
			return true;
		return false;
	}

	static final private boolean jj_3R_379() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		if (jj_scan_token(OCTALINT))
			return true;
		return false;
	}

	static final private boolean jj_3R_210() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_12()) {
			jj_scanpos = xsp;
			if (jj_3R_254())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_12() {
		if (jj_3R_49())
			return true;
		if (jj_3R_57())
			return true;
		if (jj_3R_370())
			return true;
		return false;
	}

	static final private boolean jj_3_108() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(52)) {
			jj_scanpos = xsp;
			if (jj_scan_token(53)) {
				jj_scanpos = xsp;
				if (jj_scan_token(54))
					return true;
			}
		}
		if (jj_3R_107())
			return true;
		return false;
	}

	static final private boolean jj_3R_106() {
		if (jj_3R_107())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_108()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_371() {
		if (jj_3R_143())
			return true;
		return false;
	}

	static final private boolean jj_3_107() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(50)) {
			jj_scanpos = xsp;
			if (jj_scan_token(51))
				return true;
		}
		if (jj_3R_106())
			return true;
		return false;
	}

	static final private boolean jj_3R_177() {
		if (jj_3R_106())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_107()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_376() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(43)) {
			jj_scanpos = xsp;
			if (jj_scan_token(42))
				return true;
		}
		if (jj_3R_190())
			return true;
		return false;
	}

	static final private boolean jj_3R_47() {
		if (jj_3R_49())
			return true;
		return false;
	}

	static final private boolean jj_3_3() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_47())
			jj_scanpos = xsp;
		if (jj_3R_48())
			return true;
		return false;
	}

	static final private boolean jj_3_2() {
		if (jj_3R_45())
			return true;
		if (jj_3R_46())
			return true;
		return false;
	}

	static final private boolean jj_3R_100() {
		if (jj_3R_177())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_357()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_105() {
		if (jj_scan_token(AMPERSAND))
			return true;
		if (jj_3R_105())
			return true;
		return false;
	}

	static final private boolean jj_3_4() {
		if (jj_3R_49())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_371())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3_11() {
		if (jj_3R_56())
			return true;
		return false;
	}

	static final private boolean jj_3R_362() {
		if (jj_3R_210())
			return true;
		return false;
	}

	static final private boolean jj_3R_352() {
		if (jj_scan_token(BITWISEOR))
			return true;
		if (jj_3R_338())
			return true;
		return false;
	}

	static final private boolean jj_3R_55() {
		if (jj_3R_139())
			return true;
		return false;
	}

	static final private boolean jj_3_10() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_55())
			jj_scanpos = xsp;
		if (jj_scan_token(OPERATOR))
			return true;
		return false;
	}

	static final private boolean jj_3R_378() {
		if (jj_3R_92())
			return true;
		return false;
	}

	static final private boolean jj_3R_361() {
		if (jj_3R_209())
			return true;
		return false;
	}

	static final private boolean jj_3R_363() {
		if (jj_scan_token(BITWISEXOR))
			return true;
		if (jj_3R_348())
			return true;
		return false;
	}

	static final private boolean jj_3R_360() {
		if (jj_3R_143())
			return true;
		return false;
	}

	static final private boolean jj_3R_342() {
		if (jj_scan_token(AND))
			return true;
		if (jj_3R_327())
			return true;
		return false;
	}

	static final private boolean jj_3R_54() {
		if (jj_3R_49())
			return true;
		return false;
	}

	static final private boolean jj_3_9() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_54())
			jj_scanpos = xsp;
		if (jj_3R_48())
			return true;
		return false;
	}

	static final private boolean jj_3_106() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(44)) {
			jj_scanpos = xsp;
			if (jj_scan_token(45)) {
				jj_scanpos = xsp;
				if (jj_scan_token(46)) {
					jj_scanpos = xsp;
					if (jj_scan_token(47))
						return true;
				}
			}
		}
		if (jj_3R_100())
			return true;
		return false;
	}

	static final private boolean jj_3R_134() {
		if (jj_3R_136())
			return true;
		return false;
	}

	static final private boolean jj_3R_380() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_378())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_383())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_129() {
		if (jj_3R_136())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_361()) {
			jj_scanpos = xsp;
			if (jj_3R_362()) {
				jj_scanpos = xsp;
				if (jj_3_4())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_372() {
		if (jj_3R_378())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_379())
			jj_scanpos = xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_380()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_8() {
		if (jj_3R_45())
			return true;
		if (jj_3R_46())
			return true;
		return false;
	}

	static final private boolean jj_3R_190() {
		if (jj_3R_100())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_106()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_332() {
		if (jj_scan_token(OR))
			return true;
		if (jj_3R_306())
			return true;
		return false;
	}

	static final private boolean jj_3R_52() {
		if (jj_3R_136())
			return true;
		return false;
	}

	static final private boolean jj_3R_128() {
		if (jj_3R_211())
			return true;
		return false;
	}

	static final private boolean jj_3_7() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_52())
			jj_scanpos = xsp;
		if (jj_3R_45())
			return true;
		if (jj_3R_53())
			return true;
		if (jj_scan_token(LCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_105() {
		if (jj_3R_190())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_376()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_127() {
		if (jj_3R_210())
			return true;
		return false;
	}

	static final private boolean jj_3_6() {
		if (jj_scan_token(ENUM))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(130))
			jj_scanpos = xsp;
		if (jj_scan_token(LCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_348() {
		if (jj_3R_105())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_105()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_50() {
		if (jj_scan_token(ID))
			return true;
		return false;
	}

	static final private boolean jj_3R_50() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(102)) {
			jj_scanpos = xsp;
			if (jj_3R_134())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_5() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_50())
			jj_scanpos = xsp;
		if (jj_3R_51())
			return true;
		if (jj_scan_token(LCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_126() {
		if (jj_3R_209())
			return true;
		return false;
	}

	static final private boolean jj_3R_365() {
		if (jj_3R_372())
			return true;
		return false;
	}

	static final private boolean jj_3_49() {
		if (jj_3R_49())
			return true;
		return false;
	}

	static final private boolean jj_3R_338() {
		if (jj_3R_348())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_363()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_160() {
		if (jj_3R_229())
			return true;
		if (jj_scan_token(COLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_207() {
		if (jj_3R_136())
			return true;
		return false;
	}

	static final private boolean jj_3R_125() {
		if (jj_3R_208())
			return true;
		return false;
	}

	static final private boolean jj_3R_78() {
		if (jj_3R_49())
			return true;
		return false;
	}

	static final private boolean jj_3_48() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_78())
			jj_scanpos = xsp;
		if (jj_3R_48())
			return true;
		return false;
	}

	static final private boolean jj_3_51() {
		if (jj_3R_79())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_124() {
		if (jj_3R_148())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_360())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_327() {
		if (jj_3R_338())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_352()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_47() {
		if (jj_3R_45())
			return true;
		if (jj_3R_46())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_159() {
		if (jj_3R_57())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_44() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_123()) {
			jj_scanpos = xsp;
			if (jj_3R_124()) {
				jj_scanpos = xsp;
				if (jj_3R_125()) {
					jj_scanpos = xsp;
					if (jj_3R_126()) {
						jj_scanpos = xsp;
						if (jj_3R_127()) {
							jj_scanpos = xsp;
							if (jj_3R_128()) {
								jj_scanpos = xsp;
								if (jj_3R_129()) {
									jj_scanpos = xsp;
									if (jj_3_11()) {
										jj_scanpos = xsp;
										if (jj_scan_token(22))
											return true;
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_123() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_207())
			jj_scanpos = xsp;
		if (jj_3R_56())
			return true;
		return false;
	}

	static final private boolean jj_3_46() {
		if (jj_3R_45())
			return true;
		if (jj_3R_46())
			return true;
		return false;
	}

	static final private boolean jj_3R_158() {
		if (jj_3R_49())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_365())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_306() {
		if (jj_3R_327())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_342()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_77() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(82)) {
			jj_scanpos = xsp;
			if (jj_scan_token(105))
				return true;
		}
		return false;
	}

	static final private boolean jj_3_45() {
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_77()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(TILDE))
			return true;
		return false;
	}

	static final private boolean jj_3R_157() {
		if (jj_3R_210())
			return true;
		return false;
	}

	static final private boolean jj_3_1() {
		if (jj_3R_44())
			return true;
		return false;
	}

	static final private boolean jj_3_44() {
		if (jj_3R_45())
			return true;
		if (jj_3R_53())
			return true;
		if (jj_scan_token(LCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_235() {
		if (jj_3R_306())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_332()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_156() {
		if (jj_3R_45())
			return true;
		if (jj_3R_228())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3_43() {
		if (jj_scan_token(OPERATOR))
			return true;
		return false;
	}

	static final private boolean jj_3R_155() {
		if (jj_3R_209())
			return true;
		return false;
	}

	static final private boolean jj_3_42() {
		if (jj_scan_token(ENUM))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(130))
			jj_scanpos = xsp;
		if (jj_scan_token(LCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_87() {
		if (jj_3R_172())
			return true;
		return false;
	}

	static final private boolean jj_3R_154() {
		if (jj_3R_45())
			return true;
		if (jj_3R_138())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3_41() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(102))
			jj_scanpos = xsp;
		if (jj_3R_51())
			return true;
		if (jj_scan_token(LCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_364() {
		if (jj_3R_372())
			return true;
		return false;
	}

	static final private boolean jj_3R_153() {
		if (jj_3R_208())
			return true;
		return false;
	}

	static final private boolean jj_3R_320() {
		if (jj_scan_token(QUESTIONMARK))
			return true;
		if (jj_3R_172())
			return true;
		if (jj_scan_token(COLON))
			return true;
		if (jj_3R_172())
			return true;
		return false;
	}

	static final private boolean jj_3R_152() {
		if (jj_3R_211())
			return true;
		return false;
	}

	static final private boolean jj_3_104() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_95())
			return true;
		return false;
	}

	static final private boolean jj_3R_172() {
		if (jj_3R_235())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_320())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_151() {
		if (jj_3R_148())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_364())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_345() {
		if (jj_3R_229())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(105))
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_150() {
		if (jj_3R_56())
			return true;
		return false;
	}

	static final private boolean jj_3R_74() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_150()) {
			jj_scanpos = xsp;
			if (jj_3R_151()) {
				jj_scanpos = xsp;
				if (jj_3R_152()) {
					jj_scanpos = xsp;
					if (jj_3R_153()) {
						jj_scanpos = xsp;
						if (jj_3R_154()) {
							jj_scanpos = xsp;
							if (jj_3R_155()) {
								jj_scanpos = xsp;
								if (jj_3R_156()) {
									jj_scanpos = xsp;
									if (jj_3R_157()) {
										jj_scanpos = xsp;
										if (jj_3R_158()) {
											jj_scanpos = xsp;
											if (jj_3R_159()) {
												jj_scanpos = xsp;
												if (jj_3_51()) {
													jj_scanpos = xsp;
													if (jj_3R_160()) {
														jj_scanpos = xsp;
														if (jj_scan_token(22))
															return true;
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_243() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(26)) {
			jj_scanpos = xsp;
			if (jj_scan_token(27)) {
				jj_scanpos = xsp;
				if (jj_scan_token(28)) {
					jj_scanpos = xsp;
					if (jj_scan_token(29)) {
						jj_scanpos = xsp;
						if (jj_scan_token(30)) {
							jj_scanpos = xsp;
							if (jj_scan_token(31)) {
								jj_scanpos = xsp;
								if (jj_scan_token(32)) {
									jj_scanpos = xsp;
									if (jj_scan_token(33)) {
										jj_scanpos = xsp;
										if (jj_scan_token(34)) {
											jj_scanpos = xsp;
											if (jj_scan_token(35)) {
												jj_scanpos = xsp;
												if (jj_scan_token(36))
													return true;
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		if (jj_3R_95())
			return true;
		return false;
	}

	static final private boolean jj_3R_95() {
		if (jj_3R_172())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_243())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_325() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_324())
			return true;
		return false;
	}

	static final private boolean jj_3_103() {
		if (jj_3R_95())
			return true;
		return false;
	}

	static final private boolean jj_3R_265() {
		if (jj_scan_token(PRIVATE))
			return true;
		return false;
	}

	static final private boolean jj_3R_315() {
		if (jj_3R_330())
			return true;
		return false;
	}

	static final private boolean jj_3R_264() {
		if (jj_scan_token(PROTECTED))
			return true;
		return false;
	}

	static final private boolean jj_3R_102() {
		if (jj_3R_95())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_104()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_356() {
		if (jj_3R_229())
			return true;
		return false;
	}

	static final private boolean jj_3R_337() {
		if (jj_scan_token(LESSTHAN))
			return true;
		if (jj_3R_75())
			return true;
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3R_263() {
		if (jj_scan_token(PUBLIC))
			return true;
		return false;
	}

	static final private boolean jj_3R_229() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_263()) {
			jj_scanpos = xsp;
			if (jj_3R_264()) {
				jj_scanpos = xsp;
				if (jj_3R_265())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3_40() {
		if (jj_3R_73())
			return true;
		return false;
	}

	static final private boolean jj_3R_241() {
		if (jj_scan_token(THROW))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_103())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3_98() {
		if (jj_3R_102())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_349() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_102()) {
			jj_scanpos = xsp;
			if (jj_scan_token(25))
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_336() {
		if (jj_3R_139())
			return true;
		return false;
	}

	static final private boolean jj_3_102() {
		if (jj_3R_90())
			return true;
		return false;
	}

	static final private boolean jj_3R_344() {
		if (jj_scan_token(VIRTUAL))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_356())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_335() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_344()) {
			jj_scanpos = xsp;
			if (jj_3R_345())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_324() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_335())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_336())
			jj_scanpos = xsp;
		if (jj_scan_token(ID))
			return true;
		xsp = jj_scanpos;
		if (jj_3R_337())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_340() {
		if (jj_scan_token(129))
			return true;
		if (jj_3R_237())
			return true;
		return false;
	}

	static final private boolean jj_3R_339() {
		if (jj_scan_token(CATCH))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_349())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		if (jj_3R_237())
			return true;
		return false;
	}

	static final private boolean jj_3R_330() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_339()) {
			jj_scanpos = xsp;
			if (jj_3R_340())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_101() {
		if (jj_3R_102())
			return true;
		return false;
	}

	static final private boolean jj_3R_162() {
		if (jj_scan_token(COLON))
			return true;
		if (jj_3R_324())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_325()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_100() {
		if (jj_3R_102())
			return true;
		return false;
	}

	static final private boolean jj_3R_240() {
		if (jj_scan_token(TRY))
			return true;
		if (jj_3R_237())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_315()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_314() {
		if (jj_scan_token(RETURN))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_101())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_313() {
		if (jj_scan_token(BREAK))
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3_97() {
		if (jj_3R_56())
			return true;
		return false;
	}

	static final private boolean jj_3R_312() {
		if (jj_scan_token(CONTINUE))
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_311() {
		if (jj_scan_token(GOTO))
			return true;
		if (jj_scan_token(ID))
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_239() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_311()) {
			jj_scanpos = xsp;
			if (jj_3R_312()) {
				jj_scanpos = xsp;
				if (jj_3R_313()) {
					jj_scanpos = xsp;
					if (jj_3R_314())
						return true;
				}
			}
		}
		return false;
	}

	static final private boolean jj_3_99() {
		if (jj_3R_102())
			return true;
		return false;
	}

	static final private boolean jj_3R_318() {
		if (jj_scan_token(FOR))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_97()) {
			jj_scanpos = xsp;
			if (jj_3_98()) {
				jj_scanpos = xsp;
				if (jj_scan_token(22))
					return true;
			}
		}
		xsp = jj_scanpos;
		if (jj_3_99())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		xsp = jj_scanpos;
		if (jj_3_100())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_317() {
		if (jj_scan_token(DO))
			return true;
		if (jj_3R_101())
			return true;
		if (jj_scan_token(WHILE))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_102())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_316() {
		if (jj_scan_token(WHILE))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_102())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_242() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_316()) {
			jj_scanpos = xsp;
			if (jj_3R_317()) {
				jj_scanpos = xsp;
				if (jj_3R_318())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_310() {
		if (jj_scan_token(SWITCH))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_102())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3_96() {
		if (jj_scan_token(ELSE))
			return true;
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_309() {
		if (jj_scan_token(IF))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_102())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		if (jj_3R_101())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_96())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_238() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_309()) {
			jj_scanpos = xsp;
			if (jj_3R_310())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_95() {
		if (jj_3R_104())
			return true;
		return false;
	}

	static final private boolean jj_3R_237() {
		if (jj_scan_token(LCURLYBRACE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_95())
			jj_scanpos = xsp;
		if (jj_scan_token(RCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_188() {
		if (jj_scan_token(_DEFAULT))
			return true;
		if (jj_scan_token(COLON))
			return true;
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_187() {
		if (jj_scan_token(CASE))
			return true;
		if (jj_3R_87())
			return true;
		if (jj_scan_token(COLON))
			return true;
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_103() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_186()) {
			jj_scanpos = xsp;
			if (jj_3R_187()) {
				jj_scanpos = xsp;
				if (jj_3R_188())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_186() {
		if (jj_scan_token(ID))
			return true;
		if (jj_scan_token(COLON))
			return true;
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_185() {
		if (jj_3R_242())
			return true;
		return false;
	}

	static final private boolean jj_3_94() {
		if (jj_3R_103())
			return true;
		return false;
	}

	static final private boolean jj_3R_184() {
		if (jj_3R_241())
			return true;
		return false;
	}

	static final private boolean jj_3_93() {
		if (jj_3R_102())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_183() {
		if (jj_3R_240())
			return true;
		return false;
	}

	static final private boolean jj_3_92() {
		if (jj_3R_56())
			return true;
		return false;
	}

	static final private boolean jj_3R_182() {
		if (jj_3R_239())
			return true;
		return false;
	}

	static final private boolean jj_3R_181() {
		if (jj_3R_238())
			return true;
		return false;
	}

	static final private boolean jj_3R_180() {
		if (jj_3R_237())
			return true;
		return false;
	}

	static final private boolean jj_3_91() {
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_179() {
		if (jj_3R_102())
			return true;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3_38() {
		if (jj_scan_token(LESSTHAN))
			return true;
		if (jj_3R_75())
			return true;
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3R_101() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_178()) {
			jj_scanpos = xsp;
			if (jj_3R_179()) {
				jj_scanpos = xsp;
				if (jj_3R_180()) {
					jj_scanpos = xsp;
					if (jj_3R_181()) {
						jj_scanpos = xsp;
						if (jj_3R_182()) {
							jj_scanpos = xsp;
							if (jj_scan_token(22)) {
								jj_scanpos = xsp;
								if (jj_3R_183()) {
									jj_scanpos = xsp;
									if (jj_3R_184()) {
										jj_scanpos = xsp;
										if (jj_3_94()) {
											jj_scanpos = xsp;
											if (jj_3R_185())
												return true;
										}
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_178() {
		if (jj_3R_56())
			return true;
		return false;
	}

	static final private boolean jj_3R_326() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_161())
			return true;
		return false;
	}

	static final private boolean jj_3R_189() {
		if (jj_3R_101())
			return true;
		return false;
	}

	static final private boolean jj_3R_104() {
		Token xsp;
		if (jj_3R_189())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_189()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_261() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_38())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_90() {
		if (jj_3R_100())
			return true;
		return false;
	}

	static final private boolean jj_3_89() {
		if (jj_3R_99())
			return true;
		return false;
	}

	static final private boolean jj_3R_161() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_89()) {
			jj_scanpos = xsp;
			if (jj_3_90())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_257() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_256())
			return true;
		return false;
	}

	static final private boolean jj_3R_75() {
		if (jj_3R_161())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_326()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_88() {
		if (jj_3R_91())
			return true;
		return false;
	}

	static final private boolean jj_3R_256() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_87()) {
			jj_scanpos = xsp;
			if (jj_3_88())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_87() {
		if (jj_scan_token(CLASS))
			return true;
		if (jj_scan_token(ID))
			return true;
		return false;
	}

	static final private boolean jj_3R_216() {
		if (jj_3R_256())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_257()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_86() {
		if (jj_3R_80())
			return true;
		return false;
	}

	static final private boolean jj_3R_136() {
		if (jj_scan_token(TEMPLATE))
			return true;
		if (jj_scan_token(LESSTHAN))
			return true;
		if (jj_3R_216())
			return true;
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3_85() {
		if (jj_3R_87())
			return true;
		return false;
	}

	static final private boolean jj_3R_354() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_86())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_353() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_85())
			jj_scanpos = xsp;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3R_343() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_353()) {
			jj_scanpos = xsp;
			if (jj_3R_354())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_83() {
		if (jj_3R_87())
			return true;
		return false;
	}

	static final private boolean jj_3R_94() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_93())
			return true;
		return false;
	}

	static final private boolean jj_3R_98() {
		if (jj_3R_85())
			return true;
		if (jj_3R_175())
			return true;
		return false;
	}

	static final private boolean jj_3R_176() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_83())
			jj_scanpos = xsp;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3R_97() {
		Token xsp;
		if (jj_3R_176())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_176()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_333() {
		if (jj_3R_343())
			return true;
		return false;
	}

	static final private boolean jj_3_84() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_96()) {
			jj_scanpos = xsp;
			if (jj_3R_97()) {
				jj_scanpos = xsp;
				if (jj_3R_98())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_96() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_175())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		Token xsp;
		if (jj_3R_333())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_333()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_175() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_84())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_99() {
		if (jj_3R_49())
			return true;
		if (jj_3R_175())
			return true;
		return false;
	}

	static final private boolean jj_3_82() {
		if (jj_3R_95())
			return true;
		return false;
	}

	static final private boolean jj_3_81() {
		if (jj_scan_token(LCURLYBRACE))
			return true;
		if (jj_3R_93())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_94()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(RCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3R_93() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_81()) {
			jj_scanpos = xsp;
			if (jj_3_82())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_37() {
		if (jj_3R_74())
			return true;
		return false;
	}

	static final private boolean jj_3R_76() {
		if (jj_3R_162())
			return true;
		return false;
	}

	static final private boolean jj_3_39() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_76())
			jj_scanpos = xsp;
		if (jj_scan_token(LCURLYBRACE))
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_37()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(RCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3_79() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_91())
			return true;
		return false;
	}

	static final private boolean jj_3_77() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(23))
			jj_scanpos = xsp;
		if (jj_scan_token(ELLIPSIS))
			return true;
		return false;
	}

	static final private boolean jj_3_80() {
		if (jj_3R_92())
			return true;
		return false;
	}

	static final private boolean jj_3R_346() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		if (jj_3R_95())
			return true;
		return false;
	}

	static final private boolean jj_3R_329() {
		if (jj_3R_175())
			return true;
		return false;
	}

	static final private boolean jj_3R_328() {
		if (jj_3R_92())
			return true;
		return false;
	}

	static final private boolean jj_3R_91() {
		if (jj_3R_49())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_328()) {
			jj_scanpos = xsp;
			if (jj_3R_329())
				return true;
		}
		xsp = jj_scanpos;
		if (jj_3R_346())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_90() {
		if (jj_3R_91())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_79()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_78() {
		if (jj_3R_90())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_77())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_76() {
		if (jj_3R_80())
			return true;
		return false;
	}

	static final private boolean jj_3R_80() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_78()) {
			jj_scanpos = xsp;
			if (jj_scan_token(25))
				return true;
		}
		return false;
	}

	static final private boolean jj_3_36() {
		if (jj_3R_74())
			return true;
		return false;
	}

	static final private boolean jj_3R_260() {
		if (jj_scan_token(LCURLYBRACE))
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_36()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_scan_token(RCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3_74() {
		if (jj_3R_89())
			return true;
		return false;
	}

	static final private boolean jj_3R_217() {
		return false;
	}

	static final private boolean jj_3R_387() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_386())
			return true;
		return false;
	}

	static final private boolean jj_3_75() {
		if (jj_3R_73())
			return true;
		return false;
	}

	static final private boolean jj_3R_138() {
		if (jj_scan_token(TILDE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		lookingAhead = true;
		jj_semLA = IsCtor();
		lookingAhead = false;
		if (!jj_semLA || jj_3R_217())
			return true;
		if (jj_scan_token(ID))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		xsp = jj_scanpos;
		if (jj_3_76())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_137() {
		if (jj_3R_139())
			return true;
		return false;
	}

	static final private boolean jj_3R_226() {
		if (jj_scan_token(CLASS))
			return true;
		return false;
	}

	static final private boolean jj_3R_53() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_137())
			jj_scanpos = xsp;
		if (jj_3R_138())
			return true;
		return false;
	}

	static final private boolean jj_3R_386() {
		if (jj_3R_79())
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_74())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_382() {
		if (jj_scan_token(COLON))
			return true;
		if (jj_3R_386())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_387()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_225() {
		if (jj_scan_token(UNION))
			return true;
		return false;
	}

	static final private boolean jj_3R_224() {
		if (jj_scan_token(STRUCT))
			return true;
		return false;
	}

	static final private boolean jj_3R_147() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_224()) {
			jj_scanpos = xsp;
			if (jj_3R_225()) {
				jj_scanpos = xsp;
				if (jj_3R_226())
					return true;
			}
		}
		xsp = jj_scanpos;
		if (jj_3R_260()) {
			jj_scanpos = xsp;
			if (jj_3_39()) {
				jj_scanpos = xsp;
				if (jj_3R_261())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_215() {
		if (jj_3R_162())
			return true;
		return false;
	}

	static final private boolean jj_3R_135() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_215())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_51() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(96)) {
			jj_scanpos = xsp;
			if (jj_scan_token(103)) {
				jj_scanpos = xsp;
				if (jj_scan_token(97))
					return true;
			}
		}
		xsp = jj_scanpos;
		if (jj_3R_135())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_72() {
		if (jj_3R_80())
			return true;
		return false;
	}

	static final private boolean jj_3R_351() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_89())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3_73() {
		if (jj_3R_88())
			return true;
		return false;
	}

	static final private boolean jj_3R_350() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		if (jj_3R_93())
			return true;
		return false;
	}

	static final private boolean jj_3R_341() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_350()) {
			jj_scanpos = xsp;
			if (jj_3R_351())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_262() {
		return false;
	}

	static final private boolean jj_3R_331() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_222())
			return true;
		return false;
	}

	static final private boolean jj_3R_131() {
		return false;
	}

	static final private boolean jj_3R_228() {
		Token xsp;
		xsp = jj_scanpos;
		lookingAhead = true;
		jj_semLA = IsCtor();
		lookingAhead = false;
		if (!jj_semLA || jj_3R_262())
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		xsp = jj_scanpos;
		if (jj_3_72())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		xsp = jj_scanpos;
		if (jj_3_73())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_46() {
		lookingAhead = true;
		jj_semLA = IsCtor();
		lookingAhead = false;
		if (!jj_semLA || jj_3R_131())
			return true;
		if (jj_3R_79())
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_374() {
		if (jj_3R_382())
			return true;
		return false;
	}

	static final private boolean jj_3R_222() {
		if (jj_3R_92())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_341())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_367() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_374())
			jj_scanpos = xsp;
		if (jj_3R_237())
			return true;
		return false;
	}

	static final private boolean jj_3R_143() {
		if (jj_3R_222())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_331()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_366() {
		if (jj_3R_88())
			return true;
		return false;
	}

	static final private boolean jj_3R_381() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_99())
			return true;
		return false;
	}

	static final private boolean jj_3_137() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(52)) {
			jj_scanpos = xsp;
			if (jj_scan_token(41))
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_62() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(106)) {
			jj_scanpos = xsp;
			if (jj_scan_token(67)) {
				jj_scanpos = xsp;
				if (jj_scan_token(92)) {
					jj_scanpos = xsp;
					if (jj_scan_token(83)) {
						jj_scanpos = xsp;
						if (jj_scan_token(84)) {
							jj_scanpos = xsp;
							if (jj_scan_token(77)) {
								jj_scanpos = xsp;
								if (jj_scan_token(73)) {
									jj_scanpos = xsp;
									if (jj_scan_token(93)) {
										jj_scanpos = xsp;
										if (jj_scan_token(104))
											return true;
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_209() {
		if (jj_3R_45())
			return true;
		if (jj_3R_228())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_366())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(22)) {
			jj_scanpos = xsp;
			if (jj_3R_367())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_259() {
		if (jj_scan_token(TYPEDEF))
			return true;
		return false;
	}

	static final private boolean jj_3R_258() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(63)) {
			jj_scanpos = xsp;
			if (jj_scan_token(90)) {
				jj_scanpos = xsp;
				if (jj_scan_token(95)) {
					jj_scanpos = xsp;
					if (jj_scan_token(76))
						return true;
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_223() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_258()) {
			jj_scanpos = xsp;
			if (jj_3R_259())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_373() {
		if (jj_3R_99())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_381()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_253() {
		if (jj_3R_136())
			return true;
		return false;
	}

	static final private boolean jj_3R_208() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_253())
			jj_scanpos = xsp;
		if (jj_3R_45())
			return true;
		if (jj_3R_53())
			return true;
		if (jj_3R_237())
			return true;
		return false;
	}

	static final private boolean jj_3R_81() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(68)) {
			jj_scanpos = xsp;
			if (jj_scan_token(107))
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_88() {
		if (jj_scan_token(THROW))
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_373())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_146() {
		return false;
	}

	static final private boolean jj_3R_213() {
		if (jj_scan_token(INLINE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(105))
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_212() {
		if (jj_scan_token(VIRTUAL))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(82))
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_130() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_212()) {
			jj_scanpos = xsp;
			if (jj_3R_213())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_138() {
		if (jj_3R_49())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_137())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_305() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3R_45() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_130())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_304() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_303() {
		if (jj_scan_token(POINTERTO))
			return true;
		return false;
	}

	static final private boolean jj_3R_302() {
		if (jj_scan_token(ARROWSTAR))
			return true;
		return false;
	}

	static final private boolean jj_3R_301() {
		if (jj_scan_token(COMMA))
			return true;
		return false;
	}

	static final private boolean jj_3R_63() {
		lookingAhead = true;
		jj_semLA = SymtabManager.IsFullyScopedTypeName(GetFullyScopedName());
		lookingAhead = false;
		if (!jj_semLA || jj_3R_146())
			return true;
		if (jj_3R_79())
			return true;
		return false;
	}

	static final private boolean jj_3R_300() {
		if (jj_scan_token(MINUSMINUS))
			return true;
		return false;
	}

	static final private boolean jj_3R_299() {
		if (jj_scan_token(PLUSPLUS))
			return true;
		return false;
	}

	static final private boolean jj_3R_298() {
		if (jj_scan_token(OR))
			return true;
		return false;
	}

	static final private boolean jj_3R_297() {
		if (jj_scan_token(AND))
			return true;
		return false;
	}

	static final private boolean jj_3R_296() {
		if (jj_scan_token(GREATERTHANOREQUALTO))
			return true;
		return false;
	}

	static final private boolean jj_3R_295() {
		if (jj_scan_token(LESSTHANOREQUALTO))
			return true;
		return false;
	}

	static final private boolean jj_3R_294() {
		if (jj_scan_token(NOTEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_293() {
		if (jj_scan_token(EQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_292() {
		if (jj_scan_token(SHIFTLEFTEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_291() {
		if (jj_scan_token(SHIFTRIGHTEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_233() {
		if (jj_3R_139())
			return true;
		if (jj_scan_token(STAR))
			return true;
		return false;
	}

	static final private boolean jj_3R_290() {
		if (jj_scan_token(SHIFTRIGHT))
			return true;
		return false;
	}

	static final private boolean jj_3_35() {
		if (jj_3R_73())
			return true;
		return false;
	}

	static final private boolean jj_3R_289() {
		if (jj_scan_token(SHIFTLEFT))
			return true;
		return false;
	}

	static final private boolean jj_3R_288() {
		if (jj_scan_token(BITWISEOREQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_287() {
		if (jj_scan_token(BITWISEANDEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_286() {
		if (jj_scan_token(BITWISEXOREQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_72() {
		if (jj_scan_token(LESSTHAN))
			return true;
		if (jj_3R_75())
			return true;
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3R_165() {
		if (jj_scan_token(OPERATOR))
			return true;
		if (jj_3R_231())
			return true;
		return false;
	}

	static final private boolean jj_3R_285() {
		if (jj_scan_token(MODEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_230() {
		if (jj_scan_token(LESSTHAN))
			return true;
		if (jj_3R_75())
			return true;
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3R_284() {
		if (jj_scan_token(DIVIDEEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_283() {
		if (jj_scan_token(TIMESEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_282() {
		if (jj_scan_token(MINUSEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_164() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_230())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_281() {
		if (jj_scan_token(PLUSEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_71() {
		if (jj_scan_token(LESSTHAN))
			return true;
		if (jj_3R_75())
			return true;
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3R_280() {
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3R_163() {
		if (jj_3R_139())
			return true;
		return false;
	}

	static final private boolean jj_3R_279() {
		if (jj_scan_token(LESSTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3R_278() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_79() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_163())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_164()) {
			jj_scanpos = xsp;
			if (jj_3R_165())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_136() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3R_277() {
		if (jj_scan_token(NOT))
			return true;
		return false;
	}

	static final private boolean jj_3R_276() {
		if (jj_scan_token(TILDE))
			return true;
		return false;
	}

	static final private boolean jj_3_71() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		return false;
	}

	static final private boolean jj_3R_275() {
		if (jj_scan_token(BITWISEOR))
			return true;
		return false;
	}

	static final private boolean jj_3R_274() {
		if (jj_scan_token(AMPERSAND))
			return true;
		return false;
	}

	static final private boolean jj_3_135() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3R_273() {
		if (jj_scan_token(BITWISEXOR))
			return true;
		return false;
	}

	static final private boolean jj_3R_272() {
		if (jj_scan_token(MOD))
			return true;
		return false;
	}

	static final private boolean jj_3R_271() {
		if (jj_scan_token(DIVIDE))
			return true;
		return false;
	}

	static final private boolean jj_3R_270() {
		if (jj_scan_token(STAR))
			return true;
		return false;
	}

	static final private boolean jj_3R_269() {
		if (jj_scan_token(MINUS))
			return true;
		return false;
	}

	static final private boolean jj_3R_268() {
		if (jj_scan_token(PLUS))
			return true;
		return false;
	}

	static final private boolean jj_3R_267() {
		if (jj_scan_token(DELETE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_136())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_69() {
		if (jj_3R_80())
			return true;
		return false;
	}

	static final private boolean jj_3R_385() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		if (jj_scan_token(OCTALINT))
			return true;
		return false;
	}

	static final private boolean jj_3R_266() {
		if (jj_scan_token(NEW))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_135())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_384() {
		if (jj_3R_88())
			return true;
		return false;
	}

	static final private boolean jj_3_70() {
		if (jj_3R_81())
			return true;
		return false;
	}

	static final private boolean jj_3R_231() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_266()) {
			jj_scanpos = xsp;
			if (jj_3R_267()) {
				jj_scanpos = xsp;
				if (jj_3R_268()) {
					jj_scanpos = xsp;
					if (jj_3R_269()) {
						jj_scanpos = xsp;
						if (jj_3R_270()) {
							jj_scanpos = xsp;
							if (jj_3R_271()) {
								jj_scanpos = xsp;
								if (jj_3R_272()) {
									jj_scanpos = xsp;
									if (jj_3R_273()) {
										jj_scanpos = xsp;
										if (jj_3R_274()) {
											jj_scanpos = xsp;
											if (jj_3R_275()) {
												jj_scanpos = xsp;
												if (jj_3R_276()) {
													jj_scanpos = xsp;
													if (jj_3R_277()) {
														jj_scanpos = xsp;
														if (jj_3R_278()) {
															jj_scanpos = xsp;
															if (jj_3R_279()) {
																jj_scanpos =
																	xsp;
																if (jj_3R_280()) {
																	jj_scanpos =
																		xsp;
																	if (jj_3R_281()) {
																		jj_scanpos =
																			xsp;
																		if (jj_3R_282()) {
																			jj_scanpos =
																				xsp;
																			if (jj_3R_283()) {
																				jj_scanpos =
																					xsp;
																				if (jj_3R_284()) {
																					jj_scanpos =
																						xsp;
																					if (jj_3R_285()) {
																						jj_scanpos =
																							xsp;
																						if (jj_3R_286()) {
																							jj_scanpos =
																								xsp;
																							if (jj_3R_287()) {
																								jj_scanpos =
																									xsp;
																								if (jj_3R_288()) {
																									jj_scanpos =
																										xsp;
																									if (jj_3R_289()) {
																										jj_scanpos =
																											xsp;
																										if (jj_3R_290()) {
																											jj_scanpos =
																												xsp;
																											if (jj_3R_291()) {
																												jj_scanpos =
																													xsp;
																												if (jj_3R_292()) {
																													jj_scanpos =
																														xsp;
																													if (jj_3R_293()) {
																														jj_scanpos =
																															xsp;
																														if (jj_3R_294()) {
																															jj_scanpos =
																																xsp;
																															if (jj_3R_295()) {
																																jj_scanpos =
																																	xsp;
																																if (jj_3R_296()) {
																																	jj_scanpos =
																																		xsp;
																																	if (jj_3R_297()) {
																																		jj_scanpos =
																																			xsp;
																																		if (jj_3R_298()) {
																																			jj_scanpos =
																																				xsp;
																																			if (jj_3R_299()) {
																																				jj_scanpos =
																																					xsp;
																																				if (jj_3R_300()) {
																																					jj_scanpos =
																																						xsp;
																																					if (jj_3R_301()) {
																																						jj_scanpos =
																																							xsp;
																																						if (jj_3R_302()) {
																																							jj_scanpos =
																																								xsp;
																																							if (jj_3R_303()) {
																																								jj_scanpos =
																																									xsp;
																																								if (jj_3R_304()) {
																																									jj_scanpos =
																																										xsp;
																																									if (jj_3R_305()) {
																																										jj_scanpos =
																																											xsp;
																																										if (jj_3_138())
																																											return true;
																																									}
																																								}
																																							}
																																						}
																																					}
																																				}
																																			}
																																		}
																																	}
																																}
																															}
																														}
																													}
																												}
																											}
																										}
																									}
																								}
																							}
																						}
																					}
																				}
																			}
																		}
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3_34() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_72())
			jj_scanpos = xsp;
		if (jj_scan_token(SCOPE))
			return true;
		return false;
	}

	static final private boolean jj_3R_219() {
		Token xsp;
		if (jj_3_34())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_34()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_33() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_71())
			jj_scanpos = xsp;
		if (jj_scan_token(SCOPE))
			return true;
		return false;
	}

	static final private boolean jj_3R_195() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_95())
			return true;
		return false;
	}

	static final private boolean jj_3R_218() {
		if (jj_scan_token(SCOPE))
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_33()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_221() {
		if (jj_3R_79())
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_69())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		xsp = jj_scanpos;
		if (jj_3_70())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_384())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_385())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_139() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_218()) {
			jj_scanpos = xsp;
			if (jj_3R_219())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_227() {
		if (jj_scan_token(LESSTHAN))
			return true;
		if (jj_3R_75())
			return true;
		if (jj_scan_token(GREATERTHAN))
			return true;
		return false;
	}

	static final private boolean jj_3_64() {
		if (jj_3R_87())
			return true;
		return false;
	}

	static final private boolean jj_3R_149() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_227())
			jj_scanpos = xsp;
		if (jj_scan_token(SCOPE))
			return true;
		return false;
	}

	static final private boolean jj_3R_73() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(20)) {
			jj_scanpos = xsp;
			if (jj_3R_149())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_68() {
		if (jj_3R_85())
			return true;
		return false;
	}

	static final private boolean jj_3R_142() {
		if (jj_3R_221())
			return true;
		return false;
	}

	static final private boolean jj_3R_250() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(113)) {
			jj_scanpos = xsp;
			if (jj_scan_token(114)) {
				jj_scanpos = xsp;
				if (jj_scan_token(117)) {
					jj_scanpos = xsp;
					if (jj_scan_token(118)) {
						jj_scanpos = xsp;
						if (jj_scan_token(121)) {
							jj_scanpos = xsp;
							if (jj_scan_token(122)) {
								jj_scanpos = xsp;
								if (jj_scan_token(115)) {
									jj_scanpos = xsp;
									if (jj_scan_token(116)) {
										jj_scanpos = xsp;
										if (jj_scan_token(119)) {
											jj_scanpos = xsp;
											if (jj_scan_token(120)) {
												jj_scanpos = xsp;
												if (jj_scan_token(123)) {
													jj_scanpos = xsp;
													if (jj_scan_token(124)) {
														jj_scanpos = xsp;
														if (jj_scan_token(127)) {
															jj_scanpos = xsp;
															if (jj_scan_token(125)) {
																jj_scanpos =
																	xsp;
																if (jj_scan_token(126)) {
																	jj_scanpos =
																		xsp;
																	if (jj_scan_token(110)) {
																		jj_scanpos =
																			xsp;
																		if (jj_scan_token(111))
																			return true;
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3_32() {
		if (jj_3R_63())
			return true;
		return false;
	}

	static final private boolean jj_3R_206() {
		if (jj_3R_62())
			return true;
		return false;
	}

	static final private boolean jj_3_134() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(20))
			jj_scanpos = xsp;
		if (jj_scan_token(DELETE))
			return true;
		return false;
	}

	static final private boolean jj_3R_141() {
		if (jj_3R_85())
			return true;
		if (jj_3R_57())
			return true;
		return false;
	}

	static final private boolean jj_3R_122() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_206()) {
			jj_scanpos = xsp;
			if (jj_3_32())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_133() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(20))
			jj_scanpos = xsp;
		if (jj_scan_token(NEW))
			return true;
		return false;
	}

	static final private boolean jj_3R_89() {
		if (jj_3R_95())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_195()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_57() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_141()) {
			jj_scanpos = xsp;
			if (jj_3R_142())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_61() {
		if (jj_3R_86())
			return true;
		return false;
	}

	static final private boolean jj_3_128() {
		if (jj_3R_89())
			return true;
		return false;
	}

	static final private boolean jj_3R_205() {
		if (jj_3R_250())
			return true;
		return false;
	}

	static final private boolean jj_3_62() {
		if (jj_3R_86())
			return true;
		return false;
	}

	static final private boolean jj_3_67() {
		if (jj_3R_85())
			return true;
		return false;
	}

	static final private boolean jj_3R_204() {
		if (jj_3R_199())
			return true;
		return false;
	}

	static final private boolean jj_3R_48() {
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_67()) {
				jj_scanpos = xsp;
				break;
			}
		}
		if (jj_3R_79())
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_203() {
		if (jj_3R_249())
			return true;
		return false;
	}

	static final private boolean jj_3R_202() {
		if (jj_3R_248())
			return true;
		return false;
	}

	static final private boolean jj_3_65() {
		if (jj_3R_80())
			return true;
		return false;
	}

	static final private boolean jj_3_132() {
		if (jj_scan_token(STRING))
			return true;
		return false;
	}

	static final private boolean jj_3R_359() {
		if (jj_3R_88())
			return true;
		return false;
	}

	static final private boolean jj_3R_201() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_102())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_200() {
		Token xsp;
		if (jj_3_132())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_132()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_66() {
		if (jj_3R_81())
			return true;
		return false;
	}

	static final private boolean jj_3R_121() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(100)) {
			jj_scanpos = xsp;
			if (jj_3R_200()) {
				jj_scanpos = xsp;
				if (jj_3R_201()) {
					jj_scanpos = xsp;
					if (jj_3R_202()) {
						jj_scanpos = xsp;
						if (jj_3R_203()) {
							jj_scanpos = xsp;
							if (jj_3R_204()) {
								jj_scanpos = xsp;
								if (jj_3R_205())
									return true;
							}
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_171() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_65())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		xsp = jj_scanpos;
		if (jj_3_66())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_359())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_131() {
		if (jj_3R_73())
			return true;
		return false;
	}

	static final private boolean jj_3R_234() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_64())
			jj_scanpos = xsp;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3R_86() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_170()) {
			jj_scanpos = xsp;
			if (jj_3R_171())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_170() {
		Token xsp;
		if (jj_3R_234())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_234()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_60() {
		if (jj_3R_86())
			return true;
		return false;
	}

	static final private boolean jj_3R_247() {
		if (jj_scan_token(TILDE))
			return true;
		if (jj_scan_token(ID))
			return true;
		return false;
	}

	static final private boolean jj_3R_246() {
		if (jj_scan_token(OPERATOR))
			return true;
		if (jj_3R_231())
			return true;
		return false;
	}

	static final private boolean jj_3R_245() {
		if (jj_3R_139())
			return true;
		return false;
	}

	static final private boolean jj_3R_199() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_245())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(130)) {
			jj_scanpos = xsp;
			if (jj_3R_246()) {
				jj_scanpos = xsp;
				if (jj_3R_247())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_308() {
		if (jj_3R_79())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_62())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_27() {
		if (jj_3R_62())
			return true;
		return false;
	}

	static final private boolean jj_3R_307() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_92())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_61())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_29() {
		if (jj_3R_59())
			return true;
		return false;
	}

	static final private boolean jj_3_28() {
		if (jj_3R_63())
			return true;
		return false;
	}

	static final private boolean jj_3_130() {
		if (jj_3R_122())
			return true;
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_128())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_70() {
		if (jj_3R_148())
			return true;
		return false;
	}

	static final private boolean jj_3R_236() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_63()) {
			jj_scanpos = xsp;
			if (jj_3R_307()) {
				jj_scanpos = xsp;
				if (jj_3R_308())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_68() {
		if (jj_3R_59())
			return true;
		return false;
	}

	static final private boolean jj_3_63() {
		if (jj_scan_token(TILDE))
			return true;
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_60())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_127() {
		if (jj_3R_89())
			return true;
		return false;
	}

	static final private boolean jj_3R_69() {
		if (jj_3R_147())
			return true;
		return false;
	}

	static final private boolean jj_3_30() {
		if (jj_3R_62())
			return true;
		return false;
	}

	static final private boolean jj_3R_67() {
		if (jj_3R_62())
			return true;
		return false;
	}

	static final private boolean jj_3R_120() {
		if (jj_scan_token(POINTERTO))
			return true;
		if (jj_3R_199())
			return true;
		return false;
	}

	static final private boolean jj_3_31() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_69()) {
			jj_scanpos = xsp;
			if (jj_3R_70()) {
				jj_scanpos = xsp;
				if (jj_3_28())
					return true;
			}
		}
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_29()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_26() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_67()) {
			jj_scanpos = xsp;
			if (jj_3R_68())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_119() {
		if (jj_scan_token(DOT))
			return true;
		if (jj_3R_199())
			return true;
		return false;
	}

	static final private boolean jj_3R_323() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3_123() {
		if (jj_3R_116())
			return true;
		return false;
	}

	static final private boolean jj_3R_118() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_127())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3_20() {
		if (jj_3R_59())
			return true;
		return false;
	}

	static final private boolean jj_3_126() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_117()) {
			jj_scanpos = xsp;
			if (jj_3R_118()) {
				jj_scanpos = xsp;
				if (jj_3R_119()) {
					jj_scanpos = xsp;
					if (jj_3R_120()) {
						jj_scanpos = xsp;
						if (jj_scan_token(55)) {
							jj_scanpos = xsp;
							if (jj_scan_token(56))
								return true;
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_117() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		if (jj_3R_102())
			return true;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3_19() {
		if (jj_3R_62())
			return true;
		return false;
	}

	static final private boolean jj_3R_133() {
		if (jj_3R_62())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_26()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_22() {
		if (jj_3R_59())
			return true;
		return false;
	}

	static final private boolean jj_3_21() {
		if (jj_3R_63())
			return true;
		return false;
	}

	static final private boolean jj_3_129() {
		if (jj_3R_121())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_126()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_111() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_129()) {
			jj_scanpos = xsp;
			if (jj_3_130())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_174() {
		if (jj_3R_236())
			return true;
		return false;
	}

	static final private boolean jj_3R_65() {
		if (jj_3R_148())
			return true;
		return false;
	}

	static final private boolean jj_3R_64() {
		if (jj_3R_147())
			return true;
		return false;
	}

	static final private boolean jj_3R_61() {
		if (jj_3R_59())
			return true;
		return false;
	}

	static final private boolean jj_3_23() {
		if (jj_3R_62())
			return true;
		return false;
	}

	static final private boolean jj_3R_60() {
		if (jj_3R_62())
			return true;
		return false;
	}

	static final private boolean jj_3_24() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_64()) {
			jj_scanpos = xsp;
			if (jj_3R_65()) {
				jj_scanpos = xsp;
				if (jj_3_21())
					return true;
			}
		}
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_22()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_18() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_60()) {
			jj_scanpos = xsp;
			if (jj_3R_61())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_59() {
		if (jj_3R_85())
			return true;
		return false;
	}

	static final private boolean jj_3_17() {
		if (jj_3R_59())
			return true;
		return false;
	}

	static final private boolean jj_3R_109() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(41)) {
			jj_scanpos = xsp;
			if (jj_scan_token(52)) {
				jj_scanpos = xsp;
				if (jj_scan_token(50)) {
					jj_scanpos = xsp;
					if (jj_scan_token(51)) {
						jj_scanpos = xsp;
						if (jj_scan_token(57)) {
							jj_scanpos = xsp;
							if (jj_scan_token(58))
								return true;
						}
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3_57() {
		if (jj_scan_token(CONST))
			return true;
		return false;
	}

	static final private boolean jj_3_125() {
		if (jj_3R_89())
			return true;
		return false;
	}

	static final private boolean jj_3R_249() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(20))
			jj_scanpos = xsp;
		if (jj_scan_token(DELETE))
			return true;
		xsp = jj_scanpos;
		if (jj_3R_323())
			jj_scanpos = xsp;
		if (jj_3R_110())
			return true;
		return false;
	}

	static final private boolean jj_3_25() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_66()) {
			jj_scanpos = xsp;
			if (jj_3_24())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_66() {
		if (jj_3R_62())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_18()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3_56() {
		if (jj_scan_token(VOLATILE))
			return true;
		return false;
	}

	static final private boolean jj_3R_173() {
		if (jj_3R_85())
			return true;
		if (jj_3R_92())
			return true;
		return false;
	}

	static final private boolean jj_3R_214() {
		if (jj_3R_59())
			return true;
		return false;
	}

	static final private boolean jj_3R_115() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_125())
			jj_scanpos = xsp;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_92() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_173()) {
			jj_scanpos = xsp;
			if (jj_3R_174())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_132() {
		Token xsp;
		if (jj_3R_214())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_214()) {
				jj_scanpos = xsp;
				break;
			}
		}
		xsp = jj_scanpos;
		if (jj_3_25())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_84() {
		if (jj_scan_token(VOLATILE))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_57())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_124() {
		if (jj_scan_token(LSQUAREBRACKET))
			return true;
		if (jj_3R_102())
			return true;
		if (jj_scan_token(RSQUAREBRACKET))
			return true;
		return false;
	}

	static final private boolean jj_3R_244() {
		Token xsp;
		if (jj_3_124())
			return true;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3_124()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_49() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_132()) {
			jj_scanpos = xsp;
			if (jj_3R_133()) {
				jj_scanpos = xsp;
				if (jj_3_31())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_83() {
		if (jj_scan_token(CONST))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_56())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_58() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_83()) {
			jj_scanpos = xsp;
			if (jj_3R_84())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_122() {
		if (jj_3R_116())
			return true;
		return false;
	}

	static final private boolean jj_3R_232() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_58())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_198() {
		if (jj_3R_85())
			return true;
		if (jj_3R_232())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_123())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3R_197() {
		if (jj_3R_244())
			return true;
		return false;
	}

	static final private boolean jj_3R_116() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_197()) {
			jj_scanpos = xsp;
			if (jj_3R_198())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_169() {
		if (jj_3R_233())
			return true;
		if (jj_3R_232())
			return true;
		return false;
	}

	static final private boolean jj_3_121() {
		if (jj_3R_115())
			return true;
		return false;
	}

	static final private boolean jj_3R_168() {
		if (jj_scan_token(STAR))
			return true;
		if (jj_3R_232())
			return true;
		return false;
	}

	static final private boolean jj_3_118() {
		if (jj_3R_49())
			return true;
		return false;
	}

	static final private boolean jj_3R_355() {
		if (jj_3R_116())
			return true;
		return false;
	}

	static final private boolean jj_3R_347() {
		if (jj_scan_token(COMMA))
			return true;
		if (jj_3R_166())
			return true;
		return false;
	}

	static final private boolean jj_3R_85() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_167()) {
			jj_scanpos = xsp;
			if (jj_3R_168()) {
				jj_scanpos = xsp;
				if (jj_3R_169())
					return true;
			}
		}
		return false;
	}

	static final private boolean jj_3R_167() {
		if (jj_scan_token(AMPERSAND))
			return true;
		if (jj_3R_232())
			return true;
		return false;
	}

	static final private boolean jj_3R_358() {
		if (jj_scan_token(ASSIGNEQUAL))
			return true;
		if (jj_3R_87())
			return true;
		return false;
	}

	static final private boolean jj_3_117() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_99())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_196() {
		if (jj_3R_49())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_355())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_116() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_89())
			return true;
		return false;
	}

	static final private boolean jj_3R_145() {
		if (jj_3R_81())
			return true;
		return false;
	}

	static final private boolean jj_3R_322() {
		if (jj_3R_115())
			return true;
		return false;
	}

	static final private boolean jj_3R_144() {
		if (jj_3R_223())
			return true;
		return false;
	}

	static final private boolean jj_3R_166() {
		if (jj_scan_token(ID))
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_358())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_119() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_99())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_114() {
		if (jj_3R_196())
			return true;
		return false;
	}

	static final private boolean jj_3R_58() {
		if (jj_3R_143())
			return true;
		return false;
	}

	static final private boolean jj_3R_59() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_144()) {
			jj_scanpos = xsp;
			if (jj_3R_145()) {
				jj_scanpos = xsp;
				if (jj_scan_token(82)) {
					jj_scanpos = xsp;
					if (jj_scan_token(105)) {
						jj_scanpos = xsp;
						if (jj_scan_token(79))
							return true;
					}
				}
			}
		}
		return false;
	}

	static final private boolean jj_3R_113() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_99())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3_115() {
		if (jj_scan_token(SCOPE))
			return true;
		return false;
	}

	static final private boolean jj_3R_82() {
		if (jj_3R_166())
			return true;
		Token xsp;
		while (true) {
			xsp = jj_scanpos;
			if (jj_3R_347()) {
				jj_scanpos = xsp;
				break;
			}
		}
		return false;
	}

	static final private boolean jj_3R_368() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(52)) {
			jj_scanpos = xsp;
			if (jj_scan_token(41))
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_112() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_89())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3_120() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_112())
			jj_scanpos = xsp;
		xsp = jj_scanpos;
		if (jj_3R_113()) {
			jj_scanpos = xsp;
			if (jj_3R_114())
				return true;
		}
		return false;
	}

	static final private boolean jj_3R_321() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		if (jj_3R_99())
			return true;
		if (jj_scan_token(RPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3_14() {
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_140() {
		if (jj_3R_220())
			return true;
		return false;
	}

	static final private boolean jj_3_55() {
		if (jj_scan_token(LCURLYBRACE))
			return true;
		if (jj_3R_82())
			return true;
		if (jj_scan_token(RCURLYBRACE))
			return true;
		return false;
	}

	static final private boolean jj_3_111() {
		if (jj_scan_token(LPARENTHESIS))
			return true;
		return false;
	}

	static final private boolean jj_3R_248() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_scan_token(20))
			jj_scanpos = xsp;
		if (jj_scan_token(NEW))
			return true;
		xsp = jj_scanpos;
		if (jj_3R_321()) {
			jj_scanpos = xsp;
			if (jj_3_120())
				return true;
		}
		xsp = jj_scanpos;
		if (jj_3R_322())
			jj_scanpos = xsp;
		return false;
	}

	static final private boolean jj_3_16() {
		if (jj_3R_49())
			return true;
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3R_58())
			jj_scanpos = xsp;
		if (jj_scan_token(SEMICOLON))
			return true;
		return false;
	}

	static final private boolean jj_3R_56() {
		Token xsp;
		xsp = jj_scanpos;
		if (jj_3_16()) {
			jj_scanpos = xsp;
			if (jj_3R_140())
				return true;
		}
		return false;
	}

	static final private boolean jj_3_13() {
		if (jj_3R_44())
			return true;
		return false;
	}

	static final private boolean jj_3_114() {
		if (jj_3R_111())
			return true;
		return false;
	}

	static final private boolean jj_3_112() {
		if (jj_3R_108())
			return true;
		return false;
	}

	static private boolean jj_initialized_once = false;
	static public CPPParserTokenManager token_source;
	static SimpleCharStream jj_input_stream;
	static public Token token, jj_nt;
	static private int jj_ntk;
	static private Token jj_scanpos, jj_lastpos;
	static private int jj_la;
	static public boolean lookingAhead = false;
	static private boolean jj_semLA;
	static private int jj_gen;
	static final private int[] jj_la1 = new int[125];
	static private int[] jj_la1_0;
	static private int[] jj_la1_1;
	static private int[] jj_la1_2;
	static private int[] jj_la1_3;
	static private int[] jj_la1_4;
	static {
		jj_la1_0();
		jj_la1_1();
		jj_la1_2();
		jj_la1_3();
		jj_la1_4();
	}
	private static void jj_la1_0() {
		jj_la1_0 =
			new int[] { 0x0, 0x140000, 0x140000, 0x0, 0x400000, 0x100000,
					0x404000, 0x4000, 0x140000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x100000, 0x0, 0x0, 0x100000, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x800000, 0x4040000, 0x4040000, 0x0, 0x200000,
					0x0, 0x0, 0x200000, 0x4000, 0x0, 0x800000, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x140000, 0x140000, 0x400000, 0x4000000,
					0x800000, 0x4000000, 0x0, 0x0, 0x0, 0x4000, 0x800000,
					0x4000000, 0x100000, 0x0, 0x140000, 0x140000, 0x10000, 0x0,
					0x50000, 0x100000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x200000, 0x604000, 0x800000, 0x800000, 0x2000000,
					0x4000000, 0x800000, 0x50000, 0x10000, 0x150000, 0x50000,
					0x800000, 0x800000, 0x404000, 0x0, 0x0, 0x0, 0x400000, 0x0,
					0x0, 0x0, 0x0, 0x2000000, 0xfc000000, 0xfc000000,
					0x1000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x110000, 0x100000, 0x10000,
					0x0, 0x50000, 0x0, 0x40000, 0x100000, 0x800000, 0x0, 0x0,
					0xfc850000, 0x800000, };
	}
	private static void jj_la1_1() {
		jj_la1_1 =
			new int[] { 0x0, 0x2100200, 0x2100200, 0x0, 0x0, 0x100200, 0x0,
					0x0, 0x2100200, 0x0, 0x80000000, 0x0, 0x80000000, 0x0,
					0x80000000, 0x0, 0x1000, 0x0, 0x1000, 0x1000, 0x0, 0x1000,
					0x0, 0x0, 0x80000000, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x1000, 0x0, 0x2100200, 0x2100200, 0x0, 0x0, 0x0, 0x0,
					0x100200, 0x100200, 0x0, 0x0, 0x0, 0x0, 0x100200, 0x0,
					0x2000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x100200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x1f, 0x1f, 0x0, 0x20, 0x40, 0x80, 0x100,
					0xc00, 0xc00, 0xf000, 0x30000, 0x30000, 0xc0000, 0x700000,
					0x60000000, 0x60000000, 0x1800000, 0x0, 0x100200, 0x0, 0x0,
					0x61c0200, 0x19800000, 0x2000000, 0x0, 0x2000000, 0x0, 0x0,
					0x100200, 0x57ffffff, 0x0, };
	}
	private static void jj_la1_2() {
		jj_la1_2 =
			new int[] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000,
					0x84049010, 0x800, 0x84049010, 0x800, 0x84049010,
					0x30182208, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
					0x84001000, 0x84001000, 0x30182208, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c00000, 0x0,
					0x1c00000, 0x1c00000, 0x0, 0x1c00000, 0x0, 0x0, 0x1c00000,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000, 0x0, 0x40000,
					0x40000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x8030021, 0x4100, 0x42, 0x20000,
					0x0, 0x4100, 0x8010021, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x40000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x200080, 0x0, };
	}
	private static void jj_la1_3() {
		jj_la1_3 =
			new int[] { 0x8, 0x2000, 0x2000, 0x8, 0x0, 0x2000, 0x0, 0x0,
					0x2000, 0x0, 0xa40, 0x83, 0xa40, 0x83, 0xa40, 0x500, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x2000, 0x800, 0x0, 0x40, 0x500,
					0x0, 0x0, 0x0, 0x83, 0x0, 0x0, 0x83, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x200, 0x200, 0x200, 0x0, 0x0, 0x2000, 0x2000, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0,
					0x800, 0x2000, 0x2000, 0x0, 0x10000, 0x0, 0x2000, 0x10000,
					0x0, 0x200, 0x200, 0x200, 0x8, 0x10000, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10024,
					0x1000, 0x0, 0x4, 0x0, 0x1000, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000,
					0x10, 0xfffee000, 0x0, 0xfffec000, 0x0, 0x0, 0x0, };
	}
	private static void jj_la1_4() {
		jj_la1_4 =
			new int[] { 0x0, 0x4, 0x4, 0x0, 0x0, 0x4, 0x0, 0x0, 0x4, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x4, 0x0, 0x4,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0,
					0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x4, 0x0, 0x4,
					0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x2, 0x2, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
					0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4, 0x1,
					0x4, 0x0, 0x0, 0x0, 0x0, 0x0, };
	}
	static final private JJCalls[] jj_2_rtns = new JJCalls[138];
	static private boolean jj_rescan = false;
	static private int jj_gc = 0;

	public CPPParser(java.io.InputStream stream) {
		this(stream, null);
	}
	public CPPParser(java.io.InputStream stream, String encoding) {
		if (jj_initialized_once) {
			System.out
				.println("ERROR: Second call to constructor of static parser.  You must");
			System.out
				.println("       either use ReInit() or set the JavaCC option STATIC to false");
			System.out.println("       during parser generation.");
			throw new Error();
		}
		jj_initialized_once = true;
		try {
			jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1);
		}
		catch (java.io.UnsupportedEncodingException e) {
			throw new RuntimeException(e);
		}
		token_source = new CPPParserTokenManager(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 125; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	static public void ReInit(java.io.InputStream stream) {
		ReInit(stream, null);
	}
	static public void ReInit(java.io.InputStream stream, String encoding) {
		try {
			jj_input_stream.ReInit(stream, encoding, 1, 1);
		}
		catch (java.io.UnsupportedEncodingException e) {
			throw new RuntimeException(e);
		}
		CPPParserTokenManager.ReInit(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 125; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public CPPParser(java.io.Reader stream) {
		if (jj_initialized_once) {
			System.out
				.println("ERROR: Second call to constructor of static parser.  You must");
			System.out
				.println("       either use ReInit() or set the JavaCC option STATIC to false");
			System.out.println("       during parser generation.");
			throw new Error();
		}
		jj_initialized_once = true;
		jj_input_stream = new SimpleCharStream(stream, 1, 1);
		token_source = new CPPParserTokenManager(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 125; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	static public void ReInit(java.io.Reader stream) {
		jj_input_stream.ReInit(stream, 1, 1);
		CPPParserTokenManager.ReInit(jj_input_stream);
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 125; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public CPPParser(CPPParserTokenManager tm) {
		if (jj_initialized_once) {
			System.out
				.println("ERROR: Second call to constructor of static parser.  You must");
			System.out
				.println("       either use ReInit() or set the JavaCC option STATIC to false");
			System.out.println("       during parser generation.");
			throw new Error();
		}
		jj_initialized_once = true;
		token_source = tm;
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 125; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	public void ReInit(CPPParserTokenManager tm) {
		token_source = tm;
		token = new Token();
		jj_ntk = -1;
		jj_gen = 0;
		for (int i = 0; i < 125; i++)
			jj_la1[i] = -1;
		for (int i = 0; i < jj_2_rtns.length; i++)
			jj_2_rtns[i] = new JJCalls();
	}

	static final private Token jj_consume_token(int kind) throws ParseException {
		Token oldToken;
		if ((oldToken = token).next != null)
			token = token.next;
		else
			token = token.next = CPPParserTokenManager.getNextToken();
		jj_ntk = -1;
		if (token.kind == kind) {
			jj_gen++;
			if (++jj_gc > 100) {
				jj_gc = 0;
				for (int i = 0; i < jj_2_rtns.length; i++) {
					JJCalls c = jj_2_rtns[i];
					while (c != null) {
						if (c.gen < jj_gen)
							c.first = null;
						c = c.next;
					}
				}
			}
			return token;
		}
		token = oldToken;
		jj_kind = kind;
		throw generateParseException();
	}

	static private final class LookaheadSuccess extends java.lang.Error {

		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
	}
	static final private LookaheadSuccess jj_ls = new LookaheadSuccess();
	static final private boolean jj_scan_token(int kind) {
		if (jj_scanpos == jj_lastpos) {
			jj_la--;
			if (jj_scanpos.next == null) {
				jj_lastpos =
					jj_scanpos =
						jj_scanpos.next = CPPParserTokenManager.getNextToken();
			}
			else {
				jj_lastpos = jj_scanpos = jj_scanpos.next;
			}
		}
		else {
			jj_scanpos = jj_scanpos.next;
		}
		if (jj_rescan) {
			int i = 0;
			Token tok = token;
			while (tok != null && tok != jj_scanpos) {
				i++;
				tok = tok.next;
			}
			if (tok != null)
				jj_add_error_token(kind, i);
		}
		if (jj_scanpos.kind != kind)
			return true;
		if (jj_la == 0 && jj_scanpos == jj_lastpos)
			throw jj_ls;
		return false;
	}

	static final public Token getNextToken() {
		if (token.next != null)
			token = token.next;
		else
			token = token.next = CPPParserTokenManager.getNextToken();
		jj_ntk = -1;
		jj_gen++;
		return token;
	}

	static final public Token getToken(int index) {
		Token t = lookingAhead ? jj_scanpos : token;
		for (int i = 0; i < index; i++) {
			if (t.next != null)
				t = t.next;
			else
				t = t.next = CPPParserTokenManager.getNextToken();
		}
		return t;
	}

	static final private int jj_ntk() {
		if ((jj_nt = token.next) == null)
			return (jj_ntk =
				(token.next = CPPParserTokenManager.getNextToken()).kind);
		else
			return (jj_ntk = jj_nt.kind);
	}

	static private java.util.Vector jj_expentries = new java.util.Vector();
	static private int[] jj_expentry;
	static private int jj_kind = -1;
	static private int[] jj_lasttokens = new int[100];
	static private int jj_endpos;

	static private void jj_add_error_token(int kind, int pos) {
		if (pos >= 100)
			return;
		if (pos == jj_endpos + 1) {
			jj_lasttokens[jj_endpos++] = kind;
		}
		else if (jj_endpos != 0) {
			jj_expentry = new int[jj_endpos];
			for (int i = 0; i < jj_endpos; i++) {
				jj_expentry[i] = jj_lasttokens[i];
			}
			boolean exists = false;
			for (java.util.Enumeration e = jj_expentries.elements(); e
				.hasMoreElements();) {
				int[] oldentry = (int[]) (e.nextElement());
				if (oldentry.length == jj_expentry.length) {
					exists = true;
					for (int i = 0; i < jj_expentry.length; i++) {
						if (oldentry[i] != jj_expentry[i]) {
							exists = false;
							break;
						}
					}
					if (exists)
						break;
				}
			}
			if (!exists)
				jj_expentries.addElement(jj_expentry);
			if (pos != 0)
				jj_lasttokens[(jj_endpos = pos) - 1] = kind;
		}
	}

	static public ParseException generateParseException() {
		jj_expentries.removeAllElements();
		boolean[] la1tokens = new boolean[131];
		for (int i = 0; i < 131; i++) {
			la1tokens[i] = false;
		}
		if (jj_kind >= 0) {
			la1tokens[jj_kind] = true;
			jj_kind = -1;
		}
		for (int i = 0; i < 125; i++) {
			if (jj_la1[i] == jj_gen) {
				for (int j = 0; j < 32; j++) {
					if ((jj_la1_0[i] & (1 << j)) != 0) {
						la1tokens[j] = true;
					}
					if ((jj_la1_1[i] & (1 << j)) != 0) {
						la1tokens[32 + j] = true;
					}
					if ((jj_la1_2[i] & (1 << j)) != 0) {
						la1tokens[64 + j] = true;
					}
					if ((jj_la1_3[i] & (1 << j)) != 0) {
						la1tokens[96 + j] = true;
					}
					if ((jj_la1_4[i] & (1 << j)) != 0) {
						la1tokens[128 + j] = true;
					}
				}
			}
		}
		for (int i = 0; i < 131; i++) {
			if (la1tokens[i]) {
				jj_expentry = new int[1];
				jj_expentry[0] = i;
				jj_expentries.addElement(jj_expentry);
			}
		}
		jj_endpos = 0;
		jj_rescan_token();
		jj_add_error_token(0, 0);
		int[][] exptokseq = new int[jj_expentries.size()][];
		for (int i = 0; i < jj_expentries.size(); i++) {
			exptokseq[i] = (int[]) jj_expentries.elementAt(i);
		}
		return new ParseException(token, exptokseq, tokenImage);
	}

	static final public void enable_tracing() {
	}

	static final public void disable_tracing() {
	}

	static final private void jj_rescan_token() {
		jj_rescan = true;
		for (int i = 0; i < 138; i++) {
			try {
				JJCalls p = jj_2_rtns[i];
				do {
					if (p.gen > jj_gen) {
						jj_la = p.arg;
						jj_lastpos = jj_scanpos = p.first;
						switch (i) {
							case 0 :
								jj_3_1();
								break;
							case 1 :
								jj_3_2();
								break;
							case 2 :
								jj_3_3();
								break;
							case 3 :
								jj_3_4();
								break;
							case 4 :
								jj_3_5();
								break;
							case 5 :
								jj_3_6();
								break;
							case 6 :
								jj_3_7();
								break;
							case 7 :
								jj_3_8();
								break;
							case 8 :
								jj_3_9();
								break;
							case 9 :
								jj_3_10();
								break;
							case 10 :
								jj_3_11();
								break;
							case 11 :
								jj_3_12();
								break;
							case 12 :
								jj_3_13();
								break;
							case 13 :
								jj_3_14();
								break;
							case 14 :
								jj_3_15();
								break;
							case 15 :
								jj_3_16();
								break;
							case 16 :
								jj_3_17();
								break;
							case 17 :
								jj_3_18();
								break;
							case 18 :
								jj_3_19();
								break;
							case 19 :
								jj_3_20();
								break;
							case 20 :
								jj_3_21();
								break;
							case 21 :
								jj_3_22();
								break;
							case 22 :
								jj_3_23();
								break;
							case 23 :
								jj_3_24();
								break;
							case 24 :
								jj_3_25();
								break;
							case 25 :
								jj_3_26();
								break;
							case 26 :
								jj_3_27();
								break;
							case 27 :
								jj_3_28();
								break;
							case 28 :
								jj_3_29();
								break;
							case 29 :
								jj_3_30();
								break;
							case 30 :
								jj_3_31();
								break;
							case 31 :
								jj_3_32();
								break;
							case 32 :
								jj_3_33();
								break;
							case 33 :
								jj_3_34();
								break;
							case 34 :
								jj_3_35();
								break;
							case 35 :
								jj_3_36();
								break;
							case 36 :
								jj_3_37();
								break;
							case 37 :
								jj_3_38();
								break;
							case 38 :
								jj_3_39();
								break;
							case 39 :
								jj_3_40();
								break;
							case 40 :
								jj_3_41();
								break;
							case 41 :
								jj_3_42();
								break;
							case 42 :
								jj_3_43();
								break;
							case 43 :
								jj_3_44();
								break;
							case 44 :
								jj_3_45();
								break;
							case 45 :
								jj_3_46();
								break;
							case 46 :
								jj_3_47();
								break;
							case 47 :
								jj_3_48();
								break;
							case 48 :
								jj_3_49();
								break;
							case 49 :
								jj_3_50();
								break;
							case 50 :
								jj_3_51();
								break;
							case 51 :
								jj_3_52();
								break;
							case 52 :
								jj_3_53();
								break;
							case 53 :
								jj_3_54();
								break;
							case 54 :
								jj_3_55();
								break;
							case 55 :
								jj_3_56();
								break;
							case 56 :
								jj_3_57();
								break;
							case 57 :
								jj_3_58();
								break;
							case 58 :
								jj_3_59();
								break;
							case 59 :
								jj_3_60();
								break;
							case 60 :
								jj_3_61();
								break;
							case 61 :
								jj_3_62();
								break;
							case 62 :
								jj_3_63();
								break;
							case 63 :
								jj_3_64();
								break;
							case 64 :
								jj_3_65();
								break;
							case 65 :
								jj_3_66();
								break;
							case 66 :
								jj_3_67();
								break;
							case 67 :
								jj_3_68();
								break;
							case 68 :
								jj_3_69();
								break;
							case 69 :
								jj_3_70();
								break;
							case 70 :
								jj_3_71();
								break;
							case 71 :
								jj_3_72();
								break;
							case 72 :
								jj_3_73();
								break;
							case 73 :
								jj_3_74();
								break;
							case 74 :
								jj_3_75();
								break;
							case 75 :
								jj_3_76();
								break;
							case 76 :
								jj_3_77();
								break;
							case 77 :
								jj_3_78();
								break;
							case 78 :
								jj_3_79();
								break;
							case 79 :
								jj_3_80();
								break;
							case 80 :
								jj_3_81();
								break;
							case 81 :
								jj_3_82();
								break;
							case 82 :
								jj_3_83();
								break;
							case 83 :
								jj_3_84();
								break;
							case 84 :
								jj_3_85();
								break;
							case 85 :
								jj_3_86();
								break;
							case 86 :
								jj_3_87();
								break;
							case 87 :
								jj_3_88();
								break;
							case 88 :
								jj_3_89();
								break;
							case 89 :
								jj_3_90();
								break;
							case 90 :
								jj_3_91();
								break;
							case 91 :
								jj_3_92();
								break;
							case 92 :
								jj_3_93();
								break;
							case 93 :
								jj_3_94();
								break;
							case 94 :
								jj_3_95();
								break;
							case 95 :
								jj_3_96();
								break;
							case 96 :
								jj_3_97();
								break;
							case 97 :
								jj_3_98();
								break;
							case 98 :
								jj_3_99();
								break;
							case 99 :
								jj_3_100();
								break;
							case 100 :
								jj_3_101();
								break;
							case 101 :
								jj_3_102();
								break;
							case 102 :
								jj_3_103();
								break;
							case 103 :
								jj_3_104();
								break;
							case 104 :
								jj_3_105();
								break;
							case 105 :
								jj_3_106();
								break;
							case 106 :
								jj_3_107();
								break;
							case 107 :
								jj_3_108();
								break;
							case 108 :
								jj_3_109();
								break;
							case 109 :
								jj_3_110();
								break;
							case 110 :
								jj_3_111();
								break;
							case 111 :
								jj_3_112();
								break;
							case 112 :
								jj_3_113();
								break;
							case 113 :
								jj_3_114();
								break;
							case 114 :
								jj_3_115();
								break;
							case 115 :
								jj_3_116();
								break;
							case 116 :
								jj_3_117();
								break;
							case 117 :
								jj_3_118();
								break;
							case 118 :
								jj_3_119();
								break;
							case 119 :
								jj_3_120();
								break;
							case 120 :
								jj_3_121();
								break;
							case 121 :
								jj_3_122();
								break;
							case 122 :
								jj_3_123();
								break;
							case 123 :
								jj_3_124();
								break;
							case 124 :
								jj_3_125();
								break;
							case 125 :
								jj_3_126();
								break;
							case 126 :
								jj_3_127();
								break;
							case 127 :
								jj_3_128();
								break;
							case 128 :
								jj_3_129();
								break;
							case 129 :
								jj_3_130();
								break;
							case 130 :
								jj_3_131();
								break;
							case 131 :
								jj_3_132();
								break;
							case 132 :
								jj_3_133();
								break;
							case 133 :
								jj_3_134();
								break;
							case 134 :
								jj_3_135();
								break;
							case 135 :
								jj_3_136();
								break;
							case 136 :
								jj_3_137();
								break;
							case 137 :
								jj_3_138();
								break;
						}
					}
					p = p.next;
				}
				while (p != null);
			}
			catch (LookaheadSuccess ls) {
			}
		}
		jj_rescan = false;
	}

	static final private void jj_save(int index, int xla) {
		JJCalls p = jj_2_rtns[index];
		while (p.gen > jj_gen) {
			if (p.next == null) {
				p = p.next = new JJCalls();
				break;
			}
			p = p.next;
		}
		p.gen = jj_gen + xla - jj_la;
		p.first = token;
		p.arg = xla;
	}

	static final class JJCalls {
		int gen;
		Token first;
		int arg;
		JJCalls next;
	}

}
