All Downloads are FREE. Search and download functionalities are using the official Maven repository.

yale.compiler.compiler.0.9.4.source-code.CmcEmitter.tmp Maven / Gradle / Ivy

There is a newer version: 0.9.10
Show newest version

/*  Generated Tue Nov 13 22:48:17 PST 2018 by JBurg version Set in build.properties */

package org.apache.royale.compiler.internal.as.codegen;


    import org.apache.royale.compiler.problems.ICompilerProblem;
    import org.apache.royale.compiler.problems.*;
    import org.apache.royale.compiler.exceptions.BURMAbortException;

    import static org.apache.royale.abc.ABCConstants.*;

//    import org.apache.royale.abc.semantics.Label;
    import org.apache.royale.abc.semantics.Name;
    import org.apache.royale.abc.semantics.Namespace;
    import org.apache.royale.abc.semantics.ECMASupport;
    import org.apache.royale.abc.instructionlist.InstructionList;

//    import org.apache.royale.compiler.constants.IASLanguageConstants;

    import org.apache.royale.compiler.tree.ASTNodeID;
    import static org.apache.royale.compiler.tree.ASTNodeID.*;

    import org.apache.royale.compiler.internal.semantics.SemanticUtils;

    import org.apache.royale.compiler.tree.as.IASNode;
//    import org.apache.royale.compiler.tree.as.ITryNode;

@SuppressWarnings({"rawtypes", "unchecked", "unused"})
public class CmcEmitter
	
{
	java.util.Stack __reducedValues = new java.util.Stack();

    static final boolean NEED_VALUE = true;
    static final boolean DISCARD_VALUE = false;


    /**
     *  The reducer has all the implementation
     *  logic for the rewrite; the BURM constructed
     *  by this specification drives that logic.
     */
    ABCGeneratingReducer reducer;

    /**
     *  Delegate calls to pushNumericConstant to the reducer.
     *  This routine is called from other parts of the code generator,
     *  so it's necessary to keep this layer of indirection.
     */
    public static void pushNumericConstant(long value, InstructionList result_list)
    {
        ABCGeneratingReducer.pushNumericConstant(value, result_list);
    }

    /*
     *  **  Cost functions  **
     */


    /**
     *  @return "feasible" if the reducer can reduce this to a dotted name.
     */
    int isDottedName(IASNode iNode)
    {
       return reducer.isDottedName(iNode);
    }

    /**
     *  @return "feasible" if the reducer can reduce this to a package name.
     */
    int isPackageName(IASNode iNode)
    {
       return reducer.isPackageName(iNode);
    }

    /**
     *  @return "feasible" if this node's qualifier is a compile-time constant.
     */
    int qualifierIsCompileTimeConstant(IASNode iNode)
    {
       return reducer.qualifierIsCompileTimeConstant(iNode);
    }

    /**
     *  @return "feasible" if this node can be resolved to a compile-time constant.
     */
    int isCompileTimeConstant(IASNode iNode)
    {
       return reducer.isCompileTimeConstant(iNode);
    }

    /**
     *  @return "feasible" if this node is for 'new Array()'.
     */
    int isEmptyArrayConstructor(IASNode iNode)
    {
        return reducer.isEmptyArrayConstructor(iNode);
    }

    /**
     *  @return "feasible" if this node is for 'new Object()'.
     */
    int isEmptyObjectConstructor(IASNode iNode)
    {
        return reducer.isEmptyObjectConstructor(iNode);
    }
    
    /**
     *  @return "feasible" if this node is "super(this)".
     */
    int isSuperThisForFieldAccess(IASNode iNode)
    {
        return SemanticUtils.isSuperThisForFieldAccess(iNode);
    }

    /**
     *  recordError is a convenience method for error reductions;
     *  it adds a problem to the current set of problems and
     *  returns an empty InstructionList.
     *  @return an empty InstructionList.
     */
    InstructionList recordError(ICompilerProblem problem)
    {
        reducer.getProblems().add(problem);
        return new InstructionList();
    }

	
	public static final int __non_resolving_identifier_NT = 1;
	public static final int __type_name_NT = 2;
	public static final int __integer_constant_NT = 3;
	public static final int __boolean_literal_NT = 4;
	public static final int __finally_clause_NT = 5;
	public static final int __literal_NT = 6;
	public static final int __conditionalJump_NT = 7;
	public static final int __decl_name_NT = 8;
	public static final int __runtime_name_expression_NT = 9;
	public static final int __double_constant_NT = 10;
	public static final int __function_NT = 11;
	public static final int __parameter_NT = 12;
	public static final int __statement_NT = 13;
	public static final int __return_type_name_NT = 14;
	public static final int __object_literal_NT = 15;
	public static final int __catch_block_NT = 16;
	public static final int __boolean_constant_NT = 17;
	public static final int __expression_NT = 18;
	public static final int __numeric_constant_NT = 19;
	public static final int __type_param_expression_NT = 20;
	public static final int __required_constant_value_NT = 21;
	public static final int __object_literal_element_NT = 22;
	public static final int __import_name_NT = 23;
	public static final int __void_expression_NT = 24;
	public static final int __conditionalElements_NT = 25;
	public static final int __comparison_expression_NT = 26;
	public static final int __constant_value_NT = 27;
	public static final int __e4x_literal_NT = 28;
	public static final int __vector_literal_NT = 29;
	public static final int __new_type_name_NT = 30;
	public static final int __qualifiedNamePart_NT = 31;
	public static final int __string_constant_NT = 32;
	public static final int __name_NT = 33;
	public static final int __parameterList_NT = 34;
	public static final int __mxml_data_binding_setter_expression_NT = 35;
	public static final int __var_decl_NT = 36;
	public static final int __dottedNamePart_NT = 37;
	public static final int __array_literal_NT = 38;
	public static final int __uint_constant_NT = 39;
	public static final int nStates = 39;

	private static final JBurgSubgoal[][] ___subgoals_by_rule = 
	{
		null,
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__boolean_constant_NT,false,0,0),
			new JBurgSubgoal(__boolean_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__boolean_constant_NT,false,0,0),
			new JBurgSubgoal(__boolean_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__boolean_constant_NT,false,0,0),
			new JBurgSubgoal(__boolean_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__boolean_constant_NT,false,0,0),
			new JBurgSubgoal(__boolean_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__boolean_constant_NT,false,0,0),
			new JBurgSubgoal(__boolean_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__boolean_constant_NT,false,0,0),
			new JBurgSubgoal(__boolean_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
			new JBurgSubgoal(__numeric_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__constant_value_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__boolean_constant_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__numeric_constant_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__string_constant_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
		},
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		{
			new JBurgSubgoal(__statement_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,true,0,0),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1,1),
			new JBurgSubgoal(__expression_NT,true,2,0,0),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,true,1,0,0),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,true,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,true,0,0),
		},
		{
			new JBurgSubgoal(__e4x_literal_NT,true,0,0),
		},
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__function_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,true,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__statement_NT,true,0),
		},
		{
			new JBurgSubgoal(__statement_NT,true,0),
		},
		null,
		null,
		{
			new JBurgSubgoal(__name_NT,false,0,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0,0),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__void_expression_NT,true,1),
		},
		{
			new JBurgSubgoal(__statement_NT,true,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
			new JBurgSubgoal(__statement_NT,true,1),
		},
		null,
		{
			new JBurgSubgoal(__void_expression_NT,false,0,0,0),
			new JBurgSubgoal(__conditionalJump_NT,false,0,0,1),
			new JBurgSubgoal(__void_expression_NT,false,0,0,2),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__runtime_name_expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__statement_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__dottedNamePart_NT,false,0,0),
			new JBurgSubgoal(__dottedNamePart_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__dottedNamePart_NT,false,0,0),
			new JBurgSubgoal(__dottedNamePart_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__dottedNamePart_NT,false,0,0),
			new JBurgSubgoal(__dottedNamePart_NT,false,0,1),
		},
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		null,
		null,
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__var_decl_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0,0,0,1),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__var_decl_NT,false,0,0,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__dottedNamePart_NT,false,0,0),
			new JBurgSubgoal(__dottedNamePart_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__dottedNamePart_NT,false,0,0),
			new JBurgSubgoal(__dottedNamePart_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__dottedNamePart_NT,false,0,0),
			new JBurgSubgoal(__dottedNamePart_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0,1),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__void_expression_NT,true,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__statement_NT,false,0,0,1),
			new JBurgSubgoal(__conditionalElements_NT,true,1),
		},
		{
			new JBurgSubgoal(__import_name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		null,
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		null,
		null,
		{
			new JBurgSubgoal(__non_resolving_identifier_NT,false,0,0),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__statement_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__statement_NT,true,0),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		null,
		null,
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__string_constant_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,1),
			new JBurgSubgoal(__expression_NT,true,0,2),
		},
		{
			new JBurgSubgoal(__new_type_name_NT,false,0,1),
			new JBurgSubgoal(__expression_NT,true,0,2),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,1,1),
			new JBurgSubgoal(__expression_NT,true,0,2),
		},
		{
			new JBurgSubgoal(__vector_literal_NT,false,0,1),
		},
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		{
			new JBurgSubgoal(__object_literal_element_NT,true,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
			new JBurgSubgoal(__required_constant_value_NT,false,0,2),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__type_param_expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__parameter_NT,true,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__expression_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
			new JBurgSubgoal(__name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0),
			new JBurgSubgoal(__expression_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0),
			new JBurgSubgoal(__name_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0),
			new JBurgSubgoal(__expression_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__name_NT,false,0,1,0),
			new JBurgSubgoal(__expression_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__dottedNamePart_NT,false,0,0),
			new JBurgSubgoal(__dottedNamePart_NT,false,0,1),
		},
		null,
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
		},
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0,0),
		},
		{
			new JBurgSubgoal(__void_expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		null,
		null,
		null,
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__statement_NT,true,1),
		},
		{
			new JBurgSubgoal(__statement_NT,true,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__conditionalElements_NT,true,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1),
			new JBurgSubgoal(__expression_NT,false,0,2),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__statement_NT,false,0,0),
			new JBurgSubgoal(__finally_clause_NT,false,0,1,0),
			new JBurgSubgoal(__catch_block_NT,true,2),
		},
		{
			new JBurgSubgoal(__statement_NT,false,0,0),
			new JBurgSubgoal(__catch_block_NT,true,1),
		},
		{
			new JBurgSubgoal(__statement_NT,false,0,0),
			new JBurgSubgoal(__finally_clause_NT,false,0,1,0),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
			new JBurgSubgoal(__var_decl_NT,true,2),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
			new JBurgSubgoal(__expression_NT,false,0,2),
			new JBurgSubgoal(__var_decl_NT,true,3),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__return_type_name_NT,false,0,2),
			new JBurgSubgoal(__statement_NT,false,0,3),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__return_type_name_NT,false,0,2),
			new JBurgSubgoal(__statement_NT,false,0,3),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,0,1),
			new JBurgSubgoal(__return_type_name_NT,false,0,0,2),
			new JBurgSubgoal(__statement_NT,false,0,0,3),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__return_type_name_NT,false,0,2),
			new JBurgSubgoal(__statement_NT,false,0,3),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__return_type_name_NT,false,0,2),
			new JBurgSubgoal(__statement_NT,false,0,3),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
			new JBurgSubgoal(__var_decl_NT,true,2),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
			new JBurgSubgoal(__constant_value_NT,false,0,2),
			new JBurgSubgoal(__var_decl_NT,true,3),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,1),
			new JBurgSubgoal(__expression_NT,false,0,2),
			new JBurgSubgoal(__var_decl_NT,true,3),
		},
		{
			new JBurgSubgoal(__decl_name_NT,false,0,0,0),
			new JBurgSubgoal(__type_name_NT,false,0,0,1),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__statement_NT,false,0,2),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__statement_NT,false,0,2),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,0,1),
			new JBurgSubgoal(__statement_NT,false,0,0,2),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__statement_NT,false,0,2),
		},
		{
			new JBurgSubgoal(__parameterList_NT,false,0,1),
			new JBurgSubgoal(__statement_NT,false,0,2),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,false,0,1,1),
		},
		{
			new JBurgSubgoal(__name_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__var_decl_NT,true,0),
		},
		{
			new JBurgSubgoal(__type_name_NT,false,0,0),
			new JBurgSubgoal(__expression_NT,true,0,1),
		},
		null,
		null,
		null,
		{
			new JBurgSubgoal(__constant_value_NT,false,0,0),
		},
		null,
		null,
		null,
		null,
		null,
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		{
			new JBurgSubgoal(__expression_NT,false,0,0),
			new JBurgSubgoal(__statement_NT,false,0,1),
		},
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
	};


	public static final int ERROR_TRAP = 268435456;
	
	public JBurgAnnotation label( IASNode to_be_labelled)
	{
		JBurgAnnotation result = null;

		int i;

		int arity;

		result = this.getJBurgAnnotation(to_be_labelled);
		arity = SemanticUtils.getChildCount(to_be_labelled);
		i = 0;
		while ( ( arity > i ) )
		{
			result.addChild(this.label(((IASNode)SemanticUtils.getNthChild(to_be_labelled, i))));
			i =  (i + 1) ;
		}
		return(result);
	}

	/* void_expression = expression { ... } */
	
	private InstructionList action_1( IASNode __p) throws java.lang.Exception
	{
		InstructionList expression = (InstructionList)__reducedValues.pop();
		return reducer.transform_expression_to_void_expression(__p,expression);
	}

	/* expression = Op_AssignId(expression, expression) */
	
	private InstructionList action_2( IASNode __p) throws java.lang.Exception
	{
		InstructionList rvalue = (InstructionList)__reducedValues.pop();
		InstructionList non_lvalue = (InstructionList)__reducedValues.pop();
		return reducer.error_reduce_Op_AssignId(__p,non_lvalue,rvalue);
	}

	/* conditionalJump = expression { ... } */
	
	private InstructionList action_3( IASNode __p) throws java.lang.Exception
	{
		InstructionList expression = (InstructionList)__reducedValues.pop();
		return reducer.transform_expression_to_conditionalJump(__p,expression);
	}

	/* type_name = name { ... } */
	
	private Binding action_4( IASNode __p) throws java.lang.Exception
	{
		Binding name = (Binding)__reducedValues.pop();
		return reducer.reduce_nameToTypeName(name,true);
	}

	/* new_type_name = type_name { ... } */
	
	private Binding action_5( IASNode __p) throws java.lang.Exception
	{
		Binding type_name = (Binding)__reducedValues.pop();
		return reducer.reduce_nameToTypeName(type_name,false);
	}

	/* type_param_expression = name { ... } */
	
	private InstructionList action_6( IASNode __p) throws java.lang.Exception
	{
		Binding name = (Binding)__reducedValues.pop();
		return reducer.reduce_typeNameParameter(__p,name);
	}

	/* expression = name { ... } */
	
	private InstructionList action_7( IASNode __p) throws java.lang.Exception
	{
		Binding name = (Binding)__reducedValues.pop();
		return reducer.transform_name_to_expression(__p,name);
	}

	/* expression = runtime_name_expression { ... } */
	
	private InstructionList action_8( IASNode __p) throws java.lang.Exception
	{
		ABCGeneratingReducer.RuntimeMultiname runtime_name_expression = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.transform_runtime_name_expression(__p,runtime_name_expression);
	}

	/* expression = string_constant { ... } */
	
	private InstructionList action_9( IASNode __p) throws java.lang.Exception
	{
		String string_constant = (String)__reducedValues.pop();
		return reducer.transform_string_constant(__p,string_constant);
	}

	/* expression = integer_constant { ... } */
	
	private InstructionList action_10( IASNode __p) throws java.lang.Exception
	{
		Integer integer_constant = (Integer)__reducedValues.pop();
		return reducer.transform_integer_constant(__p,integer_constant);
	}

	/* expression = uint_constant { ... } */
	
	private InstructionList action_11( IASNode __p) throws java.lang.Exception
	{
		Long uint_constant = (Long)__reducedValues.pop();
		return reducer.transform_uint_constant(__p,uint_constant);
	}

	/* expression = boolean_constant { ... } */
	
	private InstructionList action_12( IASNode __p) throws java.lang.Exception
	{
		Boolean boolean_constant = (Boolean)__reducedValues.pop();
		return reducer.transform_boolean_constant(__p,boolean_constant);
	}

	/* numeric_constant = Op_MultiplyID(numeric_constant, numeric_constant) */
	
	private Number action_13( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_multiply);
		    return l.doubleValue() * r.doubleValue();
		}
	}

	/* numeric_constant = Op_MultiplyID(constant_value, constant_value) */
	
	private Number action_14( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_multiply);
		    return ECMASupport.toNumeric(l).doubleValue() * ECMASupport.toNumeric(r).doubleValue();
		}
	}

	/* numeric_constant = Op_DivideID(numeric_constant, numeric_constant) */
	
	private Number action_15( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_divide);
		    return l.doubleValue() / r.doubleValue();
		}
	}

	/* numeric_constant = Op_DivideID(constant_value, constant_value) */
	
	private Number action_16( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_divide);
		    return ECMASupport.toNumeric(l).doubleValue() / ECMASupport.toNumeric(r).doubleValue();
		}
	}

	/* double_constant = Op_ModuloID(numeric_constant, LiteralIntegerZeroID(void)) */
	
	private Double action_17( IASNode __p) throws java.lang.Exception
	{
		Number l = (Number)__reducedValues.pop();
		{
		    return Double.NaN;
		}
	}

	/* numeric_constant = Op_ModuloID(numeric_constant, numeric_constant) */
	
	private Number action_18( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_modulo);
		    return l.doubleValue() % r.doubleValue();
		}
	}

	/* numeric_constant = Op_ModuloID(constant_value, constant_value) */
	
	private Number action_19( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_modulo);
		    return ECMASupport.toNumeric(l).doubleValue() % ECMASupport.toNumeric(r).doubleValue();
		}
	}

	/* numeric_constant = Op_AddID(numeric_constant, numeric_constant) */
	
	private Number action_20( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_add);
		    return l.doubleValue() + r.doubleValue();
		}
	}

	/* constant_value = Op_AddID(constant_value, constant_value) */
	
	private Object action_21( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		return reducer.reduce_constantAddition(__p,l,r);
	}

	/* string_constant = Op_AddID(string_constant, string_constant) */
	
	private String action_22( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		return reducer.reduce_constantStringConcatenation(__p,l,r);
	}

	/* string_constant = Op_AddID(string_constant, constant_value) */
	
	private String action_23( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		return reducer.reduce_constantStringConcatenation(__p,l,r);
	}

	/* string_constant = Op_AddID(constant_value, string_constant) */
	
	private String action_24( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		return reducer.reduce_constantStringConcatenation(__p,l,r);
	}

	/* numeric_constant = Op_SubtractID(numeric_constant, numeric_constant) */
	
	private Number action_25( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_subtract);
		    return l.doubleValue() - r.doubleValue();
		}
	}

	/* numeric_constant = Op_SubtractID(constant_value, constant_value) */
	
	private Number action_26( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_subtract);
		    return ECMASupport.toNumeric(l).doubleValue() - ECMASupport.toNumeric(r).doubleValue();
		}
	}

	/* integer_constant = Op_LeftShiftID(numeric_constant, numeric_constant) */
	
	private Integer action_27( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_lshift);
		    return ECMASupport.leftShiftOperation(l, r);
		}
	}

	/* integer_constant = Op_LeftShiftID(constant_value, constant_value) */
	
	private Integer action_28( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_lshift);
		    return ECMASupport.leftShiftOperation(ECMASupport.toNumeric(l), ECMASupport.toNumeric(r));
		}
	}

	/* integer_constant = Op_RightShiftID(numeric_constant, numeric_constant) */
	
	private Integer action_29( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_rshift);
		    return ECMASupport.signedRightShiftOperation(l, r);
		}
	}

	/* integer_constant = Op_RightShiftID(constant_value, constant_value) */
	
	private Integer action_30( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_rshift);
		    return ECMASupport.signedRightShiftOperation(ECMASupport.toNumeric(l), ECMASupport.toNumeric(r));
		}
	}

	/* uint_constant = Op_UnsignedRightShift(numeric_constant, numeric_constant) */
	
	private Long action_31( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_urshift);
		    return ECMASupport.unsignedRightShiftOperation(l, r);
		}
	}

	/* uint_constant = Op_UnsignedRightShift(constant_value, constant_value) */
	
	private Long action_32( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_urshift);
		    return ECMASupport.unsignedRightShiftOperation(ECMASupport.toNumeric(l), ECMASupport.toNumeric(r));
		}
	}

	/* integer_constant = Op_BitwiseAndID(numeric_constant, numeric_constant) */
	
	private Integer action_33( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_bitand);
		    return ECMASupport.toInt32(l) & ECMASupport.toInt32(r);
		}
	}

	/* integer_constant = Op_BitwiseAndID(constant_value, constant_value) */
	
	private Integer action_34( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_bitand);
		    return ECMASupport.toInt32(l) & ECMASupport.toInt32(r);
		}
	}

	/* integer_constant = Op_BitwiseOrID(numeric_constant, numeric_constant) */
	
	private Integer action_35( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_bitor);
		    return ECMASupport.toInt32(l) | ECMASupport.toInt32(r);
		}
	}

	/* integer_constant = Op_BitwiseOrID(constant_value, constant_value) */
	
	private Integer action_36( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_bitor);
		    return ECMASupport.toInt32(l) | ECMASupport.toInt32(r);
		}
	}

	/* integer_constant = Op_BitwiseXorID(numeric_constant, numeric_constant) */
	
	private Integer action_37( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_bitxor);
		    return ECMASupport.toInt32(l) ^ ECMASupport.toInt32(r);
		}
	}

	/* integer_constant = Op_BitwiseXorID(constant_value, constant_value) */
	
	private Integer action_38( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		    reducer.checkBinaryOp(__p, OP_bitxor);
		    return ECMASupport.toInt32(l) ^ ECMASupport.toInt32(r);
		}
	}

	/* numeric_constant = Op_SubtractID(numeric_constant) */
	
	private Number action_39( IASNode __p) throws java.lang.Exception
	{
		Number e = (Number)__reducedValues.pop();
		{
		    reducer.checkUnaryOp(__p, OP_negate);
		    return -e.doubleValue();
		}
	}

	/* numeric_constant = Op_SubtractID(constant_value) */
	
	private Number action_40( IASNode __p) throws java.lang.Exception
	{
		Object e = (Object)__reducedValues.pop();
		{
		    reducer.checkUnaryOp(__p, OP_negate);
		    return -(ECMASupport.toNumeric(e).doubleValue());
		}
	}

	/* numeric_constant = Op_AddID(numeric_constant) */
	
	private Number action_41( IASNode __p) throws java.lang.Exception
	{
		Number e = (Number)__reducedValues.pop();
		{
		    reducer.checkUnaryOp(__p, reducer.op_unplus());
		    return e.doubleValue();
		}
	}

	/* numeric_constant = Op_AddID(constant_value) */
	
	private Number action_42( IASNode __p) throws java.lang.Exception
	{
		Object e = (Object)__reducedValues.pop();
		{
		    reducer.checkUnaryOp(__p, reducer.op_unplus());
		    return ECMASupport.toNumeric(e);
		}
	}

	/* integer_constant = Op_BitwiseNotID(numeric_constant) */
	
	private Integer action_43( IASNode __p) throws java.lang.Exception
	{
		Number unary = (Number)__reducedValues.pop();
		{
		    reducer.checkUnaryOp(__p, OP_bitnot);
		    return ~ECMASupport.toInt32(unary);
		}
	}

	/* integer_constant = Op_BitwiseNotID(constant_value) */
	
	private Integer action_44( IASNode __p) throws java.lang.Exception
	{
		Object unary = (Object)__reducedValues.pop();
		{
		    reducer.checkUnaryOp(__p, OP_bitnot);
		    return ~ECMASupport.toInt32(unary);
		}
	}

	/* boolean_constant = Op_LogicalAndID(boolean_constant, boolean_constant) */
	
	private Boolean action_45( IASNode __p) throws java.lang.Exception
	{
		Boolean r = (Boolean)__reducedValues.pop();
		Boolean l = (Boolean)__reducedValues.pop();
		{
		     return l && r;
		 }
	}

	/* numeric_constant = Op_LogicalAndID(numeric_constant, numeric_constant) */
	
	private Number action_46( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		     return ECMASupport.logicalAnd(l, r);
		 }
	}

	/* string_constant = Op_LogicalAndID(string_constant, string_constant) */
	
	private String action_47( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		{
		     return ECMASupport.logicalAnd(l, r);
		 }
	}

	/* constant_value = Op_LogicalAndID(constant_value, constant_value) */
	
	private Object action_48( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		     Boolean lBool = ECMASupport.toBoolean(l);
		     if( !lBool )
		        return l;
		     return r;
		 }
	}

	/* boolean_constant = Op_LogicalOrID(boolean_constant, boolean_constant) */
	
	private Boolean action_49( IASNode __p) throws java.lang.Exception
	{
		Boolean r = (Boolean)__reducedValues.pop();
		Boolean l = (Boolean)__reducedValues.pop();
		{
		     return l || r;
		 }
	}

	/* numeric_constant = Op_LogicalOrID(numeric_constant, numeric_constant) */
	
	private Number action_50( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		     return ECMASupport.logicalOr(l, r);
		 }
	}

	/* string_constant = Op_LogicalOrID(string_constant, string_constant) */
	
	private String action_51( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		{
		     return ECMASupport.logicalOr(l, r);
		 }
	}

	/* constant_value = Op_LogicalOrID(constant_value, constant_value) */
	
	private Object action_52( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		     Boolean lBool = ECMASupport.toBoolean(l);
		     if( lBool )
		        return l;
		     return r;
		 }
	}

	/* boolean_constant = Op_EqualID(boolean_constant, boolean_constant) */
	
	private Boolean action_53( IASNode __p) throws java.lang.Exception
	{
		Boolean r = (Boolean)__reducedValues.pop();
		Boolean l = (Boolean)__reducedValues.pop();
		{
		     return l.equals(r); // can't use == for boxed types
		 }
	}

	/* boolean_constant = Op_EqualID(numeric_constant, numeric_constant) */
	
	private Boolean action_54( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		     return ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_EqualID(string_constant, string_constant) */
	
	private Boolean action_55( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		{
		     return ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_EqualID(constant_value, constant_value) */
	
	private Boolean action_56( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		     return ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_StrictEqualID(boolean_constant, boolean_constant) */
	
	private Boolean action_57( IASNode __p) throws java.lang.Exception
	{
		Boolean r = (Boolean)__reducedValues.pop();
		Boolean l = (Boolean)__reducedValues.pop();
		{
		 					      // for booleans, strict equals is the same as equals
		     return l.equals(r); // can't use == for boxed types
		 }
	}

	/* boolean_constant = Op_StrictEqualID(numeric_constant, numeric_constant) */
	
	private Boolean action_58( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		     // strict equality is the same as equality for numeric numeric_constants
		     return ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_StrictEqualID(string_constant, string_constant) */
	
	private Boolean action_59( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		{
		     // strict equality is the same as equality for string_constants
		     return ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_StrictEqualID(constant_value, constant_value) */
	
	private Boolean action_60( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		     return ECMASupport.strictEquals(l, r);
		 }
	}

	/* boolean_constant = Op_NotEqualID(boolean_constant, boolean_constant) */
	
	private Boolean action_61( IASNode __p) throws java.lang.Exception
	{
		Boolean r = (Boolean)__reducedValues.pop();
		Boolean l = (Boolean)__reducedValues.pop();
		{
		     return !l.equals(r); // can't use == for boxed types
		 }
	}

	/* boolean_constant = Op_NotEqualID(numeric_constant, numeric_constant) */
	
	private Boolean action_62( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		     return !ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_NotEqualID(string_constant, string_constant) */
	
	private Boolean action_63( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		{
		     return !ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_NotEqualID(constant_value, constant_value) */
	
	private Boolean action_64( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		     return !ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_StrictNotEqualID(boolean_constant, boolean_constant) */
	
	private Boolean action_65( IASNode __p) throws java.lang.Exception
	{
		Boolean r = (Boolean)__reducedValues.pop();
		Boolean l = (Boolean)__reducedValues.pop();
		{
		     return !l.equals(r); // can't use == for boxed types
		 }
	}

	/* boolean_constant = Op_StrictNotEqualID(numeric_constant, numeric_constant) */
	
	private Boolean action_66( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		
		     // strict equality is same as equality for numbers
		     return !ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_StrictNotEqualID(string_constant, string_constant) */
	
	private Boolean action_67( IASNode __p) throws java.lang.Exception
	{
		String r = (String)__reducedValues.pop();
		String l = (String)__reducedValues.pop();
		{
		     return !ECMASupport.equals(l, r);
		 }
	}

	/* boolean_constant = Op_StrictNotEqualID(constant_value, constant_value) */
	
	private Boolean action_68( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		      return !ECMASupport.strictEquals(l, r);
		 }
	}

	/* boolean_constant = Op_LessThanID(numeric_constant, numeric_constant) */
	
	private Boolean action_69( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		      return ECMASupport.lessThan(l, r);
		 }
	}

	/* boolean_constant = Op_LessThanID(constant_value, constant_value) */
	
	private Boolean action_70( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		      return ECMASupport.lessThan(l, r);
		 }
	}

	/* boolean_constant = Op_LessThanEqualsID(numeric_constant, numeric_constant) */
	
	private Boolean action_71( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		      return ECMASupport.lessThanEquals(l, r);
		 }
	}

	/* boolean_constant = Op_LessThanEqualsID(constant_value, constant_value) */
	
	private Boolean action_72( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		      return ECMASupport.lessThanEquals(l, r);
		 }
	}

	/* boolean_constant = Op_GreaterThanID(numeric_constant, numeric_constant) */
	
	private Boolean action_73( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		      return ECMASupport.greaterThan(l, r);
		 }
	}

	/* boolean_constant = Op_GreaterThanID(constant_value, constant_value) */
	
	private Boolean action_74( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		      return ECMASupport.greaterThan(l, r);
		 }
	}

	/* boolean_constant = Op_GreaterThanEqualsID(numeric_constant, numeric_constant) */
	
	private Boolean action_75( IASNode __p) throws java.lang.Exception
	{
		Number r = (Number)__reducedValues.pop();
		Number l = (Number)__reducedValues.pop();
		{
		      return ECMASupport.greaterThanEquals(l, r);
		 }
	}

	/* boolean_constant = Op_GreaterThanEqualsID(constant_value, constant_value) */
	
	private Boolean action_76( IASNode __p) throws java.lang.Exception
	{
		Object r = (Object)__reducedValues.pop();
		Object l = (Object)__reducedValues.pop();
		{
		      return ECMASupport.greaterThanEquals(l, r);
		 }
	}

	/* boolean_constant = Op_LogicalNotID(boolean_constant) */
	
	private Boolean action_77( IASNode __p) throws java.lang.Exception
	{
		Boolean b = (Boolean)__reducedValues.pop();
		{
		    return !b;
		}
	}

	/* boolean_constant = Op_LogicalNotID(numeric_constant) */
	
	private Boolean action_78( IASNode __p) throws java.lang.Exception
	{
		Number e = (Number)__reducedValues.pop();
		{
		     return ECMASupport.logicalNot(e);
		}
	}

	/* boolean_constant = Op_LogicalNotID(string_constant) */
	
	private Boolean action_79( IASNode __p) throws java.lang.Exception
	{
		String e = (String)__reducedValues.pop();
		{
		     return ECMASupport.logicalNot(e);
		}
	}

	/* boolean_constant = Op_LogicalNotID(constant_value) */
	
	private Boolean action_80( IASNode __p) throws java.lang.Exception
	{
		Object e = (Object)__reducedValues.pop();
		{
		     return ECMASupport.logicalNot(e);
		}
	}

	/* required_constant_value = expression { ... } */
	
	private Object action_81( IASNode __p) throws java.lang.Exception
	{
		InstructionList expression = (InstructionList)__reducedValues.pop();
		return reducer.transform_expression_to_constant_value(__p,expression);
	}

	/* constant_value = name { ... } */
	
	private Object action_82( IASNode __p) throws java.lang.Exception
	{
		Binding name = (Binding)__reducedValues.pop();
		return reducer.transform_name_to_constant_value(__p);
	}

	/* integer_constant = LiteralIntegerZeroID(void) */
	
	private Integer action_83( IASNode __p) throws java.lang.Exception
	{
		return reducer.getIntegerZeroContent(__p);
	}

	/* uint_constant = LiteralIntegerZeroID(void) */
	
	private Long action_84( IASNode __p) throws java.lang.Exception
	{
		return reducer.getIntegerZeroContentAsLong(__p);
	}

	/* constant_value = string_constant { ... } */
	
	private Object action_85( IASNode __p) throws java.lang.Exception
	{
		String string_constant = (String)__reducedValues.pop();
		return reducer.transform_string_constant_to_constant(__p,string_constant);
	}

	/* constant_value = boolean_constant { ... } */
	
	private Object action_86( IASNode __p) throws java.lang.Exception
	{
		Boolean boolean_constant = (Boolean)__reducedValues.pop();
		return reducer.transform_boolean_constant_to_constant(__p,boolean_constant);
	}

	/* constant_value = numeric_constant { ... } */
	
	private Object action_87( IASNode __p) throws java.lang.Exception
	{
		Number numeric_constant = (Number)__reducedValues.pop();
		return reducer.transform_numeric_constant_to_constant(__p,numeric_constant);
	}

	/* expression = double_constant { ... } */
	
	private InstructionList action_88( IASNode __p) throws java.lang.Exception
	{
		Double double_constant = (Double)__reducedValues.pop();
		return reducer.transform_double_constant(__p,double_constant);
	}

	/* expression = numeric_constant { ... } */
	
	private InstructionList action_89( IASNode __p) throws java.lang.Exception
	{
		Number numeric_constant = (Number)__reducedValues.pop();
		return reducer.transform_numeric_constant(__p,numeric_constant);
	}

	/* expression = constant_value { ... } */
	
	private InstructionList action_90( IASNode __p) throws java.lang.Exception
	{
		Object constant_value = (Object)__reducedValues.pop();
		return reducer.transform_constant_value(__p,constant_value);
	}

	/* expression = non_resolving_identifier { ... } */
	
	private InstructionList action_91( IASNode __p) throws java.lang.Exception
	{
		String non_resolving_identifier = (String)__reducedValues.pop();
		return reducer.transform_non_resolving_identifier(__p,non_resolving_identifier);
	}

	/* boolean_literal = boolean_constant { ... } */
	
	private InstructionList action_92( IASNode __p) throws java.lang.Exception
	{
		Boolean boolean_constant = (Boolean)__reducedValues.pop();
		return reducer.transform_boolean_constant(__p,boolean_constant);
	}

	/* mxml_data_binding_setter_expression = name { ... } */
	
	private InstructionList action_93( IASNode __p) throws java.lang.Exception
	{
		Binding name = (Binding)__reducedValues.pop();
		return reducer.reduceName_to_mxmlDataBindingSetter(__p,name);
	}

	/* mxml_data_binding_setter_expression = runtime_name_expression { ... } */
	
	private InstructionList action_94( IASNode __p) throws java.lang.Exception
	{
		ABCGeneratingReducer.RuntimeMultiname runtime_name_expression = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.reduceRuntimeName_to_mxmlDataBindingSetter(__p,runtime_name_expression);
	}

	/* statement = TryID(statement) */
	
	private InstructionList action_95( IASNode __p) throws java.lang.Exception
	{
		InstructionList only_has_body = (InstructionList)__reducedValues.pop();
		{
		    return recordError(new MissingCatchOrFinallyProblem(__p));
		}
	}

	/* statement = ForLoopID(ContainerID(expression*), statement) */
	
	private InstructionList action_96( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		java.util.Vector wrong_number_of_initializers = (java.util.Vector)__reducedValues.pop();
		{
		    return recordError(new CountedForLoopInitializerProblem(__p));
		}
	}

	/* statement = ForLoopID(ContainerID(Op_InID(expression, expression)), statement) */
	
	private InstructionList action_97( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList dont_care = (InstructionList)__reducedValues.pop();
		InstructionList not_lvalue = (InstructionList)__reducedValues.pop();
		{
		    return recordError(new InvalidLvalueProblem(__p));
		}
	}

	/* statement = ForLoopID(ContainerID(ContainerID(expression, Op_InID(expression, expression), expression*)), statement) */
	
	private InstructionList action_98( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		java.util.Vector trailing = (java.util.Vector)__reducedValues.pop();
		InstructionList dc2 = (InstructionList)__reducedValues.pop();
		InstructionList dc1 = (InstructionList)__reducedValues.pop();
		InstructionList leading_bandit = (InstructionList)__reducedValues.pop();
		{
		    return recordError(new InvalidForInInitializerProblem(__p));
		}
	}

	/* statement = ForLoopID(ContainerID(ContainerID(Op_InID(expression, expression), expression+)), statement) */
	
	private InstructionList action_99( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		java.util.Vector trailing = (java.util.Vector)__reducedValues.pop();
		InstructionList dc2 = (InstructionList)__reducedValues.pop();
		InstructionList dc1 = (InstructionList)__reducedValues.pop();
		{
		    return recordError(new InvalidForInInitializerProblem(__p));
		}
	}

	/* expression = XMLContentID(ContainerID(expression+)) */
	
	private InstructionList action_100( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector exprs = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_XMLContent(__p,exprs);
	}

	/* expression = XMLListContentID(ContainerID(expression*)) */
	
	private InstructionList action_101( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector exprs = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_XMLList(__p,exprs);
	}

	/* expression = XMLListContentID(ContainerID(e4x_literal*)) */
	
	private InstructionList action_102( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector elements = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_XMLListConst(__p,elements);
	}

	/* e4x_literal = LiteralXMLID(void) */
	
	private String action_103( IASNode __p) throws java.lang.Exception
	{
		return reducer.getStringLiteralContent(__p);
	}

	/* expression = Op_AddID(expression, expression) */
	
	private InstructionList action_104( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_add);
	}

	/* expression = AnonymousFunctionID(function) */
	
	private InstructionList action_105( IASNode __p) throws java.lang.Exception
	{
		InstructionList function_body = (InstructionList)__reducedValues.pop();
		return reducer.reduce_anonymousFunction(__p,function_body);
	}

	/* expression = ArrayIndexExpressionID(expression, expression) */
	
	private InstructionList action_106( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_arrayIndexExpr(__p,stem,false,index);
	}

	/* mxml_data_binding_setter_expression = ArrayIndexExpressionID(expression, expression) */
	
	private InstructionList action_107( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_arrayIndexExpr_to_mxmlDataBindingSetter(__p,stem,index,false);
	}

	/* array_literal = ArrayLiteralID(ContainerID(expression*)) */
	
	private InstructionList action_108( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector elements = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_arrayLiteral(__p,elements);
	}

	/* expression = Op_BitwiseAndAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_109( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_bitand,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseAndAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_110( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_bitand,DISCARD_VALUE);
	}

	/* void_expression = Op_BitwiseAndAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_111( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_bitand,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseAndAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_112( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_bitand,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseAndAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_113( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_bitand,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseAndAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_114( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_bitand,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseAndAssignID(name, expression) */
	
	private InstructionList action_115( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_bitand,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseAndAssignID(name, expression) */
	
	private InstructionList action_116( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_bitand,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseAndAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_117( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_bitand,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseAndAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_118( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_bitand,NEED_VALUE);
	}

	/* expression = Op_BitwiseOrAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_119( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_bitor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseOrAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_120( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_bitor,DISCARD_VALUE);
	}

	/* void_expression = Op_BitwiseOrAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_121( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_bitor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseOrAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_122( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_bitor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseOrAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_123( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_bitor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseOrAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_124( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_bitor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseOrAssignID(name, expression) */
	
	private InstructionList action_125( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_bitor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseOrAssignID(name, expression) */
	
	private InstructionList action_126( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_bitor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseOrAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_127( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_bitor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseOrAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_128( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_bitor,NEED_VALUE);
	}

	/* expression = Op_BitwiseXorAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_129( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_bitxor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseXorAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_130( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_bitxor,DISCARD_VALUE);
	}

	/* void_expression = Op_BitwiseXorAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_131( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_bitxor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseXorAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_132( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_bitxor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseXorAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_133( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_bitxor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseXorAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_134( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_bitxor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseXorAssignID(name, expression) */
	
	private InstructionList action_135( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_bitxor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseXorAssignID(name, expression) */
	
	private InstructionList action_136( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_bitxor,NEED_VALUE);
	}

	/* void_expression = Op_BitwiseXorAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_137( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_bitxor,DISCARD_VALUE);
	}

	/* expression = Op_BitwiseXorAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_138( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_bitxor,NEED_VALUE);
	}

	/* expression = Op_DivideAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_139( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_divide,NEED_VALUE);
	}

	/* void_expression = Op_DivideAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_140( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_divide,DISCARD_VALUE);
	}

	/* void_expression = Op_DivideAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_141( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_divide,DISCARD_VALUE);
	}

	/* expression = Op_DivideAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_142( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_divide,NEED_VALUE);
	}

	/* void_expression = Op_DivideAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_143( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_divide,DISCARD_VALUE);
	}

	/* expression = Op_DivideAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_144( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_divide,NEED_VALUE);
	}

	/* void_expression = Op_DivideAssignID(name, expression) */
	
	private InstructionList action_145( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_divide,DISCARD_VALUE);
	}

	/* expression = Op_DivideAssignID(name, expression) */
	
	private InstructionList action_146( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_divide,NEED_VALUE);
	}

	/* void_expression = Op_DivideAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_147( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_divide,DISCARD_VALUE);
	}

	/* expression = Op_DivideAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_148( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_divide,NEED_VALUE);
	}

	/* expression = Op_LeftShiftAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_149( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_lshift,NEED_VALUE);
	}

	/* void_expression = Op_LeftShiftAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_150( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_lshift,DISCARD_VALUE);
	}

	/* void_expression = Op_LeftShiftAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_151( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_lshift,DISCARD_VALUE);
	}

	/* expression = Op_LeftShiftAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_152( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_lshift,NEED_VALUE);
	}

	/* void_expression = Op_LeftShiftAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_153( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_lshift,DISCARD_VALUE);
	}

	/* expression = Op_LeftShiftAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_154( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_lshift,NEED_VALUE);
	}

	/* void_expression = Op_LeftShiftAssignID(name, expression) */
	
	private InstructionList action_155( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_lshift,DISCARD_VALUE);
	}

	/* expression = Op_LeftShiftAssignID(name, expression) */
	
	private InstructionList action_156( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_lshift,NEED_VALUE);
	}

	/* void_expression = Op_LeftShiftAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_157( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_lshift,DISCARD_VALUE);
	}

	/* expression = Op_LeftShiftAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_158( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_lshift,NEED_VALUE);
	}

	/* expression = Op_LogicalAndAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_159( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalBracketAssignment(__p,stem,index,expr,true,NEED_VALUE);
	}

	/* void_expression = Op_LogicalAndAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_160( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalBracketAssignment(__p,stem,index,expr,true,DISCARD_VALUE);
	}

	/* void_expression = Op_LogicalAndAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_161( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getdescendants,true,DISCARD_VALUE);
	}

	/* void_expression = Op_LogicalAndAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_162( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getdescendants,true,DISCARD_VALUE);
	}

	/* expression = Op_LogicalAndAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_163( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getdescendants,true,NEED_VALUE);
	}

	/* void_expression = Op_LogicalAndAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_164( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getproperty,true,DISCARD_VALUE);
	}

	/* expression = Op_LogicalAndAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_165( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getproperty,true,NEED_VALUE);
	}

	/* void_expression = Op_LogicalAndAssignID(name, expression) */
	
	private InstructionList action_166( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundLogicalAssignment(__p,operand,expr,true,DISCARD_VALUE);
	}

	/* expression = Op_LogicalAndAssignID(name, expression) */
	
	private InstructionList action_167( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundLogicalAssignment(__p,operand,expr,true,NEED_VALUE);
	}

	/* void_expression = Op_LogicalAndAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_168( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundLogicalRuntimeNameAssignment(__p,name,expr,true,DISCARD_VALUE);
	}

	/* expression = Op_LogicalAndAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_169( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundLogicalRuntimeNameAssignment(__p,name,expr,true,NEED_VALUE);
	}

	/* expression = Op_LogicalOrAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_170( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalBracketAssignment(__p,stem,index,expr,false,NEED_VALUE);
	}

	/* void_expression = Op_LogicalOrAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_171( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalBracketAssignment(__p,stem,index,expr,false,DISCARD_VALUE);
	}

	/* void_expression = Op_LogicalOrAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_172( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getdescendants,false,DISCARD_VALUE);
	}

	/* void_expression = Op_LogicalOrAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_173( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getdescendants,false,DISCARD_VALUE);
	}

	/* expression = Op_LogicalOrAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_174( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getdescendants,false,NEED_VALUE);
	}

	/* void_expression = Op_LogicalOrAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_175( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getproperty,false,DISCARD_VALUE);
	}

	/* expression = Op_LogicalOrAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_176( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundLogicalMemberAssignment(__p,stem,member,expr,OP_getproperty,false,NEED_VALUE);
	}

	/* void_expression = Op_LogicalOrAssignID(name, expression) */
	
	private InstructionList action_177( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundLogicalAssignment(__p,operand,expr,false,DISCARD_VALUE);
	}

	/* expression = Op_LogicalOrAssignID(name, expression) */
	
	private InstructionList action_178( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundLogicalAssignment(__p,operand,expr,false,NEED_VALUE);
	}

	/* void_expression = Op_LogicalOrAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_179( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundLogicalRuntimeNameAssignment(__p,name,expr,false,DISCARD_VALUE);
	}

	/* expression = Op_LogicalOrAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_180( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundLogicalRuntimeNameAssignment(__p,name,expr,false,NEED_VALUE);
	}

	/* expression = Op_SubtractAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_181( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_subtract,NEED_VALUE);
	}

	/* void_expression = Op_SubtractAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_182( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_subtract,DISCARD_VALUE);
	}

	/* void_expression = Op_SubtractAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_183( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_subtract,DISCARD_VALUE);
	}

	/* expression = Op_SubtractAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_184( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_subtract,NEED_VALUE);
	}

	/* void_expression = Op_SubtractAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_185( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_subtract,DISCARD_VALUE);
	}

	/* expression = Op_SubtractAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_186( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_subtract,NEED_VALUE);
	}

	/* void_expression = Op_SubtractAssignID(name, expression) */
	
	private InstructionList action_187( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_subtract,DISCARD_VALUE);
	}

	/* expression = Op_SubtractAssignID(name, expression) */
	
	private InstructionList action_188( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_subtract,NEED_VALUE);
	}

	/* void_expression = Op_SubtractAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_189( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_subtract,DISCARD_VALUE);
	}

	/* expression = Op_SubtractAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_190( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_subtract,NEED_VALUE);
	}

	/* expression = Op_ModuloAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_191( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_modulo,NEED_VALUE);
	}

	/* void_expression = Op_ModuloAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_192( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_modulo,DISCARD_VALUE);
	}

	/* void_expression = Op_ModuloAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_193( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_modulo,DISCARD_VALUE);
	}

	/* expression = Op_ModuloAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_194( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_modulo,NEED_VALUE);
	}

	/* void_expression = Op_ModuloAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_195( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_modulo,DISCARD_VALUE);
	}

	/* expression = Op_ModuloAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_196( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_modulo,NEED_VALUE);
	}

	/* void_expression = Op_ModuloAssignID(name, expression) */
	
	private InstructionList action_197( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_modulo,DISCARD_VALUE);
	}

	/* expression = Op_ModuloAssignID(name, expression) */
	
	private InstructionList action_198( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_modulo,NEED_VALUE);
	}

	/* void_expression = Op_ModuloAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_199( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_modulo,DISCARD_VALUE);
	}

	/* expression = Op_ModuloAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_200( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_modulo,NEED_VALUE);
	}

	/* expression = Op_MultiplyAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_201( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_multiply,NEED_VALUE);
	}

	/* void_expression = Op_MultiplyAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_202( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_multiply,DISCARD_VALUE);
	}

	/* void_expression = Op_MultiplyAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_203( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_multiply,DISCARD_VALUE);
	}

	/* expression = Op_MultiplyAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_204( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_multiply,NEED_VALUE);
	}

	/* void_expression = Op_MultiplyAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_205( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_multiply,DISCARD_VALUE);
	}

	/* expression = Op_MultiplyAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_206( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_multiply,NEED_VALUE);
	}

	/* void_expression = Op_MultiplyAssignID(name, expression) */
	
	private InstructionList action_207( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_multiply,DISCARD_VALUE);
	}

	/* expression = Op_MultiplyAssignID(name, expression) */
	
	private InstructionList action_208( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_multiply,NEED_VALUE);
	}

	/* void_expression = Op_MultiplyAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_209( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_multiply,DISCARD_VALUE);
	}

	/* expression = Op_MultiplyAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_210( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_multiply,NEED_VALUE);
	}

	/* expression = Op_AddAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_211( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_add,NEED_VALUE);
	}

	/* void_expression = Op_AddAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_212( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_add,DISCARD_VALUE);
	}

	/* void_expression = Op_AddAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_213( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_add,DISCARD_VALUE);
	}

	/* expression = Op_AddAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_214( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_add,NEED_VALUE);
	}

	/* void_expression = Op_AddAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_215( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_add,DISCARD_VALUE);
	}

	/* expression = Op_AddAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_216( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_add,NEED_VALUE);
	}

	/* void_expression = Op_AddAssignID(name, expression) */
	
	private InstructionList action_217( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_add,DISCARD_VALUE);
	}

	/* expression = Op_AddAssignID(name, expression) */
	
	private InstructionList action_218( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_add,NEED_VALUE);
	}

	/* void_expression = Op_AddAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_219( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_add,DISCARD_VALUE);
	}

	/* expression = Op_AddAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_220( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_add,NEED_VALUE);
	}

	/* expression = Op_RightShiftAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_221( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_rshift,NEED_VALUE);
	}

	/* void_expression = Op_RightShiftAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_222( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_rshift,DISCARD_VALUE);
	}

	/* void_expression = Op_RightShiftAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_223( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_rshift,DISCARD_VALUE);
	}

	/* expression = Op_RightShiftAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_224( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_rshift,NEED_VALUE);
	}

	/* void_expression = Op_RightShiftAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_225( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_rshift,DISCARD_VALUE);
	}

	/* expression = Op_RightShiftAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_226( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_rshift,NEED_VALUE);
	}

	/* void_expression = Op_RightShiftAssignID(name, expression) */
	
	private InstructionList action_227( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_rshift,DISCARD_VALUE);
	}

	/* expression = Op_RightShiftAssignID(name, expression) */
	
	private InstructionList action_228( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_rshift,NEED_VALUE);
	}

	/* void_expression = Op_RightShiftAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_229( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_rshift,DISCARD_VALUE);
	}

	/* expression = Op_RightShiftAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_230( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_rshift,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_231( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToBracketExpr_to_void_expression(__p,stem,index,r,false);
	}

	/* expression = Op_AssignId(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_232( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToBracketExpr_to_expression(__p,stem,index,r,false);
	}

	/* void_expression = Op_AssignId(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_233( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToDescendantsExpr(__p,stem,member,r,DISCARD_VALUE);
	}

	/* expression = Op_AssignId(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_234( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToDescendantsExpr(__p,stem,member,r,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_235( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToMemberExpr_to_void_expression(__p,stem,member,r);
	}

	/* expression = Op_AssignId(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_236( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToMemberExpr_to_expression(__p,stem,member,r);
	}

	/* void_expression = Op_AssignId(name, expression) */
	
	private InstructionList action_237( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding lval = (Binding)__reducedValues.pop();
		return reducer.reduce_assignToNameExpr_to_void_expression(__p,lval,r);
	}

	/* expression = Op_AssignId(name, expression) */
	
	private InstructionList action_238( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding lval = (Binding)__reducedValues.pop();
		return reducer.reduce_assignToNameExpr_to_expression(__p,lval,r);
	}

	/* void_expression = Op_AssignId(MemberAccessExpressionID(expression, Op_AtID(NamespaceAccessExpressionID(name, name))), expression) */
	
	private InstructionList action_239( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding attribute = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedAttributeExpr(__p,stem,qualifier,attribute,r,DISCARD_VALUE);
	}

	/* expression = Op_AssignId(MemberAccessExpressionID(expression, Op_AtID(NamespaceAccessExpressionID(name, name))), expression) */
	
	private InstructionList action_240( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding attribute = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedAttributeExpr(__p,stem,qualifier,attribute,r,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, name)), expression) */
	
	private InstructionList action_241( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedMemberExpr(__p,stem,qualifier,member,r,DISCARD_VALUE);
	}

	/* expression = Op_AssignId(MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, name)), expression) */
	
	private InstructionList action_242( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedMemberExpr(__p,stem,qualifier,member,r,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(MemberAccessExpressionID(expression, Op_AtID(NamespaceAccessExpressionID(name, expression))), expression) */
	
	private InstructionList action_243( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList attribute = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedRuntimeAttributeExpr(__p,stem,qualifier,attribute,r,DISCARD_VALUE);
	}

	/* void_expression = Op_AssignId(MemberAccessExpressionID(expression, Op_AtID(NamespaceAccessExpressionID(name, expression))), expression) */
	
	private InstructionList action_244( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList attribute = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedRuntimeAttributeExpr(__p,stem,qualifier,attribute,r,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, expression)), expression) */
	
	private InstructionList action_245( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList member = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedRuntimeMemberExpr(__p,stem,qualifier,member,r,DISCARD_VALUE);
	}

	/* expression = Op_AssignId(MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, expression)), expression) */
	
	private InstructionList action_246( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList member = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToQualifiedRuntimeMemberExpr(__p,stem,qualifier,member,r,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(runtime_name_expression, expression) */
	
	private InstructionList action_247( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname lval = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.reduce_assignToRuntimeNameExpr(__p,lval,r,DISCARD_VALUE);
	}

	/* expression = Op_AssignId(runtime_name_expression, expression) */
	
	private InstructionList action_248( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname lval = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.reduce_assignToRuntimeNameExpr(__p,lval,r,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(ArrayIndexExpressionID(SuperID(void), expression), expression) */
	
	private InstructionList action_249( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
	IASNode stem = SemanticUtils.getNthChild(SemanticUtils.getNthChild(__p, 0), 0);
		return reducer.reduce_assignToBracketExpr_to_void_expression(__p,null,index,r,true);
	}

	/* expression = Op_AssignId(ArrayIndexExpressionID(SuperID(void), expression), expression) */
	
	private InstructionList action_250( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
	IASNode stem = SemanticUtils.getNthChild(SemanticUtils.getNthChild(__p, 0), 0);
		return reducer.reduce_assignToBracketExpr_to_expression(__p,null,index,r,true);
	}

	/* void_expression = Op_AssignId(MemberAccessExpressionID(expression, ArrayIndexExpressionID(Op_AtID(void), expression)), expression) */
	
	private InstructionList action_251( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList rt_attr_name = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToUnqualifiedRuntimeAttributeExpr(__p,stem,rt_attr_name,r,DISCARD_VALUE);
	}

	/* expression = Op_AssignId(MemberAccessExpressionID(expression, ArrayIndexExpressionID(Op_AtID(void), expression)), expression) */
	
	private InstructionList action_252( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList rt_attr_name = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToUnqualifiedRuntimeAttributeExpr(__p,stem,rt_attr_name,r,NEED_VALUE);
	}

	/* void_expression = Op_AssignId(Op_DescendantsID(expression, ArrayIndexExpressionID(Op_AtID(void), expression)), expression) */
	
	private InstructionList action_253( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList rt_attr_name = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToUnqualifiedRuntimeAttributeExpr(__p,stem,rt_attr_name,r,DISCARD_VALUE);
	}

	/* expression = Op_AssignId(Op_DescendantsID(expression, ArrayIndexExpressionID(Op_AtID(void), expression)), expression) */
	
	private InstructionList action_254( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList rt_attr_name = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_assignToUnqualifiedRuntimeAttributeExpr(__p,stem,rt_attr_name,r,NEED_VALUE);
	}

	/* expression = Op_UnsignedRightShiftAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_255( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_urshift,NEED_VALUE);
	}

	/* void_expression = Op_UnsignedRightShiftAssignID(ArrayIndexExpressionID(expression, expression), expression) */
	
	private InstructionList action_256( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundBracketAssignment(__p,stem,index,expr,OP_urshift,DISCARD_VALUE);
	}

	/* void_expression = Op_UnsignedRightShiftAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_257( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_urshift,DISCARD_VALUE);
	}

	/* expression = Op_UnsignedRightShiftAssignID(Op_DescendantsID(expression, name), expression) */
	
	private InstructionList action_258( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getdescendants,OP_urshift,NEED_VALUE);
	}

	/* void_expression = Op_UnsignedRightShiftAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_259( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_urshift,DISCARD_VALUE);
	}

	/* expression = Op_UnsignedRightShiftAssignID(MemberAccessExpressionID(expression, name), expression) */
	
	private InstructionList action_260( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.generateCompoundMemberAssignment(__p,stem,member,expr,OP_getproperty,OP_urshift,NEED_VALUE);
	}

	/* void_expression = Op_UnsignedRightShiftAssignID(name, expression) */
	
	private InstructionList action_261( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_urshift,DISCARD_VALUE);
	}

	/* expression = Op_UnsignedRightShiftAssignID(name, expression) */
	
	private InstructionList action_262( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		Binding operand = (Binding)__reducedValues.pop();
		return reducer.generateCompoundAssignment(__p,operand,expr,OP_urshift,NEED_VALUE);
	}

	/* void_expression = Op_UnsignedRightShiftAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_263( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_urshift,DISCARD_VALUE);
	}

	/* expression = Op_UnsignedRightShiftAssignID(runtime_name_expression, expression) */
	
	private InstructionList action_264( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		ABCGeneratingReducer.RuntimeMultiname name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		return reducer.generateCompoundAssignmentToRuntimeName(__p,name,expr,OP_urshift,NEED_VALUE);
	}

	/* expression = Op_AsID(expression, expression) */
	
	private InstructionList action_265( IASNode __p) throws java.lang.Exception
	{
		InstructionList typename = (InstructionList)__reducedValues.pop();
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,expr,typename,OP_astypelate);
	}

	/* name = Op_AtID(name) */
	
	private Binding action_266( IASNode __p) throws java.lang.Exception
	{
		Binding attr_name = (Binding)__reducedValues.pop();
		return reducer.reduce_attributeName(__p,attr_name);
	}

	/* expression = Op_BitwiseNotID(expression) */
	
	private InstructionList action_267( IASNode __p) throws java.lang.Exception
	{
		InstructionList unary = (InstructionList)__reducedValues.pop();
		return reducer.unaryOp(__p,unary,OP_bitnot);
	}

	/* expression = Op_BitwiseAndID(expression, expression) */
	
	private InstructionList action_268( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_bitand);
	}

	/* expression = Op_LeftShiftID(expression, expression) */
	
	private InstructionList action_269( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_lshift);
	}

	/* expression = Op_BitwiseOrID(expression, expression) */
	
	private InstructionList action_270( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_bitor);
	}

	/* expression = Op_RightShiftID(expression, expression) */
	
	private InstructionList action_271( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_rshift);
	}

	/* expression = Op_UnsignedRightShift(expression, expression) */
	
	private InstructionList action_272( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_urshift);
	}

	/* expression = Op_BitwiseXorID(expression, expression) */
	
	private InstructionList action_273( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_bitxor);
	}

	/* statement = BlockID(statement*) */
	
	private InstructionList action_274( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector stmts = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_blockStmt_to_statement(__p,stmts);
	}

	/* finally_clause = BlockID(statement*) */
	
	private InstructionList action_275( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector stmts = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_blockStmt_to_finally_clause(__p,stmts);
	}

	/* boolean_constant = LiteralBooleanID(void) */
	
	private Boolean action_276( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_booleanLiteral(__p);
	}

	/* statement = BreakID(void) */
	
	private InstructionList action_277( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_breakStmt(__p);
	}

	/* catch_block = CatchID(ArgumentID(name, type_name), statement) */
	
	private ABCGeneratingReducer.CatchPrototype action_278( IASNode __p) throws java.lang.Exception
	{
		InstructionList action = (InstructionList)__reducedValues.pop();
		Binding exception = (Binding)__reducedValues.pop();
		Binding var_name = (Binding)__reducedValues.pop();
		return reducer.reduce_catchBlockTyped(__p,var_name,exception,action);
	}

	/* catch_block = CatchID(ArgumentID(name), statement) */
	
	private ABCGeneratingReducer.CatchPrototype action_279( IASNode __p) throws java.lang.Exception
	{
		InstructionList action = (InstructionList)__reducedValues.pop();
		Binding var_name = (Binding)__reducedValues.pop();
		return reducer.reduce_catchBlockUntyped(__p,var_name,action);
	}

	/* expression = Op_CommaID(expression, void_expression+) */
	
	private InstructionList action_280( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector exprs = (java.util.Vector)__reducedValues.pop();
		InstructionList payload_expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_commaExpr(__p,payload_expr,exprs);
	}

	/* statement = ConfigBlockID(statement*) */
	
	private InstructionList action_281( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector stmts = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_blockStmt_to_statement(__p,stmts);
	}

	/* constant_value = MemberAccessExpressionID(expression, name) */
	
	private Object action_282( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.transform_name_to_constant_value(__p);
	}

	/* conditionalElements = ConditionalID(constant_value, statement*) */
	
	private ABCGeneratingReducer.ConditionalFragment action_283( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector case_actions = (java.util.Vector)__reducedValues.pop();
		Object case_const_value = (Object)__reducedValues.pop();
		return reducer.reduce_constantConditionalFragment(__p,case_const_value,case_actions);
	}

	/* statement = ContinueID(void) */
	
	private InstructionList action_284( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_continueStmt(__p);
	}

	/* statement = ForLoopID(ContainerID(void_expression, conditionalJump, void_expression), statement) */
	
	private InstructionList action_285( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList incr = (InstructionList)__reducedValues.pop();
		InstructionList test_insns = (InstructionList)__reducedValues.pop();
		InstructionList init = (InstructionList)__reducedValues.pop();
		return reducer.reduce_countedForStmt(__p,init,test_insns,incr,body);
	}

	/* statement = DefaultXMLStatementID(expression) */
	
	private InstructionList action_286( IASNode __p) throws java.lang.Exception
	{
		InstructionList ns_expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_defaultXMLNamespace(__p,ns_expr);
	}

	/* expression = Op_DeleteID(expression) */
	
	private InstructionList action_287( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_deleteExprExprExpr(__p,expr);
	}

	/* expression = Op_DeleteID(MemberAccessExpressionID(expression, ArrayIndexExpressionID(Op_AtID(void), expression))) */
	
	private InstructionList action_288( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_deleteAtBracketExpr(__p,stem,index);
	}

	/* expression = Op_DeleteID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_289( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_deleteBracketExpr(__p,stem,index);
	}

	/* expression = Op_DeleteID(Op_DescendantsID(expression, name)) */
	
	private InstructionList action_290( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_deleteDescendantsExpr(__p,stem,field);
	}

	/* expression = Op_DeleteID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_291( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_deleteMemberExpr(__p,stem,field);
	}

	/* expression = Op_DeleteID(name) */
	
	private InstructionList action_292( IASNode __p) throws java.lang.Exception
	{
		Binding n = (Binding)__reducedValues.pop();
		return reducer.reduce_deleteNameExpr(__p,n);
	}

	/* expression = Op_DeleteID(MemberAccessExpressionID(expression, runtime_name_expression)) */
	
	private InstructionList action_293( IASNode __p) throws java.lang.Exception
	{
		ABCGeneratingReducer.RuntimeMultiname rt_name = (ABCGeneratingReducer.RuntimeMultiname)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_deleteRuntimeNameExpr(__p,stem,rt_name);
	}

	/* expression = Op_DescendantsID(expression, name) */
	
	private InstructionList action_294( IASNode __p) throws java.lang.Exception
	{
		Binding descendants = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_memberAccessExpr(__p,stem,descendants,OP_getdescendants);
	}

	/* expression = Op_DivideID(expression, expression) */
	
	private InstructionList action_295( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_divide);
	}

	/* statement = DoWhileLoopID(statement, expression) */
	
	private InstructionList action_296( IASNode __p) throws java.lang.Exception
	{
		InstructionList cond = (InstructionList)__reducedValues.pop();
		InstructionList body = (InstructionList)__reducedValues.pop();
		return reducer.reduce_doStmt(__p,body,cond);
	}

	/* dottedNamePart = MemberAccessExpressionID(dottedNamePart, dottedNamePart) */
	
	private String action_297( IASNode __p) throws java.lang.Exception
	{
		String second = (String)__reducedValues.pop();
		String first = (String)__reducedValues.pop();
		return reducer.reduce_by_concatenation(__p,first,second);
	}

	/* name = MemberAccessExpressionID(dottedNamePart, dottedNamePart) */
	
	private Binding action_298( IASNode __p) throws java.lang.Exception
	{
		String second = (String)__reducedValues.pop();
		String first = (String)__reducedValues.pop();
		return reducer.dottedName(__p,first,second);
	}

	/* name = MemberAccessExpressionID(dottedNamePart, dottedNamePart) */
	
	private Binding action_299( IASNode __p) throws java.lang.Exception
	{
		String second = (String)__reducedValues.pop();
		String first = (String)__reducedValues.pop();
		return reducer.errorPackageName(__p,first,second);
	}

	/* double_constant = LiteralDoubleID(void) */
	
	private Double action_300( IASNode __p) throws java.lang.Exception
	{
		return reducer.getDoubleContent(__p);
	}

	/* expression = E4XFilterID(expression, expression) */
	
	private InstructionList action_301( IASNode __p) throws java.lang.Exception
	{
		InstructionList filter = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_e4xFilter(__p,stem,filter);
	}

	/* expression = EmbedID(void) */
	
	private InstructionList action_302( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_embed(__p);
	}

	/* expression = FunctionCallID(KeywordNewID(void), IdentifierID(void), ContainerID(void)) */
	
	private InstructionList action_303( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_newEmptyArray(__p);
	}

	/* expression = FunctionCallID(KeywordNewID(void), IdentifierID(void), ContainerID(void)) */
	
	private InstructionList action_304( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_newEmptyObject(__p);
	}

	/* comparison_expression = Op_EqualID(expression, expression) */
	
	private InstructionList action_305( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_equals);
	}

	/* conditionalJump = Op_EqualID(expression, expression) */
	
	private InstructionList action_306( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_ifeq);
	}

	/* statement = ForEachLoopID(ContainerID(Op_InID(ArrayIndexExpressionID(expression, expression), expression)), statement) */
	
	private InstructionList action_307( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueArrayStmt(__p,stem,index,base,body,OP_nextvalue,false);
	}

	/* statement = ForEachLoopID(ContainerID(Op_InID(Op_DescendantsID(expression, name), expression)), statement) */
	
	private InstructionList action_308( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding descendants = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueMemberStmt(__p,stem,descendants,base,body,OP_nextvalue,false);
	}

	/* statement = ForEachLoopID(ContainerID(Op_InID(MemberAccessExpressionID(expression, name), expression)), statement) */
	
	private InstructionList action_309( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueMemberStmt(__p,stem,member,base,body,OP_nextvalue,false);
	}

	/* statement = ForEachLoopID(ContainerID(Op_InID(name, expression)), statement) */
	
	private InstructionList action_310( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding it = (Binding)__reducedValues.pop();
		return reducer.reduce_forKeyValueStmt(__p,it,base,body,OP_nextvalue);
	}

	/* statement = ForEachLoopID(ContainerID(Op_InID(ArrayIndexExpressionID(SuperID(void), expression), expression)), statement) */
	
	private InstructionList action_311( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueArrayStmt(__p,null,index,base,body,OP_nextvalue,true);
	}

	/* statement = ForEachLoopID(ContainerID(Op_InID(MemberAccessExpressionID(SuperID(void), name), expression)), statement) */
	
	private InstructionList action_312( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		return reducer.reduce_forKeyValueMemberStmt(__p,null,member,base,body,OP_nextvalue,true);
	}

	/* statement = ForEachLoopID(ContainerID(Op_InID(VariableExpressionID(var_decl), expression)), statement) */
	
	private InstructionList action_313( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		InstructionList single_decl = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forVarDeclInStmt(__p,single_decl,base,body,OP_nextvalue);
	}

	/* statement = ForLoopID(ContainerID(Op_InID(ArrayIndexExpressionID(expression, expression), expression)), statement) */
	
	private InstructionList action_314( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueArrayStmt(__p,stem,index,base,body,OP_nextname,false);
	}

	/* statement = ForLoopID(ContainerID(Op_InID(Op_DescendantsID(expression, name), expression)), statement) */
	
	private InstructionList action_315( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding descendants = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueMemberStmt(__p,stem,descendants,base,body,OP_nextname,false);
	}

	/* statement = ForLoopID(ContainerID(Op_InID(MemberAccessExpressionID(expression, name), expression)), statement) */
	
	private InstructionList action_316( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueMemberStmt(__p,stem,member,base,body,OP_nextname,false);
	}

	/* statement = ForLoopID(ContainerID(Op_InID(name, expression)), statement) */
	
	private InstructionList action_317( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding it = (Binding)__reducedValues.pop();
		return reducer.reduce_forKeyValueStmt(__p,it,base,body,OP_nextname);
	}

	/* statement = ForLoopID(ContainerID(Op_InID(ArrayIndexExpressionID(SuperID(void), expression), expression)), statement) */
	
	private InstructionList action_318( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forKeyValueArrayStmt(__p,null,index,base,body,OP_nextname,true);
	}

	/* statement = ForLoopID(ContainerID(Op_InID(MemberAccessExpressionID(SuperID(void), name), expression)), statement) */
	
	private InstructionList action_319( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		return reducer.reduce_forKeyValueMemberStmt(__p,null,member,base,body,OP_nextname,true);
	}

	/* statement = ForLoopID(ContainerID(Op_InID(VariableExpressionID(var_decl), expression)), statement) */
	
	private InstructionList action_320( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		InstructionList single_decl = (InstructionList)__reducedValues.pop();
		return reducer.reduce_forVarDeclInStmt(__p,single_decl,base,body,OP_nextname);
	}

	/* name = FullNameID(dottedNamePart, dottedNamePart) */
	
	private Binding action_321( IASNode __p) throws java.lang.Exception
	{
		String second = (String)__reducedValues.pop();
		String first = (String)__reducedValues.pop();
		return reducer.dottedName(__p,first,second);
	}

	/* dottedNamePart = FullNameID(dottedNamePart, dottedNamePart) */
	
	private String action_322( IASNode __p) throws java.lang.Exception
	{
		String second = (String)__reducedValues.pop();
		String first = (String)__reducedValues.pop();
		return reducer.reduce_by_concatenation(__p,first,second);
	}

	/* import_name = FullNameID(dottedNamePart, dottedNamePart) */
	
	private InstructionList action_323( IASNode __p) throws java.lang.Exception
	{
		String second = (String)__reducedValues.pop();
		String first = (String)__reducedValues.pop();
		return reducer.createInstructionList(__p);
	}

	/* expression = FunctionCallID(ArrayIndexExpressionID(expression, expression), ContainerID(expression*)) */
	
	private InstructionList action_324( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_functionAsBracketExpr(__p,stem,index,args);
	}

	/* expression = FunctionCallID(MemberAccessExpressionID(expression, name), ContainerID(expression*)) */
	
	private InstructionList action_325( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding method_name = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_functionAsMemberExpr(__p,stem,method_name,args);
	}

	/* expression = FunctionCallID(expression, ContainerID(expression*)) */
	
	private InstructionList action_326( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		InstructionList random_expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_functionAsRandomExpr(__p,random_expr,args);
	}

	/* expression = FunctionCallID(name, ContainerID(expression*)) */
	
	private InstructionList action_327( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding method_name = (Binding)__reducedValues.pop();
		return reducer.reduce_functionCallExpr_to_expression(__p,method_name,args);
	}

	/* void_expression = FunctionCallID(name, ContainerID(expression*)) */
	
	private InstructionList action_328( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding method_name = (Binding)__reducedValues.pop();
		return reducer.reduce_functionCallExpr_to_void_expression(__p,method_name,args);
	}

	/* void_expression = FunctionCallID(MemberAccessExpressionID(FunctionCallID(SuperID(void), ContainerID(expression)), name), ContainerID(expression*)) */
	
	private InstructionList action_329( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding method_name = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_functionCallOfSuperclassMethod_to_void_expression(__p,stem,method_name,args);
	}

	/* expression = FunctionCallID(MemberAccessExpressionID(FunctionCallID(SuperID(void), ContainerID(expression)), name), ContainerID(expression*)) */
	
	private InstructionList action_330( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding method_name = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_functionCallOfSuperclassMethod_to_expression(__p,stem,method_name,args);
	}

	/* void_expression = FunctionCallID(MemberAccessExpressionID(SuperID(void), name), ContainerID(expression*)) */
	
	private InstructionList action_331( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding method_name = (Binding)__reducedValues.pop();
		return reducer.reduce_functionCallOfSuperclassMethod_to_void_expression(__p,null,method_name,args);
	}

	/* expression = FunctionCallID(MemberAccessExpressionID(SuperID(void), name), ContainerID(expression*)) */
	
	private InstructionList action_332( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding method_name = (Binding)__reducedValues.pop();
		return reducer.reduce_functionCallOfSuperclassMethod_to_expression(__p,null,method_name,args);
	}

	/* statement = GotoID(IdentifierID(void)) */
	
	private InstructionList action_333( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_gotoStmt(__p);
	}

	/* comparison_expression = Op_GreaterThanEqualsID(expression, expression) */
	
	private InstructionList action_334( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_greaterequals);
	}

	/* conditionalJump = Op_GreaterThanEqualsID(expression, expression) */
	
	private InstructionList action_335( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_ifge);
	}

	/* comparison_expression = Op_GreaterThanID(expression, expression) */
	
	private InstructionList action_336( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_greaterthan);
	}

	/* conditionalJump = Op_GreaterThanID(expression, expression) */
	
	private InstructionList action_337( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_ifgt);
	}

	/* void_expression = ContainerID(void_expression+) */
	
	private InstructionList action_338( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector contents = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_groupedVoidExpression(__p,contents);
	}

	/* statement = IfStatementID(ConditionalID(expression, statement), conditionalElements*) */
	
	private InstructionList action_339( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector if_elseif = (java.util.Vector)__reducedValues.pop();
		InstructionList then = (InstructionList)__reducedValues.pop();
		InstructionList test = (InstructionList)__reducedValues.pop();
		return reducer.reduce_ifElseIf(__p,test,then,if_elseif);
	}

	/* statement = ImportID(import_name) */
	
	private InstructionList action_340( IASNode __p) throws java.lang.Exception
	{
		InstructionList importName = (InstructionList)__reducedValues.pop();
		return reducer.reduce_importDirective(__p);
	}

	/* expression = Op_InID(expression, expression) */
	
	private InstructionList action_341( IASNode __p) throws java.lang.Exception
	{
		InstructionList haystack = (InstructionList)__reducedValues.pop();
		InstructionList needle = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,needle,haystack,OP_in);
	}

	/* expression = Op_InstanceOfID(expression, expression) */
	
	private InstructionList action_342( IASNode __p) throws java.lang.Exception
	{
		InstructionList typename = (InstructionList)__reducedValues.pop();
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,expr,typename,OP_instanceof);
	}

	/* expression = InstructionListID(void) */
	
	private InstructionList action_343( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_instructionListExpression(__p);
	}

	/* integer_constant = LiteralIntegerID(void) */
	
	private Integer action_344( IASNode __p) throws java.lang.Exception
	{
		return reducer.getIntegerContent(__p);
	}

	/* expression = Op_IsID(expression, expression) */
	
	private InstructionList action_345( IASNode __p) throws java.lang.Exception
	{
		InstructionList typename = (InstructionList)__reducedValues.pop();
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,expr,typename,OP_istypelate);
	}

	/* statement = BreakID(IdentifierID(void)) */
	
	private InstructionList action_346( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_labeledBreakStmt(__p);
	}

	/* statement = ContinueID(IdentifierID(void)) */
	
	private InstructionList action_347( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_labeledContinueStmt(__p);
	}

	/* statement = LabledStatementID(non_resolving_identifier, statement) */
	
	private InstructionList action_348( IASNode __p) throws java.lang.Exception
	{
		InstructionList substatement = (InstructionList)__reducedValues.pop();
		String label = (String)__reducedValues.pop();
		return reducer.reduce_labeledStmt(__p,label,substatement);
	}

	/* conditionalElements = ElseID(statement) */
	
	private ABCGeneratingReducer.ConditionalFragment action_349( IASNode __p) throws java.lang.Exception
	{
		InstructionList else_clause = (InstructionList)__reducedValues.pop();
		return reducer.reduce_lastElse(__p,else_clause);
	}

	/* comparison_expression = Op_LessThanEqualsID(expression, expression) */
	
	private InstructionList action_350( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_lessequals);
	}

	/* conditionalJump = Op_LessThanEqualsID(expression, expression) */
	
	private InstructionList action_351( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_ifle);
	}

	/* comparison_expression = Op_LessThanID(expression, expression) */
	
	private InstructionList action_352( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_lessthan);
	}

	/* conditionalJump = Op_LessThanID(expression, expression) */
	
	private InstructionList action_353( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_iflt);
	}

	/* expression = Op_LogicalAndID(expression, expression) */
	
	private InstructionList action_354( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.reduce_logicalAndExpr(__p,l,r);
	}

	/* expression = Op_LogicalNotID(expression) */
	
	private InstructionList action_355( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_logicalNotExpr(__p,expr);
	}

	/* expression = Op_LogicalOrID(expression, expression) */
	
	private InstructionList action_356( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.reduce_logicalOrExpr(__p,l,r);
	}

	/* expression = MemberAccessExpressionID(expression, name) */
	
	private InstructionList action_357( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_memberAccessExpr(__p,stem,member,OP_getproperty);
	}

	/* mxml_data_binding_setter_expression = MemberAccessExpressionID(expression, name) */
	
	private InstructionList action_358( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_memberAccessExpr_to_mxmlDataBindingSetter(__p,stem,member);
	}

	/* expression = Op_ModuloID(expression, expression) */
	
	private InstructionList action_359( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_modulo);
	}

	/* expression = Op_MultiplyID(expression, expression) */
	
	private InstructionList action_360( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_multiply);
	}

	/* function = MXMLEventSpecifierID(statement*) */
	
	private InstructionList action_361( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector stmts = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_mxmlEventSpecifier(__p,stmts);
	}

	/* name = NamespaceAccessExpressionID(NamespaceIdentifierID(void), name) */
	
	private Binding action_362( IASNode __p) throws java.lang.Exception
	{
		Binding qualified_name = (Binding)__reducedValues.pop();
	IASNode qualifier = SemanticUtils.getNthChild(__p, 0);
		return reducer.reduce_namespaceAccess(__p,qualifier,qualified_name);
	}

	/* name = NamespaceAccessExpressionID(NamespaceIdentifierID(void), name) */
	
	private Binding action_363( IASNode __p) throws java.lang.Exception
	{
		Binding qualified_name = (Binding)__reducedValues.pop();
	IASNode qualifier = SemanticUtils.getNthChild(__p, 0);
		return reducer.error_namespaceAccess(__p,qualifier,qualified_name);
	}

	/* name = NamespaceIdentifierID(void) */
	
	private Binding action_364( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_namespaceAsName_to_name(__p);
	}

	/* expression = NamespaceIdentifierID(void) */
	
	private InstructionList action_365( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_namespaceAsName_to_expression(__p);
	}

	/* statement = NamespaceID(name) */
	
	private InstructionList action_366( IASNode __p) throws java.lang.Exception
	{
		Binding ns_name = (Binding)__reducedValues.pop();
		return reducer.reduce_namespaceDeclaration(__p,ns_name);
	}

	/* statement = NamespaceID(name, string_constant) */
	
	private InstructionList action_367( IASNode __p) throws java.lang.Exception
	{
		String uri = (String)__reducedValues.pop();
		Binding ns_name = (Binding)__reducedValues.pop();
		return reducer.reduce_namespaceDeclarationConstantInitializer(__p,ns_name,uri);
	}

	/* statement = NamespaceID(name, name) */
	
	private InstructionList action_368( IASNode __p) throws java.lang.Exception
	{
		Binding second_ns = (Binding)__reducedValues.pop();
		Binding ns_name = (Binding)__reducedValues.pop();
		return reducer.reduce_namespaceDeclarationInitializer(__p,ns_name,second_ns);
	}

	/* runtime_name_expression = NamespaceAccessExpressionID(NamespaceIdentifierID(void), expression) */
	
	private ABCGeneratingReducer.RuntimeMultiname action_369( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
	IASNode qualifier = SemanticUtils.getNthChild(__p, 0);
		return reducer.reduce_namespaceMultinameL(__p,qualifier,expr);
	}

	/* runtime_name_expression = NamespaceAccessExpressionID(expression, name) */
	
	private ABCGeneratingReducer.RuntimeMultiname action_370( IASNode __p) throws java.lang.Exception
	{
		Binding qualfied_name = (Binding)__reducedValues.pop();
		InstructionList qualifier = (InstructionList)__reducedValues.pop();
		return reducer.reduce_namespaceRTQName(__p,qualifier,qualfied_name);
	}

	/* runtime_name_expression = NamespaceAccessExpressionID(expression, expression) */
	
	private ABCGeneratingReducer.RuntimeMultiname action_371( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList qualifier = (InstructionList)__reducedValues.pop();
		return reducer.reduce_namespaceRTQNameL(__p,qualifier,expr);
	}

	/* comparison_expression = Op_NotEqualID(expression, expression) */
	
	private InstructionList action_372( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.reduce_neqExpr(__p,l,r);
	}

	/* conditionalJump = Op_NotEqualID(expression, expression) */
	
	private InstructionList action_373( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_ifne);
	}

	/* expression = FunctionCallID(KeywordNewID(void), expression, ContainerID(expression*)) */
	
	private InstructionList action_374( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		InstructionList random_expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_newAsRandomExpr(__p,random_expr,args);
	}

	/* expression = FunctionCallID(KeywordNewID(void), new_type_name, ContainerID(expression*)) */
	
	private InstructionList action_375( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding class_binding = (Binding)__reducedValues.pop();
		return reducer.reduce_newExpr(__p,class_binding,args);
	}

	/* expression = FunctionCallID(KeywordNewID(void), MemberAccessExpressionID(expression, name), ContainerID(expression*)) */
	
	private InstructionList action_376( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		Binding member = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_newMemberProperty(__p,stem,member,args);
	}

	/* expression = FunctionCallID(KeywordNewID(void), vector_literal, ContainerID(void)) */
	
	private InstructionList action_377( IASNode __p) throws java.lang.Exception
	{
		InstructionList literal = (InstructionList)__reducedValues.pop();
		return reducer.reduce_newVectorLiteral(__p,literal);
	}

	/* void_expression = NilID(void) */
	
	private InstructionList action_378( IASNode __p) throws java.lang.Exception
	{
		return reducer.createInstructionList(__p);
	}

	/* expression = NilID(void) */
	
	private InstructionList action_379( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_nilExpr_to_expression(__p);
	}

	/* conditionalJump = NilID(void) */
	
	private InstructionList action_380( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_nilExpr_to_conditionalJump(__p);
	}

	/* non_resolving_identifier = NonResolvingIdentifierID(void) */
	
	private String action_381( IASNode __p) throws java.lang.Exception
	{
		return reducer.getIdentifierContent(__p);
	}

	/* constant_value = LiteralNullID(void) */
	
	private Object action_382( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_nullLiteral_to_constant_value(__p);
	}

	/* object_literal = LiteralNullID(void) */
	
	private InstructionList action_383( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_nullLiteral_to_object_literal(__p);
	}

	/* double_constant = LiteralNumberID(void) */
	
	private Double action_384( IASNode __p) throws java.lang.Exception
	{
		return reducer.getDoubleContent(__p);
	}

	/* object_literal = ObjectLiteralExpressionID(ContainerID(object_literal_element*)) */
	
	private InstructionList action_385( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector elements = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_objectLiteral(__p,elements);
	}

	/* object_literal_element = ObjectLiteralValuePairID(expression, expression) */
	
	private InstructionList action_386( IASNode __p) throws java.lang.Exception
	{
		InstructionList value = (InstructionList)__reducedValues.pop();
		InstructionList id = (InstructionList)__reducedValues.pop();
		return reducer.reduce_objectLiteralElement(__p,id,value);
	}

	/* parameter = ArgumentID(decl_name, type_name, required_constant_value) */
	
	private InstructionList action_387( IASNode __p) throws java.lang.Exception
	{
		Object default_value = (Object)__reducedValues.pop();
		Binding param_type = (Binding)__reducedValues.pop();
		Name param_name = (Name)__reducedValues.pop();
		return reducer.reduce_optionalParameter(__p,param_name,param_type,default_value);
	}

	/* type_name = TypedExpressionID(name, type_name) */
	
	private Binding action_388( IASNode __p) throws java.lang.Exception
	{
		Binding param = (Binding)__reducedValues.pop();
		Binding base = (Binding)__reducedValues.pop();
		return reducer.reduce_parameterizedName(__p,base,param);
	}

	/* expression = TypedExpressionID(expression, type_param_expression) */
	
	private InstructionList action_389( IASNode __p) throws java.lang.Exception
	{
		InstructionList param = (InstructionList)__reducedValues.pop();
		InstructionList base = (InstructionList)__reducedValues.pop();
		return reducer.reduce_parameterizedTypeExpression(__p,base,param);
	}

	/* parameterList = ContainerID(parameter*) */
	
	private InstructionList action_390( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector pdecl = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_plist(__p,pdecl);
	}

	/* expression = Op_PostDecrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_391( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postDecBracketExpr(__p,stem,index,true);
	}

	/* void_expression = Op_PostDecrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_392( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postDecBracketExpr(__p,stem,index,false);
	}

	/* expression = Op_PostDecrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_393( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postDecMemberExpr(__p,stem,field,true);
	}

	/* void_expression = Op_PostDecrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_394( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postDecMemberExpr(__p,stem,field,false);
	}

	/* expression = Op_PostDecrID(name) */
	
	private InstructionList action_395( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_postDecNameExpr(__p,unary,true);
	}

	/* void_expression = Op_PostDecrID(name) */
	
	private InstructionList action_396( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_postDecNameExpr(__p,unary,false);
	}

	/* expression = Op_PostIncrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_397( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postIncBracketExpr(__p,stem,index,true);
	}

	/* void_expression = Op_PostIncrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_398( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postIncBracketExpr(__p,stem,index,false);
	}

	/* expression = Op_PostIncrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_399( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postIncMemberExpr(__p,stem,field,true);
	}

	/* void_expression = Op_PostIncrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_400( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_postIncMemberExpr(__p,stem,field,false);
	}

	/* expression = Op_PostIncrID(name) */
	
	private InstructionList action_401( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_postIncNameExpr(__p,unary,true);
	}

	/* void_expression = Op_PostIncrID(name) */
	
	private InstructionList action_402( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_postIncNameExpr(__p,unary,false);
	}

	/* expression = Op_PreDecrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_403( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preDecBracketExpr(__p,stem,index,true);
	}

	/* void_expression = Op_PreDecrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_404( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preDecBracketExpr(__p,stem,index,false);
	}

	/* expression = Op_PreDecrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_405( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preDecMemberExpr(__p,stem,field,true);
	}

	/* void_expression = Op_PreDecrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_406( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preDecMemberExpr(__p,stem,field,false);
	}

	/* expression = Op_PreDecrID(name) */
	
	private InstructionList action_407( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_preDecNameExpr(__p,unary,true);
	}

	/* void_expression = Op_PreDecrID(name) */
	
	private InstructionList action_408( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_preDecNameExpr(__p,unary,false);
	}

	/* expression = Op_PreIncrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_409( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preIncBracketExpr(__p,stem,index,true);
	}

	/* void_expression = Op_PreIncrID(ArrayIndexExpressionID(expression, expression)) */
	
	private InstructionList action_410( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preIncBracketExpr(__p,stem,index,false);
	}

	/* expression = Op_PreIncrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_411( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preIncMemberExpr(__p,stem,field,true);
	}

	/* void_expression = Op_PreIncrID(MemberAccessExpressionID(expression, name)) */
	
	private InstructionList action_412( IASNode __p) throws java.lang.Exception
	{
		Binding field = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_preIncMemberExpr(__p,stem,field,false);
	}

	/* expression = Op_PreIncrID(name) */
	
	private InstructionList action_413( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_preIncNameExpr(__p,unary,true);
	}

	/* void_expression = Op_PreIncrID(name) */
	
	private InstructionList action_414( IASNode __p) throws java.lang.Exception
	{
		Binding unary = (Binding)__reducedValues.pop();
		return reducer.reduce_preIncNameExpr(__p,unary,false);
	}

	/* expression = MemberAccessExpressionID(expression, Op_AtID(NamespaceAccessExpressionID(name, name))) */
	
	private InstructionList action_415( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedAttributeExpr(__p,stem,qualifier,member,OP_getproperty);
	}

	/* expression = MemberAccessExpressionID(expression, Op_AtID(NamespaceAccessExpressionID(name, expression))) */
	
	private InstructionList action_416( IASNode __p) throws java.lang.Exception
	{
		InstructionList runtime_member = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedAttributeRuntimeMemberExpr(__p,stem,qualifier,runtime_member,OP_getproperty);
	}

	/* expression = Op_DescendantsID(expression, Op_AtID(NamespaceAccessExpressionID(name, name))) */
	
	private InstructionList action_417( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedAttributeExpr(__p,stem,qualifier,member,OP_getdescendants);
	}

	/* expression = Op_DescendantsID(expression, NamespaceAccessExpressionID(name, name)) */
	
	private InstructionList action_418( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedMemberAccessExpr(__p,stem,qualifier,member,OP_getdescendants);
	}

	/* expression = Op_DescendantsID(expression, NamespaceAccessExpressionID(name, expression)) */
	
	private InstructionList action_419( IASNode __p) throws java.lang.Exception
	{
		InstructionList runtime_member = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedAttributeRuntimeMemberExpr(__p,stem,qualifier,runtime_member,OP_getdescendants);
	}

	/* expression = Op_DescendantsID(expression, Op_AtID(NamespaceAccessExpressionID(name, expression))) */
	
	private InstructionList action_420( IASNode __p) throws java.lang.Exception
	{
		InstructionList runtime_member = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedAttributeRuntimeMemberExpr(__p,stem,qualifier,runtime_member,OP_getdescendants);
	}

	/* expression = MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, name)) */
	
	private InstructionList action_421( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedMemberAccessExpr(__p,stem,qualifier,member,OP_getproperty);
	}

	/* mxml_data_binding_setter_expression = MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, name)) */
	
	private InstructionList action_422( IASNode __p) throws java.lang.Exception
	{
		Binding member = (Binding)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedMemberAccessExpr_to_mxmlDataBindingSetter(__p,stem,qualifier,member);
	}

	/* expression = MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, expression)) */
	
	private InstructionList action_423( IASNode __p) throws java.lang.Exception
	{
		InstructionList runtime_member = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedMemberRuntimeNameExpr(__p,stem,qualifier,runtime_member);
	}

	/* mxml_data_binding_setter_expression = MemberAccessExpressionID(expression, NamespaceAccessExpressionID(name, expression)) */
	
	private InstructionList action_424( IASNode __p) throws java.lang.Exception
	{
		InstructionList runtime_member = (InstructionList)__reducedValues.pop();
		Binding qualifier = (Binding)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_qualifiedMemberRuntimeNameExpr_to_mxmlDataBindingSetter(__p,stem,qualifier,runtime_member);
	}

	/* name = QualifiedNamespaceExpressionID(dottedNamePart, dottedNamePart) */
	
	private Binding action_425( IASNode __p) throws java.lang.Exception
	{
		String second = (String)__reducedValues.pop();
		String first = (String)__reducedValues.pop();
		return reducer.dottedName(__p,first,second);
	}

	/* object_literal = LiteralRegexID(void) */
	
	private InstructionList action_426( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_regexLiteral(__p);
	}

	/* parameter = ArgumentID(decl_name, type_name) */
	
	private InstructionList action_427( IASNode __p) throws java.lang.Exception
	{
		Binding param_type = (Binding)__reducedValues.pop();
		Name param_name = (Name)__reducedValues.pop();
		return reducer.reduce_requiredParameter(__p,param_name,param_type);
	}

	/* parameter = ArgumentRestID(decl_name, type_name) */
	
	private InstructionList action_428( IASNode __p) throws java.lang.Exception
	{
		Binding param_type = (Binding)__reducedValues.pop();
		Name param_name = (Name)__reducedValues.pop();
		return reducer.reduce_restParameter(__p,param_name,param_type);
	}

	/* statement = ReturnStatementID(NilID(void)) */
	
	private InstructionList action_429( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_returnVoid(__p);
	}

	/* statement = ReturnStatementID(expression) */
	
	private InstructionList action_430( IASNode __p) throws java.lang.Exception
	{
		InstructionList value = (InstructionList)__reducedValues.pop();
		return reducer.reduce_returnValue(__p,value);
	}

	/* statement = ReturnStatementID(void) */
	
	private InstructionList action_431( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_returnVoid(__p);
	}

	/* statement = ReturnStatementID(Op_VoidID(expression)) */
	
	private InstructionList action_432( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_returnVoidSideEffect(__p,expr);
	}

	/* statement = ReturnStatementID(void_expression) */
	
	private InstructionList action_433( IASNode __p) throws java.lang.Exception
	{
		InstructionList no_value = (InstructionList)__reducedValues.pop();
		return reducer.reduce_returnVoidValue(__p,no_value);
	}

	/* expression = ArrayIndexExpressionID(Op_AtID(void), expression) */
	
	private InstructionList action_434( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_runtimeAttributeExp(__p,expr);
	}

	/* expression = RuntimeNameExpressionID(expression) */
	
	private InstructionList action_435( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_runtimeNameExpression(__p,expr);
	}

	/* name = IdentifierID(void) */
	
	private Binding action_436( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_simpleName(__p);
	}

	/* decl_name = IdentifierID(void) */
	
	private Name action_437( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_declName(__p);
	}

	/* qualifiedNamePart = IdentifierID(void) */
	
	private String action_438( IASNode __p) throws java.lang.Exception
	{
		return reducer.getIdentifierContent(__p);
	}

	/* import_name = IdentifierID(void) */
	
	private InstructionList action_439( IASNode __p) throws java.lang.Exception
	{
		return reducer.createInstructionList(__p);
	}

	/* comparison_expression = Op_StrictEqualID(expression, expression) */
	
	private InstructionList action_440( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_strictequals);
	}

	/* conditionalJump = Op_StrictEqualID(expression, expression) */
	
	private InstructionList action_441( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_ifstricteq);
	}

	/* comparison_expression = Op_StrictNotEqualID(expression, expression) */
	
	private InstructionList action_442( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.reduce_strictneqExpr(__p,l,r);
	}

	/* conditionalJump = Op_StrictNotEqualID(expression, expression) */
	
	private InstructionList action_443( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.conditionalJump(__p,l,r,OP_ifstrictne);
	}

	/* string_constant = LiteralStringID(void) */
	
	private String action_444( IASNode __p) throws java.lang.Exception
	{
		return reducer.getStringLiteralContent(__p);
	}

	/* expression = Op_SubtractID(expression, expression) */
	
	private InstructionList action_445( IASNode __p) throws java.lang.Exception
	{
		InstructionList r = (InstructionList)__reducedValues.pop();
		InstructionList l = (InstructionList)__reducedValues.pop();
		return reducer.binaryOp(__p,l,r,OP_subtract);
	}

	/* name = MemberAccessExpressionID(SuperID(void), name) */
	
	private Binding action_446( IASNode __p) throws java.lang.Exception
	{
		Binding qualified_name = (Binding)__reducedValues.pop();
		return reducer.reduce_superAccess(__p,qualified_name);
	}

	/* void_expression = FunctionCallID(SuperID(void), ContainerID(expression*)) */
	
	private InstructionList action_447( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector args = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_superCallExpr(__p,args);
	}

	/* expression = ArrayIndexExpressionID(SuperID(void), expression) */
	
	private InstructionList action_448( IASNode __p) throws java.lang.Exception
	{
		InstructionList index = (InstructionList)__reducedValues.pop();
	IASNode stem = SemanticUtils.getNthChild(__p, 0);
		return reducer.reduce_arrayIndexExpr(__p,null,true,index);
	}

	/* name = MemberAccessExpressionID(FunctionCallID(SuperID(void), ContainerID(IdentifierID(void))), name) */
	
	private Binding action_449( IASNode __p) throws java.lang.Exception
	{
		Binding qualified_name = (Binding)__reducedValues.pop();
		return reducer.reduce_superAccess(__p,qualified_name);
	}

	/* conditionalElements = ConditionalID(expression, statement*) */
	
	private ABCGeneratingReducer.ConditionalFragment action_450( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector case_actions = (java.util.Vector)__reducedValues.pop();
		InstructionList case_expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_conditionalFragment(__p,case_expr,case_actions);
	}

	/* conditionalElements = DefaultID(BlockID(statement*)) */
	
	private ABCGeneratingReducer.ConditionalFragment action_451( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector case_actions = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_conditionalFragment(__p,null,case_actions);
	}

	/* statement = SwitchID(expression, BlockID(conditionalElements*)) */
	
	private InstructionList action_452( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector cases = (java.util.Vector)__reducedValues.pop();
		InstructionList switch_expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_switchStmt(__p,switch_expr,cases);
	}

	/* expression = TernaryExpressionID(expression, expression, expression) */
	
	private InstructionList action_453( IASNode __p) throws java.lang.Exception
	{
		InstructionList when_false = (InstructionList)__reducedValues.pop();
		InstructionList when_true = (InstructionList)__reducedValues.pop();
		InstructionList test = (InstructionList)__reducedValues.pop();
		return reducer.reduce_ternaryExpr(__p,test,when_true,when_false);
	}

	/* statement = ThrowsStatementID(expression) */
	
	private InstructionList action_454( IASNode __p) throws java.lang.Exception
	{
		InstructionList tossable = (InstructionList)__reducedValues.pop();
		return reducer.reduce_throwStmt(__p,tossable);
	}

	/* statement = TryID(statement, FinallyID(finally_clause), catch_block+) */
	
	private InstructionList action_455( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector catch_blocks = (java.util.Vector)__reducedValues.pop();
		InstructionList finally_stmt = (InstructionList)__reducedValues.pop();
		InstructionList try_stmt = (InstructionList)__reducedValues.pop();
		return reducer.reduce_tryCatchFinallyStmt(__p,try_stmt,finally_stmt,catch_blocks);
	}

	/* statement = TryID(statement, catch_block+) */
	
	private InstructionList action_456( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector catch_blocks = (java.util.Vector)__reducedValues.pop();
		InstructionList try_stmt = (InstructionList)__reducedValues.pop();
		return reducer.reduce_tryCatchStmt(__p,try_stmt,catch_blocks);
	}

	/* statement = TryID(statement, FinallyID(finally_clause)) */
	
	private InstructionList action_457( IASNode __p) throws java.lang.Exception
	{
		InstructionList finally_stmt = (InstructionList)__reducedValues.pop();
		InstructionList try_stmt = (InstructionList)__reducedValues.pop();
		return reducer.reduce_tryFinallyStmt(__p,try_stmt,finally_stmt);
	}

	/* var_decl = BindableVariableID(decl_name, type_name, var_decl*) */
	
	private InstructionList action_458( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector chained_decls = (java.util.Vector)__reducedValues.pop();
		Binding var_type = (Binding)__reducedValues.pop();
		Name var_name = (Name)__reducedValues.pop();
		return reducer.reduce_typedBindableVariableDecl(__p,var_name,var_type,chained_decls);
	}

	/* var_decl = BindableVariableID(decl_name, type_name, expression, var_decl*) */
	
	private InstructionList action_459( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector chained_decls = (java.util.Vector)__reducedValues.pop();
		InstructionList var_initializer = (InstructionList)__reducedValues.pop();
		Binding var_type = (Binding)__reducedValues.pop();
		Name var_name = (Name)__reducedValues.pop();
		return reducer.reduce_typedBindableVariableDeclWithInitializer(__p,var_name,var_type,var_initializer,chained_decls);
	}

	/* function = FunctionID(IdentifierID(void), parameterList, return_type_name, statement) */
	
	private InstructionList action_460( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		Binding return_type = (Binding)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.generateFunctionBody(__p,block,return_type);
	}

	/* statement = FunctionID(IdentifierID(void), parameterList, return_type_name, statement) */
	
	private InstructionList action_461( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		Binding return_type = (Binding)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.reduce_typedFunction_to_statement(__p,plist,return_type,block);
	}

	/* expression = FunctionObjectID(FunctionID(IdentifierID(void), parameterList, return_type_name, statement)) */
	
	private InstructionList action_462( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		Binding return_type = (Binding)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
	IASNode function_name = SemanticUtils.getNthChild(SemanticUtils.getNthChild(__p, 0), 0);
		return reducer.reduce_functionObject(__p,function_name,plist,return_type,block);
	}

	/* function = GetterID(IdentifierID(void), parameterList, return_type_name, statement) */
	
	private InstructionList action_463( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		Binding return_type = (Binding)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.generateFunctionBody(__p,block,return_type);
	}

	/* function = SetterID(IdentifierID(void), parameterList, return_type_name, statement) */
	
	private InstructionList action_464( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		Binding return_type = (Binding)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.generateFunctionBody(__p,block,return_type);
	}

	/* var_decl = VariableID(decl_name, type_name, var_decl*) */
	
	private InstructionList action_465( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector chained_decls = (java.util.Vector)__reducedValues.pop();
		Binding var_type = (Binding)__reducedValues.pop();
		Name var_name = (Name)__reducedValues.pop();
		return reducer.reduce_typedVariableDecl(__p,var_name,var_type,chained_decls);
	}

	/* var_decl = VariableID(decl_name, type_name, constant_value, var_decl*) */
	
	private InstructionList action_466( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector chained_decls = (java.util.Vector)__reducedValues.pop();
		Object constant_var_initializer = (Object)__reducedValues.pop();
		Binding var_type = (Binding)__reducedValues.pop();
		Name var_name = (Name)__reducedValues.pop();
		return reducer.reduce_typedVariableDeclWithConstantInitializer(__p,var_name,var_type,constant_var_initializer,chained_decls);
	}

	/* var_decl = VariableID(decl_name, type_name, expression, var_decl*) */
	
	private InstructionList action_467( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector chained_decls = (java.util.Vector)__reducedValues.pop();
		InstructionList var_initializer = (InstructionList)__reducedValues.pop();
		Binding var_type = (Binding)__reducedValues.pop();
		Name var_name = (Name)__reducedValues.pop();
		return reducer.reduce_typedVariableDeclWithInitializer(__p,var_name,var_type,var_initializer,chained_decls);
	}

	/* name = VariableExpressionID(VariableID(decl_name, type_name)) */
	
	private Binding action_468( IASNode __p) throws java.lang.Exception
	{
		Binding var_type = (Binding)__reducedValues.pop();
		Name var_name = (Name)__reducedValues.pop();
		return reducer.reduce_typedVariableExpression(__p,var_name,var_type);
	}

	/* function = FunctionID(IdentifierID(void), parameterList, statement) */
	
	private InstructionList action_469( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.generateFunctionBody(__p,block,LexicalScope.anyType);
	}

	/* statement = FunctionID(IdentifierID(void), parameterList, statement) */
	
	private InstructionList action_470( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.reduce_typelessFunction(__p,plist,block);
	}

	/* expression = FunctionObjectID(FunctionID(IdentifierID(void), parameterList, statement)) */
	
	private InstructionList action_471( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
	IASNode function_name = SemanticUtils.getNthChild(SemanticUtils.getNthChild(__p, 0), 0);
		return reducer.reduce_functionObject(__p,function_name,plist,null,block);
	}

	/* function = GetterID(IdentifierID(void), parameterList, statement) */
	
	private InstructionList action_472( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.generateFunctionBody(__p,block,LexicalScope.anyType);
	}

	/* function = SetterID(IdentifierID(void), parameterList, statement) */
	
	private InstructionList action_473( IASNode __p) throws java.lang.Exception
	{
		InstructionList block = (InstructionList)__reducedValues.pop();
		InstructionList plist = (InstructionList)__reducedValues.pop();
		return reducer.generateFunctionBody(__p,block,LexicalScope.anyType);
	}

	/* expression = Op_TypeOfID(expression) */
	
	private InstructionList action_474( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_typeof_expr(__p,expr);
	}

	/* expression = Op_TypeOfID(name) */
	
	private InstructionList action_475( IASNode __p) throws java.lang.Exception
	{
		Binding n = (Binding)__reducedValues.pop();
		return reducer.reduce_typeof_name(__p,n);
	}

	/* uint_constant = LiteralUintID(void) */
	
	private Long action_476( IASNode __p) throws java.lang.Exception
	{
		return reducer.getUintContent(__p);
	}

	/* expression = Op_SubtractID(expression) */
	
	private InstructionList action_477( IASNode __p) throws java.lang.Exception
	{
		InstructionList e = (InstructionList)__reducedValues.pop();
		return reducer.unaryOp(__p,e,OP_negate);
	}

	/* expression = Op_AddID(expression) */
	
	private InstructionList action_478( IASNode __p) throws java.lang.Exception
	{
		InstructionList e = (InstructionList)__reducedValues.pop();
		{
		    return reducer.unaryOp(__p, e, reducer.op_unplus());
		}
	}

	/* expression = MemberAccessExpressionID(expression, ArrayIndexExpressionID(Op_AtID(void), expression)) */
	
	private InstructionList action_479( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_unqualifiedAttributeExpr(__p,stem,expr,OP_getproperty);
	}

	/* expression = Op_DescendantsID(expression, ArrayIndexExpressionID(Op_AtID(void), expression)) */
	
	private InstructionList action_480( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		InstructionList stem = (InstructionList)__reducedValues.pop();
		return reducer.reduce_unqualifiedAttributeExpr(__p,stem,expr,OP_getdescendants);
	}

	/* statement = UseID(name) */
	
	private InstructionList action_481( IASNode __p) throws java.lang.Exception
	{
		Binding ns_name = (Binding)__reducedValues.pop();
		return reducer.reduce_useNamespaceDirective(__p,ns_name);
	}

	/* void_expression = VariableExpressionID(var_decl+) */
	
	private InstructionList action_482( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector decls = (java.util.Vector)__reducedValues.pop();
		return reducer.reduce_variableExpression(__p,decls);
	}

	/* vector_literal = VectorLiteralID(type_name, ContainerID(expression*)) */
	
	private InstructionList action_483( IASNode __p) throws java.lang.Exception
	{
		java.util.Vector elements = (java.util.Vector)__reducedValues.pop();
		Binding type_param = (Binding)__reducedValues.pop();
		return reducer.reduce_vectorLiteral(__p,type_param,elements);
	}

	/* constant_value = LiteralObjectID(void) */
	
	private Object action_484( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_void0Literal_to_constant_value(__p);
	}

	/* object_literal = LiteralObjectID(void) */
	
	private InstructionList action_485( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_void0Literal_to_object_literal(__p);
	}

	/* object_literal = Op_VoidID(void) */
	
	private InstructionList action_486( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_void0Operator(__p);
	}

	/* constant_value = Op_VoidID(constant_value) */
	
	private Object action_487( IASNode __p) throws java.lang.Exception
	{
		Object value = (Object)__reducedValues.pop();
		return reducer.reduce_voidOperator_to_constant_value(__p,value);
	}

	/* return_type_name = VoidID(void) */
	
	private Binding action_488( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_voidExpr_to_return_type_name(__p);
	}

	/* return_type_name = VoidID(void) */
	
	private Binding action_489( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_voidExpr_to_return_type_name(__p);
	}

	/* return_type_name = VoidID(void) */
	
	private Binding action_490( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_voidExpr_to_return_type_name(__p);
	}

	/* type_name = VoidID(void) */
	
	private Binding action_491( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_voidExpr_to_type_name(__p);
	}

	/* expression = VoidID(void) */
	
	private InstructionList action_492( IASNode __p) throws java.lang.Exception
	{
		return reducer.reduce_voidExpr_to_expression(__p);
	}

	/* expression = Op_VoidID(expression) */
	
	private InstructionList action_493( IASNode __p) throws java.lang.Exception
	{
		InstructionList expr = (InstructionList)__reducedValues.pop();
		return reducer.reduce_voidOperator_to_expression(__p,expr);
	}

	/* statement = WhileLoopID(expression, statement) */
	
	private InstructionList action_494( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList cond = (InstructionList)__reducedValues.pop();
		return reducer.reduce_whileStmt(__p,cond,body);
	}

	/* statement = WithID(expression, statement) */
	
	private InstructionList action_495( IASNode __p) throws java.lang.Exception
	{
		InstructionList body = (InstructionList)__reducedValues.pop();
		InstructionList new_scope = (InstructionList)__reducedValues.pop();
		return reducer.reduce_withStmt(__p,new_scope,body);
	}

	/* statement = void_expression */
	
	private InstructionList action_496( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}

	/* literal = array_literal */
	
	private InstructionList action_497( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}

	/* return_type_name = type_name */
	
	private Binding action_498( IASNode __p) throws java.lang.Exception
	{
		return((Binding)__reducedValues.pop());
	}

	/* string_constant = e4x_literal */
	
	private String action_499( IASNode __p) throws java.lang.Exception
	{
		return((String)__reducedValues.pop());
	}

	/* numeric_constant = uint_constant */
	
	private Number action_500( IASNode __p) throws java.lang.Exception
	{
		return((Number)__reducedValues.pop());
	}

	/* new_type_name = name */
	
	private Binding action_501( IASNode __p) throws java.lang.Exception
	{
		return((Binding)__reducedValues.pop());
	}

	/* type_param_expression = expression */
	
	private InstructionList action_502( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}

	/* literal = object_literal */
	
	private InstructionList action_503( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}

	/* statement = var_decl */
	
	private InstructionList action_504( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}

	/* dottedNamePart = qualifiedNamePart */
	
	private String action_505( IASNode __p) throws java.lang.Exception
	{
		return((String)__reducedValues.pop());
	}

	/* expression = literal */
	
	private InstructionList action_506( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}

	/* numeric_constant = double_constant */
	
	private Number action_507( IASNode __p) throws java.lang.Exception
	{
		return((Number)__reducedValues.pop());
	}

	/* literal = boolean_literal */
	
	private InstructionList action_508( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}

	/* numeric_constant = integer_constant */
	
	private Number action_509( IASNode __p) throws java.lang.Exception
	{
		return((Number)__reducedValues.pop());
	}

	/* required_constant_value = constant_value */
	
	private Object action_510( IASNode __p) throws java.lang.Exception
	{
		return((Object)__reducedValues.pop());
	}

	/* expression = comparison_expression */
	
	private InstructionList action_511( IASNode __p) throws java.lang.Exception
	{
		return((InstructionList)__reducedValues.pop());
	}
	
	private void dispatchAction( JBurgAnnotation ___node, int iRule) throws java.lang.Exception
	{
		IASNode __p = ___node.getNode();

		switch( iRule )
		{
			case 1:
			{
				this.reduceAntecedent(___node, __expression_NT);
				__reducedValues.push(this.action_1(__p));
				break;
			}
			case 2:
			{
				__reducedValues.push(this.action_2(__p));
				break;
			}
			case 3:
			{
				this.reduceAntecedent(___node, __expression_NT);
				__reducedValues.push(this.action_3(__p));
				break;
			}
			case 4:
			{
				this.reduceAntecedent(___node, __name_NT);
				__reducedValues.push(this.action_4(__p));
				break;
			}
			case 5:
			{
				this.reduceAntecedent(___node, __type_name_NT);
				__reducedValues.push(this.action_5(__p));
				break;
			}
			case 6:
			{
				this.reduceAntecedent(___node, __name_NT);
				__reducedValues.push(this.action_6(__p));
				break;
			}
			case 7:
			{
				this.reduceAntecedent(___node, __name_NT);
				__reducedValues.push(this.action_7(__p));
				break;
			}
			case 8:
			{
				this.reduceAntecedent(___node, __runtime_name_expression_NT);
				__reducedValues.push(this.action_8(__p));
				break;
			}
			case 9:
			{
				this.reduceAntecedent(___node, __string_constant_NT);
				__reducedValues.push(this.action_9(__p));
				break;
			}
			case 10:
			{
				this.reduceAntecedent(___node, __integer_constant_NT);
				__reducedValues.push(this.action_10(__p));
				break;
			}
			case 11:
			{
				this.reduceAntecedent(___node, __uint_constant_NT);
				__reducedValues.push(this.action_11(__p));
				break;
			}
			case 12:
			{
				this.reduceAntecedent(___node, __boolean_constant_NT);
				__reducedValues.push(this.action_12(__p));
				break;
			}
			case 13:
			{
				__reducedValues.push(this.action_13(__p));
				break;
			}
			case 14:
			{
				__reducedValues.push(this.action_14(__p));
				break;
			}
			case 15:
			{
				__reducedValues.push(this.action_15(__p));
				break;
			}
			case 16:
			{
				__reducedValues.push(this.action_16(__p));
				break;
			}
			case 17:
			{
				__reducedValues.push(this.action_17(__p));
				break;
			}
			case 18:
			{
				__reducedValues.push(this.action_18(__p));
				break;
			}
			case 19:
			{
				__reducedValues.push(this.action_19(__p));
				break;
			}
			case 20:
			{
				__reducedValues.push(this.action_20(__p));
				break;
			}
			case 21:
			{
				__reducedValues.push(this.action_21(__p));
				break;
			}
			case 22:
			{
				__reducedValues.push(this.action_22(__p));
				break;
			}
			case 23:
			{
				__reducedValues.push(this.action_23(__p));
				break;
			}
			case 24:
			{
				__reducedValues.push(this.action_24(__p));
				break;
			}
			case 25:
			{
				__reducedValues.push(this.action_25(__p));
				break;
			}
			case 26:
			{
				__reducedValues.push(this.action_26(__p));
				break;
			}
			case 27:
			{
				__reducedValues.push(this.action_27(__p));
				break;
			}
			case 28:
			{
				__reducedValues.push(this.action_28(__p));
				break;
			}
			case 29:
			{
				__reducedValues.push(this.action_29(__p));
				break;
			}
			case 30:
			{
				__reducedValues.push(this.action_30(__p));
				break;
			}
			case 31:
			{
				__reducedValues.push(this.action_31(__p));
				break;
			}
			case 32:
			{
				__reducedValues.push(this.action_32(__p));
				break;
			}
			case 33:
			{
				__reducedValues.push(this.action_33(__p));
				break;
			}
			case 34:
			{
				__reducedValues.push(this.action_34(__p));
				break;
			}
			case 35:
			{
				__reducedValues.push(this.action_35(__p));
				break;
			}
			case 36:
			{
				__reducedValues.push(this.action_36(__p));
				break;
			}
			case 37:
			{
				__reducedValues.push(this.action_37(__p));
				break;
			}
			case 38:
			{
				__reducedValues.push(this.action_38(__p));
				break;
			}
			case 39:
			{
				__reducedValues.push(this.action_39(__p));
				break;
			}
			case 40:
			{
				__reducedValues.push(this.action_40(__p));
				break;
			}
			case 41:
			{
				__reducedValues.push(this.action_41(__p));
				break;
			}
			case 42:
			{
				__reducedValues.push(this.action_42(__p));
				break;
			}
			case 43:
			{
				__reducedValues.push(this.action_43(__p));
				break;
			}
			case 44:
			{
				__reducedValues.push(this.action_44(__p));
				break;
			}
			case 45:
			{
				__reducedValues.push(this.action_45(__p));
				break;
			}
			case 46:
			{
				__reducedValues.push(this.action_46(__p));
				break;
			}
			case 47:
			{
				__reducedValues.push(this.action_47(__p));
				break;
			}
			case 48:
			{
				__reducedValues.push(this.action_48(__p));
				break;
			}
			case 49:
			{
				__reducedValues.push(this.action_49(__p));
				break;
			}
			case 50:
			{
				__reducedValues.push(this.action_50(__p));
				break;
			}
			case 51:
			{
				__reducedValues.push(this.action_51(__p));
				break;
			}
			case 52:
			{
				__reducedValues.push(this.action_52(__p));
				break;
			}
			case 53:
			{
				__reducedValues.push(this.action_53(__p));
				break;
			}
			case 54:
			{
				__reducedValues.push(this.action_54(__p));
				break;
			}
			case 55:
			{
				__reducedValues.push(this.action_55(__p));
				break;
			}
			case 56:
			{
				__reducedValues.push(this.action_56(__p));
				break;
			}
			case 57:
			{
				__reducedValues.push(this.action_57(__p));
				break;
			}
			case 58:
			{
				__reducedValues.push(this.action_58(__p));
				break;
			}
			case 59:
			{
				__reducedValues.push(this.action_59(__p));
				break;
			}
			case 60:
			{
				__reducedValues.push(this.action_60(__p));
				break;
			}
			case 61:
			{
				__reducedValues.push(this.action_61(__p));
				break;
			}
			case 62:
			{
				__reducedValues.push(this.action_62(__p));
				break;
			}
			case 63:
			{
				__reducedValues.push(this.action_63(__p));
				break;
			}
			case 64:
			{
				__reducedValues.push(this.action_64(__p));
				break;
			}
			case 65:
			{
				__reducedValues.push(this.action_65(__p));
				break;
			}
			case 66:
			{
				__reducedValues.push(this.action_66(__p));
				break;
			}
			case 67:
			{
				__reducedValues.push(this.action_67(__p));
				break;
			}
			case 68:
			{
				__reducedValues.push(this.action_68(__p));
				break;
			}
			case 69:
			{
				__reducedValues.push(this.action_69(__p));
				break;
			}
			case 70:
			{
				__reducedValues.push(this.action_70(__p));
				break;
			}
			case 71:
			{
				__reducedValues.push(this.action_71(__p));
				break;
			}
			case 72:
			{
				__reducedValues.push(this.action_72(__p));
				break;
			}
			case 73:
			{
				__reducedValues.push(this.action_73(__p));
				break;
			}
			case 74:
			{
				__reducedValues.push(this.action_74(__p));
				break;
			}
			case 75:
			{
				__reducedValues.push(this.action_75(__p));
				break;
			}
			case 76:
			{
				__reducedValues.push(this.action_76(__p));
				break;
			}
			case 77:
			{
				__reducedValues.push(this.action_77(__p));
				break;
			}
			case 78:
			{
				__reducedValues.push(this.action_78(__p));
				break;
			}
			case 79:
			{
				__reducedValues.push(this.action_79(__p));
				break;
			}
			case 80:
			{
				__reducedValues.push(this.action_80(__p));
				break;
			}
			case 81:
			{
				this.reduceAntecedent(___node, __expression_NT);
				__reducedValues.push(this.action_81(__p));
				break;
			}
			case 82:
			{
				this.reduceAntecedent(___node, __name_NT);
				__reducedValues.push(this.action_82(__p));
				break;
			}
			case 83:
			{
				__reducedValues.push(this.action_83(__p));
				break;
			}
			case 84:
			{
				__reducedValues.push(this.action_84(__p));
				break;
			}
			case 85:
			{
				this.reduceAntecedent(___node, __string_constant_NT);
				__reducedValues.push(this.action_85(__p));
				break;
			}
			case 86:
			{
				this.reduceAntecedent(___node, __boolean_constant_NT);
				__reducedValues.push(this.action_86(__p));
				break;
			}
			case 87:
			{
				this.reduceAntecedent(___node, __numeric_constant_NT);
				__reducedValues.push(this.action_87(__p));
				break;
			}
			case 88:
			{
				this.reduceAntecedent(___node, __double_constant_NT);
				__reducedValues.push(this.action_88(__p));
				break;
			}
			case 89:
			{
				this.reduceAntecedent(___node, __numeric_constant_NT);
				__reducedValues.push(this.action_89(__p));
				break;
			}
			case 90:
			{
				this.reduceAntecedent(___node, __constant_value_NT);
				__reducedValues.push(this.action_90(__p));
				break;
			}
			case 91:
			{
				this.reduceAntecedent(___node, __non_resolving_identifier_NT);
				__reducedValues.push(this.action_91(__p));
				break;
			}
			case 92:
			{
				this.reduceAntecedent(___node, __boolean_constant_NT);
				__reducedValues.push(this.action_92(__p));
				break;
			}
			case 93:
			{
				this.reduceAntecedent(___node, __name_NT);
				__reducedValues.push(this.action_93(__p));
				break;
			}
			case 94:
			{
				this.reduceAntecedent(___node, __runtime_name_expression_NT);
				__reducedValues.push(this.action_94(__p));
				break;
			}
			case 95:
			{
				__reducedValues.push(this.action_95(__p));
				break;
			}
			case 96:
			{
				__reducedValues.push(this.action_96(__p));
				break;
			}
			case 97:
			{
				__reducedValues.push(this.action_97(__p));
				break;
			}
			case 98:
			{
				__reducedValues.push(this.action_98(__p));
				break;
			}
			case 99:
			{
				__reducedValues.push(this.action_99(__p));
				break;
			}
			case 100:
			{
				__reducedValues.push(this.action_100(__p));
				break;
			}
			case 101:
			{
				__reducedValues.push(this.action_101(__p));
				break;
			}
			case 102:
			{
				__reducedValues.push(this.action_102(__p));
				break;
			}
			case 103:
			{
				__reducedValues.push(this.action_103(__p));
				break;
			}
			case 104:
			{
				__reducedValues.push(this.action_104(__p));
				break;
			}
			case 105:
			{
				__reducedValues.push(this.action_105(__p));
				break;
			}
			case 106:
			{
				__reducedValues.push(this.action_106(__p));
				break;
			}
			case 107:
			{
				__reducedValues.push(this.action_107(__p));
				break;
			}
			case 108:
			{
				__reducedValues.push(this.action_108(__p));
				break;
			}
			case 109:
			{
				__reducedValues.push(this.action_109(__p));
				break;
			}
			case 110:
			{
				__reducedValues.push(this.action_110(__p));
				break;
			}
			case 111:
			{
				__reducedValues.push(this.action_111(__p));
				break;
			}
			case 112:
			{
				__reducedValues.push(this.action_112(__p));
				break;
			}
			case 113:
			{
				__reducedValues.push(this.action_113(__p));
				break;
			}
			case 114:
			{
				__reducedValues.push(this.action_114(__p));
				break;
			}
			case 115:
			{
				__reducedValues.push(this.action_115(__p));
				break;
			}
			case 116:
			{
				__reducedValues.push(this.action_116(__p));
				break;
			}
			case 117:
			{
				__reducedValues.push(this.action_117(__p));
				break;
			}
			case 118:
			{
				__reducedValues.push(this.action_118(__p));
				break;
			}
			case 119:
			{
				__reducedValues.push(this.action_119(__p));
				break;
			}
			case 120:
			{
				__reducedValues.push(this.action_120(__p));
				break;
			}
			case 121:
			{
				__reducedValues.push(this.action_121(__p));
				break;
			}
			case 122:
			{
				__reducedValues.push(this.action_122(__p));
				break;
			}
			case 123:
			{
				__reducedValues.push(this.action_123(__p));
				break;
			}
			case 124:
			{
				__reducedValues.push(this.action_124(__p));
				break;
			}
			case 125:
			{
				__reducedValues.push(this.action_125(__p));
				break;
			}
			case 126:
			{
				__reducedValues.push(this.action_126(__p));
				break;
			}
			case 127:
			{
				__reducedValues.push(this.action_127(__p));
				break;
			}
			case 128:
			{
				__reducedValues.push(this.action_128(__p));
				break;
			}
			case 129:
			{
				__reducedValues.push(this.action_129(__p));
				break;
			}
			case 130:
			{
				__reducedValues.push(this.action_130(__p));
				break;
			}
			case 131:
			{
				__reducedValues.push(this.action_131(__p));
				break;
			}
			case 132:
			{
				__reducedValues.push(this.action_132(__p));
				break;
			}
			case 133:
			{
				__reducedValues.push(this.action_133(__p));
				break;
			}
			case 134:
			{
				__reducedValues.push(this.action_134(__p));
				break;
			}
			case 135:
			{
				__reducedValues.push(this.action_135(__p));
				break;
			}
			case 136:
			{
				__reducedValues.push(this.action_136(__p));
				break;
			}
			case 137:
			{
				__reducedValues.push(this.action_137(__p));
				break;
			}
			case 138:
			{
				__reducedValues.push(this.action_138(__p));
				break;
			}
			case 139:
			{
				__reducedValues.push(this.action_139(__p));
				break;
			}
			case 140:
			{
				__reducedValues.push(this.action_140(__p));
				break;
			}
			case 141:
			{
				__reducedValues.push(this.action_141(__p));
				break;
			}
			case 142:
			{
				__reducedValues.push(this.action_142(__p));
				break;
			}
			case 143:
			{
				__reducedValues.push(this.action_143(__p));
				break;
			}
			case 144:
			{
				__reducedValues.push(this.action_144(__p));
				break;
			}
			case 145:
			{
				__reducedValues.push(this.action_145(__p));
				break;
			}
			case 146:
			{
				__reducedValues.push(this.action_146(__p));
				break;
			}
			case 147:
			{
				__reducedValues.push(this.action_147(__p));
				break;
			}
			case 148:
			{
				__reducedValues.push(this.action_148(__p));
				break;
			}
			case 149:
			{
				__reducedValues.push(this.action_149(__p));
				break;
			}
			case 150:
			{
				__reducedValues.push(this.action_150(__p));
				break;
			}
			case 151:
			{
				__reducedValues.push(this.action_151(__p));
				break;
			}
			case 152:
			{
				__reducedValues.push(this.action_152(__p));
				break;
			}
			case 153:
			{
				__reducedValues.push(this.action_153(__p));
				break;
			}
			case 154:
			{
				__reducedValues.push(this.action_154(__p));
				break;
			}
			case 155:
			{
				__reducedValues.push(this.action_155(__p));
				break;
			}
			case 156:
			{
				__reducedValues.push(this.action_156(__p));
				break;
			}
			case 157:
			{
				__reducedValues.push(this.action_157(__p));
				break;
			}
			case 158:
			{
				__reducedValues.push(this.action_158(__p));
				break;
			}
			case 159:
			{
				__reducedValues.push(this.action_159(__p));
				break;
			}
			case 160:
			{
				__reducedValues.push(this.action_160(__p));
				break;
			}
			case 161:
			{
				__reducedValues.push(this.action_161(__p));
				break;
			}
			case 162:
			{
				__reducedValues.push(this.action_162(__p));
				break;
			}
			case 163:
			{
				__reducedValues.push(this.action_163(__p));
				break;
			}
			case 164:
			{
				__reducedValues.push(this.action_164(__p));
				break;
			}
			case 165:
			{
				__reducedValues.push(this.action_165(__p));
				break;
			}
			case 166:
			{
				__reducedValues.push(this.action_166(__p));
				break;
			}
			case 167:
			{
				__reducedValues.push(this.action_167(__p));
				break;
			}
			case 168:
			{
				__reducedValues.push(this.action_168(__p));
				break;
			}
			case 169:
			{
				__reducedValues.push(this.action_169(__p));
				break;
			}
			case 170:
			{
				__reducedValues.push(this.action_170(__p));
				break;
			}
			case 171:
			{
				__reducedValues.push(this.action_171(__p));
				break;
			}
			case 172:
			{
				__reducedValues.push(this.action_172(__p));
				break;
			}
			case 173:
			{
				__reducedValues.push(this.action_173(__p));
				break;
			}
			case 174:
			{
				__reducedValues.push(this.action_174(__p));
				break;
			}
			case 175:
			{
				__reducedValues.push(this.action_175(__p));
				break;
			}
			case 176:
			{
				__reducedValues.push(this.action_176(__p));
				break;
			}
			case 177:
			{
				__reducedValues.push(this.action_177(__p));
				break;
			}
			case 178:
			{
				__reducedValues.push(this.action_178(__p));
				break;
			}
			case 179:
			{
				__reducedValues.push(this.action_179(__p));
				break;
			}
			case 180:
			{
				__reducedValues.push(this.action_180(__p));
				break;
			}
			case 181:
			{
				__reducedValues.push(this.action_181(__p));
				break;
			}
			case 182:
			{
				__reducedValues.push(this.action_182(__p));
				break;
			}
			case 183:
			{
				__reducedValues.push(this.action_183(__p));
				break;
			}
			case 184:
			{
				__reducedValues.push(this.action_184(__p));
				break;
			}
			case 185:
			{
				__reducedValues.push(this.action_185(__p));
				break;
			}
			case 186:
			{
				__reducedValues.push(this.action_186(__p));
				break;
			}
			case 187:
			{
				__reducedValues.push(this.action_187(__p));
				break;
			}
			case 188:
			{
				__reducedValues.push(this.action_188(__p));
				break;
			}
			case 189:
			{
				__reducedValues.push(this.action_189(__p));
				break;
			}
			case 190:
			{
				__reducedValues.push(this.action_190(__p));
				break;
			}
			case 191:
			{
				__reducedValues.push(this.action_191(__p));
				break;
			}
			case 192:
			{
				__reducedValues.push(this.action_192(__p));
				break;
			}
			case 193:
			{
				__reducedValues.push(this.action_193(__p));
				break;
			}
			case 194:
			{
				__reducedValues.push(this.action_194(__p));
				break;
			}
			case 195:
			{
				__reducedValues.push(this.action_195(__p));
				break;
			}
			case 196:
			{
				__reducedValues.push(this.action_196(__p));
				break;
			}
			case 197:
			{
				__reducedValues.push(this.action_197(__p));
				break;
			}
			case 198:
			{
				__reducedValues.push(this.action_198(__p));
				break;
			}
			case 199:
			{
				__reducedValues.push(this.action_199(__p));
				break;
			}
			case 200:
			{
				__reducedValues.push(this.action_200(__p));
				break;
			}
			case 201:
			{
				__reducedValues.push(this.action_201(__p));
				break;
			}
			case 202:
			{
				__reducedValues.push(this.action_202(__p));
				break;
			}
			case 203:
			{
				__reducedValues.push(this.action_203(__p));
				break;
			}
			case 204:
			{
				__reducedValues.push(this.action_204(__p));
				break;
			}
			case 205:
			{
				__reducedValues.push(this.action_205(__p));
				break;
			}
			case 206:
			{
				__reducedValues.push(this.action_206(__p));
				break;
			}
			case 207:
			{
				__reducedValues.push(this.action_207(__p));
				break;
			}
			case 208:
			{
				__reducedValues.push(this.action_208(__p));
				break;
			}
			case 209:
			{
				__reducedValues.push(this.action_209(__p));
				break;
			}
			case 210:
			{
				__reducedValues.push(this.action_210(__p));
				break;
			}
			case 211:
			{
				__reducedValues.push(this.action_211(__p));
				break;
			}
			case 212:
			{
				__reducedValues.push(this.action_212(__p));
				break;
			}
			case 213:
			{
				__reducedValues.push(this.action_213(__p));
				break;
			}
			case 214:
			{
				__reducedValues.push(this.action_214(__p));
				break;
			}
			case 215:
			{
				__reducedValues.push(this.action_215(__p));
				break;
			}
			case 216:
			{
				__reducedValues.push(this.action_216(__p));
				break;
			}
			case 217:
			{
				__reducedValues.push(this.action_217(__p));
				break;
			}
			case 218:
			{
				__reducedValues.push(this.action_218(__p));
				break;
			}
			case 219:
			{
				__reducedValues.push(this.action_219(__p));
				break;
			}
			case 220:
			{
				__reducedValues.push(this.action_220(__p));
				break;
			}
			case 221:
			{
				__reducedValues.push(this.action_221(__p));
				break;
			}
			case 222:
			{
				__reducedValues.push(this.action_222(__p));
				break;
			}
			case 223:
			{
				__reducedValues.push(this.action_223(__p));
				break;
			}
			case 224:
			{
				__reducedValues.push(this.action_224(__p));
				break;
			}
			case 225:
			{
				__reducedValues.push(this.action_225(__p));
				break;
			}
			case 226:
			{
				__reducedValues.push(this.action_226(__p));
				break;
			}
			case 227:
			{
				__reducedValues.push(this.action_227(__p));
				break;
			}
			case 228:
			{
				__reducedValues.push(this.action_228(__p));
				break;
			}
			case 229:
			{
				__reducedValues.push(this.action_229(__p));
				break;
			}
			case 230:
			{
				__reducedValues.push(this.action_230(__p));
				break;
			}
			case 231:
			{
				__reducedValues.push(this.action_231(__p));
				break;
			}
			case 232:
			{
				__reducedValues.push(this.action_232(__p));
				break;
			}
			case 233:
			{
				__reducedValues.push(this.action_233(__p));
				break;
			}
			case 234:
			{
				__reducedValues.push(this.action_234(__p));
				break;
			}
			case 235:
			{
				__reducedValues.push(this.action_235(__p));
				break;
			}
			case 236:
			{
				__reducedValues.push(this.action_236(__p));
				break;
			}
			case 237:
			{
				__reducedValues.push(this.action_237(__p));
				break;
			}
			case 238:
			{
				__reducedValues.push(this.action_238(__p));
				break;
			}
			case 239:
			{
				__reducedValues.push(this.action_239(__p));
				break;
			}
			case 240:
			{
				__reducedValues.push(this.action_240(__p));
				break;
			}
			case 241:
			{
				__reducedValues.push(this.action_241(__p));
				break;
			}
			case 242:
			{
				__reducedValues.push(this.action_242(__p));
				break;
			}
			case 243:
			{
				__reducedValues.push(this.action_243(__p));
				break;
			}
			case 244:
			{
				__reducedValues.push(this.action_244(__p));
				break;
			}
			case 245:
			{
				__reducedValues.push(this.action_245(__p));
				break;
			}
			case 246:
			{
				__reducedValues.push(this.action_246(__p));
				break;
			}
			case 247:
			{
				__reducedValues.push(this.action_247(__p));
				break;
			}
			case 248:
			{
				__reducedValues.push(this.action_248(__p));
				break;
			}
			case 249:
			{
				__reducedValues.push(this.action_249(__p));
				break;
			}
			case 250:
			{
				__reducedValues.push(this.action_250(__p));
				break;
			}
			case 251:
			{
				__reducedValues.push(this.action_251(__p));
				break;
			}
			case 252:
			{
				__reducedValues.push(this.action_252(__p));
				break;
			}
			case 253:
			{
				__reducedValues.push(this.action_253(__p));
				break;
			}
			case 254:
			{
				__reducedValues.push(this.action_254(__p));
				break;
			}
			case 255:
			{
				__reducedValues.push(this.action_255(__p));
				break;
			}
			case 256:
			{
				__reducedValues.push(this.action_256(__p));
				break;
			}
			case 257:
			{
				__reducedValues.push(this.action_257(__p));
				break;
			}
			case 258:
			{
				__reducedValues.push(this.action_258(__p));
				break;
			}
			case 259:
			{
				__reducedValues.push(this.action_259(__p));
				break;
			}
			case 260:
			{
				__reducedValues.push(this.action_260(__p));
				break;
			}
			case 261:
			{
				__reducedValues.push(this.action_261(__p));
				break;
			}
			case 262:
			{
				__reducedValues.push(this.action_262(__p));
				break;
			}
			case 263:
			{
				__reducedValues.push(this.action_263(__p));
				break;
			}
			case 264:
			{
				__reducedValues.push(this.action_264(__p));
				break;
			}
			case 265:
			{
				__reducedValues.push(this.action_265(__p));
				break;
			}
			case 266:
			{
				__reducedValues.push(this.action_266(__p));
				break;
			}
			case 267:
			{
				__reducedValues.push(this.action_267(__p));
				break;
			}
			case 268:
			{
				__reducedValues.push(this.action_268(__p));
				break;
			}
			case 269:
			{
				__reducedValues.push(this.action_269(__p));
				break;
			}
			case 270:
			{
				__reducedValues.push(this.action_270(__p));
				break;
			}
			case 271:
			{
				__reducedValues.push(this.action_271(__p));
				break;
			}
			case 272:
			{
				__reducedValues.push(this.action_272(__p));
				break;
			}
			case 273:
			{
				__reducedValues.push(this.action_273(__p));
				break;
			}
			case 274:
			{
				__reducedValues.push(this.action_274(__p));
				break;
			}
			case 275:
			{
				__reducedValues.push(this.action_275(__p));
				break;
			}
			case 276:
			{
				__reducedValues.push(this.action_276(__p));
				break;
			}
			case 277:
			{
				__reducedValues.push(this.action_277(__p));
				break;
			}
			case 278:
			{
				__reducedValues.push(this.action_278(__p));
				break;
			}
			case 279:
			{
				__reducedValues.push(this.action_279(__p));
				break;
			}
			case 280:
			{
				__reducedValues.push(this.action_280(__p));
				break;
			}
			case 281:
			{
				__reducedValues.push(this.action_281(__p));
				break;
			}
			case 282:
			{
				__reducedValues.push(this.action_282(__p));
				break;
			}
			case 283:
			{
				__reducedValues.push(this.action_283(__p));
				break;
			}
			case 284:
			{
				__reducedValues.push(this.action_284(__p));
				break;
			}
			case 285:
			{
				__reducedValues.push(this.action_285(__p));
				break;
			}
			case 286:
			{
				__reducedValues.push(this.action_286(__p));
				break;
			}
			case 287:
			{
				__reducedValues.push(this.action_287(__p));
				break;
			}
			case 288:
			{
				__reducedValues.push(this.action_288(__p));
				break;
			}
			case 289:
			{
				__reducedValues.push(this.action_289(__p));
				break;
			}
			case 290:
			{
				__reducedValues.push(this.action_290(__p));
				break;
			}
			case 291:
			{
				__reducedValues.push(this.action_291(__p));
				break;
			}
			case 292:
			{
				__reducedValues.push(this.action_292(__p));
				break;
			}
			case 293:
			{
				__reducedValues.push(this.action_293(__p));
				break;
			}
			case 294:
			{
				__reducedValues.push(this.action_294(__p));
				break;
			}
			case 295:
			{
				__reducedValues.push(this.action_295(__p));
				break;
			}
			case 296:
			{
				__reducedValues.push(this.action_296(__p));
				break;
			}
			case 297:
			{
				__reducedValues.push(this.action_297(__p));
				break;
			}
			case 298:
			{
				__reducedValues.push(this.action_298(__p));
				break;
			}
			case 299:
			{
				__reducedValues.push(this.action_299(__p));
				break;
			}
			case 300:
			{
				__reducedValues.push(this.action_300(__p));
				break;
			}
			case 301:
			{
				__reducedValues.push(this.action_301(__p));
				break;
			}
			case 302:
			{
				__reducedValues.push(this.action_302(__p));
				break;
			}
			case 303:
			{
				__reducedValues.push(this.action_303(__p));
				break;
			}
			case 304:
			{
				__reducedValues.push(this.action_304(__p));
				break;
			}
			case 305:
			{
				__reducedValues.push(this.action_305(__p));
				break;
			}
			case 306:
			{
				__reducedValues.push(this.action_306(__p));
				break;
			}
			case 307:
			{
				__reducedValues.push(this.action_307(__p));
				break;
			}
			case 308:
			{
				__reducedValues.push(this.action_308(__p));
				break;
			}
			case 309:
			{
				__reducedValues.push(this.action_309(__p));
				break;
			}
			case 310:
			{
				__reducedValues.push(this.action_310(__p));
				break;
			}
			case 311:
			{
				__reducedValues.push(this.action_311(__p));
				break;
			}
			case 312:
			{
				__reducedValues.push(this.action_312(__p));
				break;
			}
			case 313:
			{
				__reducedValues.push(this.action_313(__p));
				break;
			}
			case 314:
			{
				__reducedValues.push(this.action_314(__p));
				break;
			}
			case 315:
			{
				__reducedValues.push(this.action_315(__p));
				break;
			}
			case 316:
			{
				__reducedValues.push(this.action_316(__p));
				break;
			}
			case 317:
			{
				__reducedValues.push(this.action_317(__p));
				break;
			}
			case 318:
			{
				__reducedValues.push(this.action_318(__p));
				break;
			}
			case 319:
			{
				__reducedValues.push(this.action_319(__p));
				break;
			}
			case 320:
			{
				__reducedValues.push(this.action_320(__p));
				break;
			}
			case 321:
			{
				__reducedValues.push(this.action_321(__p));
				break;
			}
			case 322:
			{
				__reducedValues.push(this.action_322(__p));
				break;
			}
			case 323:
			{
				__reducedValues.push(this.action_323(__p));
				break;
			}
			case 324:
			{
				__reducedValues.push(this.action_324(__p));
				break;
			}
			case 325:
			{
				__reducedValues.push(this.action_325(__p));
				break;
			}
			case 326:
			{
				__reducedValues.push(this.action_326(__p));
				break;
			}
			case 327:
			{
				__reducedValues.push(this.action_327(__p));
				break;
			}
			case 328:
			{
				__reducedValues.push(this.action_328(__p));
				break;
			}
			case 329:
			{
				__reducedValues.push(this.action_329(__p));
				break;
			}
			case 330:
			{
				__reducedValues.push(this.action_330(__p));
				break;
			}
			case 331:
			{
				__reducedValues.push(this.action_331(__p));
				break;
			}
			case 332:
			{
				__reducedValues.push(this.action_332(__p));
				break;
			}
			case 333:
			{
				__reducedValues.push(this.action_333(__p));
				break;
			}
			case 334:
			{
				__reducedValues.push(this.action_334(__p));
				break;
			}
			case 335:
			{
				__reducedValues.push(this.action_335(__p));
				break;
			}
			case 336:
			{
				__reducedValues.push(this.action_336(__p));
				break;
			}
			case 337:
			{
				__reducedValues.push(this.action_337(__p));
				break;
			}
			case 338:
			{
				__reducedValues.push(this.action_338(__p));
				break;
			}
			case 339:
			{
				__reducedValues.push(this.action_339(__p));
				break;
			}
			case 340:
			{
				__reducedValues.push(this.action_340(__p));
				break;
			}
			case 341:
			{
				__reducedValues.push(this.action_341(__p));
				break;
			}
			case 342:
			{
				__reducedValues.push(this.action_342(__p));
				break;
			}
			case 343:
			{
				__reducedValues.push(this.action_343(__p));
				break;
			}
			case 344:
			{
				__reducedValues.push(this.action_344(__p));
				break;
			}
			case 345:
			{
				__reducedValues.push(this.action_345(__p));
				break;
			}
			case 346:
			{
				__reducedValues.push(this.action_346(__p));
				break;
			}
			case 347:
			{
				__reducedValues.push(this.action_347(__p));
				break;
			}
			case 348:
			{
				__reducedValues.push(this.action_348(__p));
				break;
			}
			case 349:
			{
				__reducedValues.push(this.action_349(__p));
				break;
			}
			case 350:
			{
				__reducedValues.push(this.action_350(__p));
				break;
			}
			case 351:
			{
				__reducedValues.push(this.action_351(__p));
				break;
			}
			case 352:
			{
				__reducedValues.push(this.action_352(__p));
				break;
			}
			case 353:
			{
				__reducedValues.push(this.action_353(__p));
				break;
			}
			case 354:
			{
				__reducedValues.push(this.action_354(__p));
				break;
			}
			case 355:
			{
				__reducedValues.push(this.action_355(__p));
				break;
			}
			case 356:
			{
				__reducedValues.push(this.action_356(__p));
				break;
			}
			case 357:
			{
				__reducedValues.push(this.action_357(__p));
				break;
			}
			case 358:
			{
				__reducedValues.push(this.action_358(__p));
				break;
			}
			case 359:
			{
				__reducedValues.push(this.action_359(__p));
				break;
			}
			case 360:
			{
				__reducedValues.push(this.action_360(__p));
				break;
			}
			case 361:
			{
				__reducedValues.push(this.action_361(__p));
				break;
			}
			case 362:
			{
				__reducedValues.push(this.action_362(__p));
				break;
			}
			case 363:
			{
				__reducedValues.push(this.action_363(__p));
				break;
			}
			case 364:
			{
				__reducedValues.push(this.action_364(__p));
				break;
			}
			case 365:
			{
				__reducedValues.push(this.action_365(__p));
				break;
			}
			case 366:
			{
				__reducedValues.push(this.action_366(__p));
				break;
			}
			case 367:
			{
				__reducedValues.push(this.action_367(__p));
				break;
			}
			case 368:
			{
				__reducedValues.push(this.action_368(__p));
				break;
			}
			case 369:
			{
				__reducedValues.push(this.action_369(__p));
				break;
			}
			case 370:
			{
				__reducedValues.push(this.action_370(__p));
				break;
			}
			case 371:
			{
				__reducedValues.push(this.action_371(__p));
				break;
			}
			case 372:
			{
				__reducedValues.push(this.action_372(__p));
				break;
			}
			case 373:
			{
				__reducedValues.push(this.action_373(__p));
				break;
			}
			case 374:
			{
				__reducedValues.push(this.action_374(__p));
				break;
			}
			case 375:
			{
				__reducedValues.push(this.action_375(__p));
				break;
			}
			case 376:
			{
				__reducedValues.push(this.action_376(__p));
				break;
			}
			case 377:
			{
				__reducedValues.push(this.action_377(__p));
				break;
			}
			case 378:
			{
				__reducedValues.push(this.action_378(__p));
				break;
			}
			case 379:
			{
				__reducedValues.push(this.action_379(__p));
				break;
			}
			case 380:
			{
				__reducedValues.push(this.action_380(__p));
				break;
			}
			case 381:
			{
				__reducedValues.push(this.action_381(__p));
				break;
			}
			case 382:
			{
				__reducedValues.push(this.action_382(__p));
				break;
			}
			case 383:
			{
				__reducedValues.push(this.action_383(__p));
				break;
			}
			case 384:
			{
				__reducedValues.push(this.action_384(__p));
				break;
			}
			case 385:
			{
				__reducedValues.push(this.action_385(__p));
				break;
			}
			case 386:
			{
				__reducedValues.push(this.action_386(__p));
				break;
			}
			case 387:
			{
				__reducedValues.push(this.action_387(__p));
				break;
			}
			case 388:
			{
				__reducedValues.push(this.action_388(__p));
				break;
			}
			case 389:
			{
				__reducedValues.push(this.action_389(__p));
				break;
			}
			case 390:
			{
				__reducedValues.push(this.action_390(__p));
				break;
			}
			case 391:
			{
				__reducedValues.push(this.action_391(__p));
				break;
			}
			case 392:
			{
				__reducedValues.push(this.action_392(__p));
				break;
			}
			case 393:
			{
				__reducedValues.push(this.action_393(__p));
				break;
			}
			case 394:
			{
				__reducedValues.push(this.action_394(__p));
				break;
			}
			case 395:
			{
				__reducedValues.push(this.action_395(__p));
				break;
			}
			case 396:
			{
				__reducedValues.push(this.action_396(__p));
				break;
			}
			case 397:
			{
				__reducedValues.push(this.action_397(__p));
				break;
			}
			case 398:
			{
				__reducedValues.push(this.action_398(__p));
				break;
			}
			case 399:
			{
				__reducedValues.push(this.action_399(__p));
				break;
			}
			case 400:
			{
				__reducedValues.push(this.action_400(__p));
				break;
			}
			case 401:
			{
				__reducedValues.push(this.action_401(__p));
				break;
			}
			case 402:
			{
				__reducedValues.push(this.action_402(__p));
				break;
			}
			case 403:
			{
				__reducedValues.push(this.action_403(__p));
				break;
			}
			case 404:
			{
				__reducedValues.push(this.action_404(__p));
				break;
			}
			case 405:
			{
				__reducedValues.push(this.action_405(__p));
				break;
			}
			case 406:
			{
				__reducedValues.push(this.action_406(__p));
				break;
			}
			case 407:
			{
				__reducedValues.push(this.action_407(__p));
				break;
			}
			case 408:
			{
				__reducedValues.push(this.action_408(__p));
				break;
			}
			case 409:
			{
				__reducedValues.push(this.action_409(__p));
				break;
			}
			case 410:
			{
				__reducedValues.push(this.action_410(__p));
				break;
			}
			case 411:
			{
				__reducedValues.push(this.action_411(__p));
				break;
			}
			case 412:
			{
				__reducedValues.push(this.action_412(__p));
				break;
			}
			case 413:
			{
				__reducedValues.push(this.action_413(__p));
				break;
			}
			case 414:
			{
				__reducedValues.push(this.action_414(__p));
				break;
			}
			case 415:
			{
				__reducedValues.push(this.action_415(__p));
				break;
			}
			case 416:
			{
				__reducedValues.push(this.action_416(__p));
				break;
			}
			case 417:
			{
				__reducedValues.push(this.action_417(__p));
				break;
			}
			case 418:
			{
				__reducedValues.push(this.action_418(__p));
				break;
			}
			case 419:
			{
				__reducedValues.push(this.action_419(__p));
				break;
			}
			case 420:
			{
				__reducedValues.push(this.action_420(__p));
				break;
			}
			case 421:
			{
				__reducedValues.push(this.action_421(__p));
				break;
			}
			case 422:
			{
				__reducedValues.push(this.action_422(__p));
				break;
			}
			case 423:
			{
				__reducedValues.push(this.action_423(__p));
				break;
			}
			case 424:
			{
				__reducedValues.push(this.action_424(__p));
				break;
			}
			case 425:
			{
				__reducedValues.push(this.action_425(__p));
				break;
			}
			case 426:
			{
				__reducedValues.push(this.action_426(__p));
				break;
			}
			case 427:
			{
				__reducedValues.push(this.action_427(__p));
				break;
			}
			case 428:
			{
				__reducedValues.push(this.action_428(__p));
				break;
			}
			case 429:
			{
				__reducedValues.push(this.action_429(__p));
				break;
			}
			case 430:
			{
				__reducedValues.push(this.action_430(__p));
				break;
			}
			case 431:
			{
				__reducedValues.push(this.action_431(__p));
				break;
			}
			case 432:
			{
				__reducedValues.push(this.action_432(__p));
				break;
			}
			case 433:
			{
				__reducedValues.push(this.action_433(__p));
				break;
			}
			case 434:
			{
				__reducedValues.push(this.action_434(__p));
				break;
			}
			case 435:
			{
				__reducedValues.push(this.action_435(__p));
				break;
			}
			case 436:
			{
				__reducedValues.push(this.action_436(__p));
				break;
			}
			case 437:
			{
				__reducedValues.push(this.action_437(__p));
				break;
			}
			case 438:
			{
				__reducedValues.push(this.action_438(__p));
				break;
			}
			case 439:
			{
				__reducedValues.push(this.action_439(__p));
				break;
			}
			case 440:
			{
				__reducedValues.push(this.action_440(__p));
				break;
			}
			case 441:
			{
				__reducedValues.push(this.action_441(__p));
				break;
			}
			case 442:
			{
				__reducedValues.push(this.action_442(__p));
				break;
			}
			case 443:
			{
				__reducedValues.push(this.action_443(__p));
				break;
			}
			case 444:
			{
				__reducedValues.push(this.action_444(__p));
				break;
			}
			case 445:
			{
				__reducedValues.push(this.action_445(__p));
				break;
			}
			case 446:
			{
				__reducedValues.push(this.action_446(__p));
				break;
			}
			case 447:
			{
				__reducedValues.push(this.action_447(__p));
				break;
			}
			case 448:
			{
				__reducedValues.push(this.action_448(__p));
				break;
			}
			case 449:
			{
				__reducedValues.push(this.action_449(__p));
				break;
			}
			case 450:
			{
				__reducedValues.push(this.action_450(__p));
				break;
			}
			case 451:
			{
				__reducedValues.push(this.action_451(__p));
				break;
			}
			case 452:
			{
				__reducedValues.push(this.action_452(__p));
				break;
			}
			case 453:
			{
				__reducedValues.push(this.action_453(__p));
				break;
			}
			case 454:
			{
				__reducedValues.push(this.action_454(__p));
				break;
			}
			case 455:
			{
				__reducedValues.push(this.action_455(__p));
				break;
			}
			case 456:
			{
				__reducedValues.push(this.action_456(__p));
				break;
			}
			case 457:
			{
				__reducedValues.push(this.action_457(__p));
				break;
			}
			case 458:
			{
				__reducedValues.push(this.action_458(__p));
				break;
			}
			case 459:
			{
				__reducedValues.push(this.action_459(__p));
				break;
			}
			case 460:
			{
				__reducedValues.push(this.action_460(__p));
				break;
			}
			case 461:
			{
				__reducedValues.push(this.action_461(__p));
				break;
			}
			case 462:
			{
				__reducedValues.push(this.action_462(__p));
				break;
			}
			case 463:
			{
				__reducedValues.push(this.action_463(__p));
				break;
			}
			case 464:
			{
				__reducedValues.push(this.action_464(__p));
				break;
			}
			case 465:
			{
				__reducedValues.push(this.action_465(__p));
				break;
			}
			case 466:
			{
				__reducedValues.push(this.action_466(__p));
				break;
			}
			case 467:
			{
				__reducedValues.push(this.action_467(__p));
				break;
			}
			case 468:
			{
				__reducedValues.push(this.action_468(__p));
				break;
			}
			case 469:
			{
				__reducedValues.push(this.action_469(__p));
				break;
			}
			case 470:
			{
				__reducedValues.push(this.action_470(__p));
				break;
			}
			case 471:
			{
				__reducedValues.push(this.action_471(__p));
				break;
			}
			case 472:
			{
				__reducedValues.push(this.action_472(__p));
				break;
			}
			case 473:
			{
				__reducedValues.push(this.action_473(__p));
				break;
			}
			case 474:
			{
				__reducedValues.push(this.action_474(__p));
				break;
			}
			case 475:
			{
				__reducedValues.push(this.action_475(__p));
				break;
			}
			case 476:
			{
				__reducedValues.push(this.action_476(__p));
				break;
			}
			case 477:
			{
				__reducedValues.push(this.action_477(__p));
				break;
			}
			case 478:
			{
				__reducedValues.push(this.action_478(__p));
				break;
			}
			case 479:
			{
				__reducedValues.push(this.action_479(__p));
				break;
			}
			case 480:
			{
				__reducedValues.push(this.action_480(__p));
				break;
			}
			case 481:
			{
				__reducedValues.push(this.action_481(__p));
				break;
			}
			case 482:
			{
				__reducedValues.push(this.action_482(__p));
				break;
			}
			case 483:
			{
				__reducedValues.push(this.action_483(__p));
				break;
			}
			case 484:
			{
				__reducedValues.push(this.action_484(__p));
				break;
			}
			case 485:
			{
				__reducedValues.push(this.action_485(__p));
				break;
			}
			case 486:
			{
				__reducedValues.push(this.action_486(__p));
				break;
			}
			case 487:
			{
				__reducedValues.push(this.action_487(__p));
				break;
			}
			case 488:
			{
				__reducedValues.push(this.action_488(__p));
				break;
			}
			case 489:
			{
				__reducedValues.push(this.action_489(__p));
				break;
			}
			case 490:
			{
				__reducedValues.push(this.action_490(__p));
				break;
			}
			case 491:
			{
				__reducedValues.push(this.action_491(__p));
				break;
			}
			case 492:
			{
				__reducedValues.push(this.action_492(__p));
				break;
			}
			case 493:
			{
				__reducedValues.push(this.action_493(__p));
				break;
			}
			case 494:
			{
				__reducedValues.push(this.action_494(__p));
				break;
			}
			case 495:
			{
				__reducedValues.push(this.action_495(__p));
				break;
			}
			case 496:
			{
				this.reduceAntecedent(___node, __void_expression_NT);
				__reducedValues.push(this.action_496(__p));
				break;
			}
			case 497:
			{
				this.reduceAntecedent(___node, __array_literal_NT);
				__reducedValues.push(this.action_497(__p));
				break;
			}
			case 498:
			{
				this.reduceAntecedent(___node, __type_name_NT);
				__reducedValues.push(this.action_498(__p));
				break;
			}
			case 499:
			{
				this.reduceAntecedent(___node, __e4x_literal_NT);
				__reducedValues.push(this.action_499(__p));
				break;
			}
			case 500:
			{
				this.reduceAntecedent(___node, __uint_constant_NT);
				__reducedValues.push(this.action_500(__p));
				break;
			}
			case 501:
			{
				this.reduceAntecedent(___node, __name_NT);
				__reducedValues.push(this.action_501(__p));
				break;
			}
			case 502:
			{
				this.reduceAntecedent(___node, __expression_NT);
				__reducedValues.push(this.action_502(__p));
				break;
			}
			case 503:
			{
				this.reduceAntecedent(___node, __object_literal_NT);
				__reducedValues.push(this.action_503(__p));
				break;
			}
			case 504:
			{
				this.reduceAntecedent(___node, __var_decl_NT);
				__reducedValues.push(this.action_504(__p));
				break;
			}
			case 505:
			{
				this.reduceAntecedent(___node, __qualifiedNamePart_NT);
				__reducedValues.push(this.action_505(__p));
				break;
			}
			case 506:
			{
				this.reduceAntecedent(___node, __literal_NT);
				__reducedValues.push(this.action_506(__p));
				break;
			}
			case 507:
			{
				this.reduceAntecedent(___node, __double_constant_NT);
				__reducedValues.push(this.action_507(__p));
				break;
			}
			case 508:
			{
				this.reduceAntecedent(___node, __boolean_literal_NT);
				__reducedValues.push(this.action_508(__p));
				break;
			}
			case 509:
			{
				this.reduceAntecedent(___node, __integer_constant_NT);
				__reducedValues.push(this.action_509(__p));
				break;
			}
			case 510:
			{
				this.reduceAntecedent(___node, __constant_value_NT);
				__reducedValues.push(this.action_510(__p));
				break;
			}
			case 511:
			{
				this.reduceAntecedent(___node, __comparison_expression_NT);
				__reducedValues.push(this.action_511(__p));
				break;
			}
			default:
			{
				throw new IllegalStateException("Unmatched reduce action " + iRule);
			}
		}
	}

	class JBurgAnnotation_AnonymousFunctionID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_AnonymousFunctionID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_12e643b0(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_12e643b0(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 105;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_12e643b0( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__function_NT))));
		}
	}

	class JBurgAnnotation_ArgumentID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_ArgumentID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_parameter = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __parameter_NT:
				{
					if ( cachedCostFor_parameter == -1 )
					{
						cachedCostFor_parameter = getCostForRule_2886b047(goalState);

					}
					return(cachedCostFor_parameter);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __parameter_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2886b047(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 427;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2886b047( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__type_name_NT)) + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
		}
	}

	class JBurgAnnotation_ArgumentID_3 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		JBurgAnnotation_ArgumentID_3(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_parameter = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __parameter_NT:
				{
					if ( cachedCostFor_parameter == -1 )
					{
						cachedCostFor_parameter = getCostForRule_3ed4449f(goalState);

					}
					return(cachedCostFor_parameter);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __parameter_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3ed4449f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 387;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(3);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_3ed4449f( int goalState)
		{

			return(normalizeCost((long)0 + (long) ( (((long)this.getNthChild(2).getCost(__required_constant_value_NT)) + ((long)this.getNthChild(1).getCost(__type_name_NT)))  + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
		}
	}

	class JBurgAnnotation_ArgumentRestID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_ArgumentRestID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_parameter = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __parameter_NT:
				{
					if ( cachedCostFor_parameter == -1 )
					{
						cachedCostFor_parameter = getCostForRule_54bdac2d(goalState);

					}
					return(cachedCostFor_parameter);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __parameter_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_54bdac2d(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 428;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_54bdac2d( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__type_name_NT)) + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
		}
	}

	class JBurgAnnotation_ArrayIndexExpressionID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_ArrayIndexExpressionID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_mxml_data_binding_setter_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_74e69ec9(goalState);

						int currentCost = getCostForRule_69ff0c9a(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_75935d86(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					if ( cachedCostFor_mxml_data_binding_setter_expression == -1 )
					{
						cachedCostFor_mxml_data_binding_setter_expression = getCostForRule_4cf64bdd(goalState);

					}
					return(cachedCostFor_mxml_data_binding_setter_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_74e69ec9(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 106;
					}
					currentCost = getCostForRule_69ff0c9a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 434;
					}
					currentCost = getCostForRule_75935d86(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 448;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4cf64bdd(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 107;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_74e69ec9( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_4cf64bdd( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_69ff0c9a( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long)((long)this.getNthChild(1).getCost(__expression_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_75935d86( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)1 + (long)((long)this.getNthChild(1).getCost(__expression_NT))));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_ArrayLiteralID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_ArrayLiteralID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_array_literal = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __array_literal_NT:
				{
					if ( cachedCostFor_array_literal == -1 )
					{
						cachedCostFor_array_literal = getCostForRule_c26945c(goalState);

					}
					return(cachedCostFor_array_literal);
				}
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					return(getCost(__literal_NT));
				}
				case __literal_NT:
				{
					return(getCost(__array_literal_NT));
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __array_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_c26945c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 108;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 506;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__array_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 497;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_c26945c( int goalState)
		{

			if ( this.getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID )
				return(normalizeCost((long)1 + (long)((long)getNaryCost(this.getNthChild(0), __expression_NT, 0))));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_BindableVariableID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_BindableVariableID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_var_decl = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(getCost(__var_decl_NT));
				}
				case __var_decl_NT:
				{
					if ( cachedCostFor_var_decl == -1 )
					{
						cachedCostFor_var_decl = getCostForRule_1dacd29e(goalState);

						int currentCost = getCostForRule_723cc3c0(goalState);

						if ( ( cachedCostFor_var_decl > currentCost )  )
							cachedCostFor_var_decl = currentCost;
					}
					return(cachedCostFor_var_decl);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__var_decl_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 504;
					}
					return(rule);
				}
				case __var_decl_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_1dacd29e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 458;
					}
					currentCost = getCostForRule_723cc3c0(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 459;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_1dacd29e( int goalState)
		{

			if ( (this.getArity() >= 2) )
				return(normalizeCost((long)0 + (long) ( (((long)getNaryCost(this, __var_decl_NT, 2)) + ((long)this.getNthChild(1).getCost(__type_name_NT)))  + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_723cc3c0( int goalState)
		{

			if ( (this.getArity() >= 3) )
				return(normalizeCost((long)0 + (long) ( ( (((long)getNaryCost(this, __var_decl_NT, 3)) + ((long)this.getNthChild(2).getCost(__expression_NT)))  + ((long)this.getNthChild(1).getCost(__type_name_NT)))  + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_BlockID_0_n extends JBurgSpecializedAnnotation
	{
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_BlockID_0_n(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __finally_clause_NT:
				{
					return(normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0))));
				}
				case __statement_NT:
				{
					return(normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0))));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __finally_clause_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0)));

					if ( ( bestCost > currentCost )  )
					{
						rule = 275;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0)));

					if ( ( bestCost > currentCost )  )
					{
						rule = 274;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				default:
				{
					return narySubtrees.get(index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
				narySubtrees.add(child);
		}
	}

	class JBurgAnnotation_BreakID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_BreakID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(1);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(277);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_BreakID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_BreakID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_cead6f9(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_cead6f9(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 346;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_cead6f9( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(0);
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_CatchID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_CatchID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_catch_block = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __catch_block_NT:
				{
					if ( cachedCostFor_catch_block == -1 )
					{
						cachedCostFor_catch_block = getCostForRule_3456374c(goalState);

						int currentCost = getCostForRule_4f153b7a(goalState);

						if ( ( cachedCostFor_catch_block > currentCost )  )
							cachedCostFor_catch_block = currentCost;
					}
					return(cachedCostFor_catch_block);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __catch_block_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3456374c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 278;
					}
					currentCost = getCostForRule_4f153b7a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 279;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_3456374c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArgumentID )
				return(normalizeCost((long)0 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__type_name_NT)))  + ((long)factoredPath_0.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4f153b7a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ArgumentID )
				return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_0.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_ConditionalID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_ConditionalID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalElements = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalElements_NT:
				{
					if ( cachedCostFor_conditionalElements == -1 )
					{
						cachedCostFor_conditionalElements = getCostForRule_5b23c39b(goalState);

						int currentCost = getCostForRule_1a49b18(goalState);

						if ( ( cachedCostFor_conditionalElements > currentCost )  )
							cachedCostFor_conditionalElements = currentCost;
					}
					return(cachedCostFor_conditionalElements);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalElements_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5b23c39b(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 283;
					}
					currentCost = getCostForRule_1a49b18(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 450;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_5b23c39b( int goalState)
		{

			if ( (this.getArity() >= 1) )
				return(normalizeCost((long)0 + (long) (((long)getNaryCost(this, __statement_NT, 1)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1a49b18( int goalState)
		{

			if ( (this.getArity() >= 1) )
				return(normalizeCost((long)0 + (long) (((long)getNaryCost(this, __statement_NT, 1)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_ConfigBlockID_0_n extends JBurgSpecializedAnnotation
	{
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_ConfigBlockID_0_n(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0))));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0)));

					if ( ( bestCost > currentCost )  )
					{
						rule = 281;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				default:
				{
					return narySubtrees.get(index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
				narySubtrees.add(child);
		}
	}

	class JBurgAnnotation_ContainerID_0_n extends JBurgSpecializedAnnotation
	{
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_ContainerID_0_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __parameterList_NT:
				{
					return(normalizeCost((long)0 + (long)((long)getNaryCost(this, __parameter_NT, 0))));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = normalizeCost((long)0 + (long)((long)getNaryCost(this, __void_expression_NT, 0)));

					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __parameterList_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)0 + (long)((long)getNaryCost(this, __parameter_NT, 0)));

					if ( ( bestCost > currentCost )  )
					{
						rule = 390;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)0 + (long)((long)getNaryCost(this, __void_expression_NT, 0)));

					if ( ( bestCost > currentCost )  )
					{
						rule = 338;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				default:
				{
					return narySubtrees.get(index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
				narySubtrees.add(child);
		}
	}

	class JBurgAnnotation_ContinueID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_ContinueID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(1);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(284);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_ContinueID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_ContinueID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_44d2037(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_44d2037(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 347;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_44d2037( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(0);
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_DefaultID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_DefaultID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalElements = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalElements_NT:
				{
					if ( cachedCostFor_conditionalElements == -1 )
					{
						cachedCostFor_conditionalElements = getCostForRule_62e5052f(goalState);

					}
					return(cachedCostFor_conditionalElements);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalElements_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_62e5052f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 451;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_62e5052f( int goalState)
		{

			if ( this.getArity() == 1 && this.getNthChild(0).getOperator() == BlockID )
				return(normalizeCost((long)0 + (long)((long)getNaryCost(this.getNthChild(0), __statement_NT, 0))));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_DefaultXMLStatementID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_DefaultXMLStatementID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_271f2df3(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_271f2df3(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 286;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_271f2df3( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_DoWhileLoopID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_DoWhileLoopID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_2461e53(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2461e53(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 296;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2461e53( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__statement_NT))) ));
		}
	}

	class JBurgAnnotation_E4XFilterID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_E4XFilterID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_6f67dab4(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6f67dab4(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 301;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_6f67dab4( int goalState)
		{

			return(normalizeCost((long)3 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_ElseID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_ElseID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalElements = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalElements_NT:
				{
					if ( cachedCostFor_conditionalElements == -1 )
					{
						cachedCostFor_conditionalElements = getCostForRule_25e1760a(goalState);

					}
					return(cachedCostFor_conditionalElements);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalElements_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_25e1760a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 349;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_25e1760a( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__statement_NT))));
		}
	}

	class JBurgAnnotation_EmbedID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_EmbedID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(2);
				}
				case __required_constant_value_NT:
				{
					return(268435458);
				}
				case __statement_NT:
				{
					return(3);
				}
				case __type_param_expression_NT:
				{
					return(2);
				}
				case __void_expression_NT:
				{
					return(3);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(302);
				}
				case __required_constant_value_NT:
				{
					return(81);
				}
				case __statement_NT:
				{
					return(496);
				}
				case __type_param_expression_NT:
				{
					return(502);
				}
				case __void_expression_NT:
				{
					return(1);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_ForEachLoopID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_ForEachLoopID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_7bcfa7f0(goalState);

						int currentCost = getCostForRule_49c98a5c(goalState);

						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_18aa4bab(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_36552f92(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_3023fe8f(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_35bd19bd(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_7f80ebb2(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_7bcfa7f0(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 307;
					}
					currentCost = getCostForRule_49c98a5c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 308;
					}
					currentCost = getCostForRule_18aa4bab(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 309;
					}
					currentCost = getCostForRule_36552f92(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 310;
					}
					currentCost = getCostForRule_3023fe8f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 311;
					}
					currentCost = getCostForRule_35bd19bd(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 312;
					}
					currentCost = getCostForRule_7f80ebb2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 313;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_7bcfa7f0( int goalState)
		{
			JBurgAnnotation factoredPath_1 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_2 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)10 + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__expression_NT)))  + ((long)factoredPath_2.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_49c98a5c( int goalState)
		{
			JBurgAnnotation factoredPath_1 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_2 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)10 + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__name_NT)))  + ((long)factoredPath_2.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_18aa4bab( int goalState)
		{
			JBurgAnnotation factoredPath_1 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_2 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)10 + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__name_NT)))  + ((long)factoredPath_2.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_36552f92( int goalState)
		{
			JBurgAnnotation factoredPath_0 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3023fe8f( int goalState)
		{
			JBurgAnnotation factoredPath_1 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_3 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_35bd19bd( int goalState)
		{
			JBurgAnnotation factoredPath_1 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_3 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_7f80ebb2( int goalState)
		{
			JBurgAnnotation factoredPath_1 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_2 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 1 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == VariableExpressionID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_2.getCost(__var_decl_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_ForLoopID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_ForLoopID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_6036726f(goalState);

						int currentCost = getCostForRule_4f4e3f60(goalState);

						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_1263b7c5(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_6ac61340(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_3930b17d(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_7bb3c04(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_8697ea9(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_526f30f7(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_6e68d89e(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_30ed824b(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_73322ec9(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_58f140d0(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6036726f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 96;
					}
					currentCost = getCostForRule_4f4e3f60(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 97;
					}
					currentCost = getCostForRule_1263b7c5(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 98;
					}
					currentCost = getCostForRule_6ac61340(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 99;
					}
					currentCost = getCostForRule_3930b17d(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 285;
					}
					currentCost = getCostForRule_7bb3c04(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 314;
					}
					currentCost = getCostForRule_8697ea9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 315;
					}
					currentCost = getCostForRule_526f30f7(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 316;
					}
					currentCost = getCostForRule_6e68d89e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 317;
					}
					currentCost = getCostForRule_30ed824b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 318;
					}
					currentCost = getCostForRule_73322ec9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 319;
					}
					currentCost = getCostForRule_58f140d0(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 320;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_6036726f( int goalState)
		{

			if ( this.getArity() == 2 && this.getNthChild(0).getOperator() == ContainerID )
				return(normalizeCost((long)ERROR_TRAP + (long) (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)getNaryCost(this.getNthChild(0), __expression_NT, 0))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4f4e3f60( int goalState)
		{
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID )
				return(normalizeCost((long)ERROR_TRAP + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1263b7c5( int goalState)
		{
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_7 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_8 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && (this.getNthChild(0).getNthChild(0).getArity() >= 2) && this.getNthChild(0).getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(1).getOperator() == Op_InID )
				return(normalizeCost((long)ERROR_TRAP + (long) ( ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)getNaryCost(this.getNthChild(0).getNthChild(0), __expression_NT, 2)))  + ((long)factoredPath_8.getCost(__expression_NT)))  + ((long)factoredPath_7.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6ac61340( int goalState)
		{
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_6 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && (this.getNthChild(0).getNthChild(0).getArity() >= 2) && this.getNthChild(0).getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == Op_InID )
				return(normalizeCost((long)ERROR_TRAP + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)getNaryCost(this.getNthChild(0).getNthChild(0), __expression_NT, 1)))  + ((long)factoredPath_6.getCost(__expression_NT)))  + ((long)factoredPath_5.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3930b17d( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_2 = (this.getNthChild(0).getArity() > 2? this.getNthChild(0).getNthChild(2): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 3 && this.getNthChild(0).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_2.getCost(__void_expression_NT)))  + ((long)factoredPath_1.getCost(__conditionalJump_NT)))  + ((long)factoredPath_0.getCost(__void_expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_7bb3c04( int goalState)
		{
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_6 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)10 + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_6.getCost(__expression_NT)))  + ((long)factoredPath_5.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_8697ea9( int goalState)
		{
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_6 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)10 + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_6.getCost(__name_NT)))  + ((long)factoredPath_5.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_526f30f7( int goalState)
		{
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_6 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)10 + (long) ( ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_6.getCost(__name_NT)))  + ((long)factoredPath_5.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6e68d89e( int goalState)
		{
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_3.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_30ed824b( int goalState)
		{
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_6 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_6.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_73322ec9( int goalState)
		{
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_6 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_6.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_58f140d0( int goalState)
		{
			JBurgAnnotation factoredPath_4 = ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == Op_InID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 1 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == VariableExpressionID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)factoredPath_4.getCost(__expression_NT)))  + ((long)factoredPath_5.getCost(__var_decl_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_FullNameID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_FullNameID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_name = -1;
		private int cachedCostFor_import_name = -1;
		private int cachedCostFor_dottedNamePart = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT)));
				}
				case __dottedNamePart_NT:
				{
					if ( cachedCostFor_dottedNamePart == -1 )
					{
						cachedCostFor_dottedNamePart = getCostForRule_70f5cf78(goalState);

					}
					return(cachedCostFor_dottedNamePart);
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __import_name_NT:
				{
					if ( cachedCostFor_import_name == -1 )
					{
						cachedCostFor_import_name = getCostForRule_2c56f4f7(goalState);

					}
					return(cachedCostFor_import_name);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __name_NT:
				{
					if ( cachedCostFor_name == -1 )
					{
						cachedCostFor_name = getCostForRule_4ef0c3d2(goalState);

					}
					return(cachedCostFor_name);
				}
				case __new_type_name_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					int currentCost = getCost(__name_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(getCost(__type_name_NT));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __dottedNamePart_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_70f5cf78(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 322;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 7;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 90;
					}
					return(rule);
				}
				case __import_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2c56f4f7(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 323;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 93;
					}
					return(rule);
				}
				case __name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4ef0c3d2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 321;
					}
					return(rule);
				}
				case __new_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 5;
					}
					currentCost = getCost(__name_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 501;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__type_name_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 498;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 4;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 6;
					}
					currentCost = getCost(__expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
		
		private int getCostForRule_4ef0c3d2( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__dottedNamePart_NT)) + ((long)this.getNthChild(0).getCost(__dottedNamePart_NT))) ));
		}
		
		private int getCostForRule_70f5cf78( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__dottedNamePart_NT)) + ((long)this.getNthChild(0).getCost(__dottedNamePart_NT))) ));
		}
		
		private int getCostForRule_2c56f4f7( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__dottedNamePart_NT)) + ((long)this.getNthChild(0).getCost(__dottedNamePart_NT))) ));
		}
	}

	class JBurgAnnotation_FunctionCallID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_FunctionCallID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_1cd5fd1c(goalState);

						int currentCost = getCostForRule_42056ff1(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_59efca0a(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_11c96cb6(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_22c74e8e(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_4b54d7c0(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_6c4ceb3a(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_36ba96d9(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_2e111dbe(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_4396256b(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_48880318(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_2a66588e(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_c3c5c91(goalState);

						int currentCost = getCostForRule_7e739d00(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_76ebd115(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_6ed1456e(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_1cd5fd1c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 303;
					}
					currentCost = getCostForRule_42056ff1(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 304;
					}
					currentCost = getCostForRule_59efca0a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 324;
					}
					currentCost = getCostForRule_11c96cb6(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 325;
					}
					currentCost = getCostForRule_22c74e8e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 326;
					}
					currentCost = getCostForRule_4b54d7c0(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 327;
					}
					currentCost = getCostForRule_6c4ceb3a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 330;
					}
					currentCost = getCostForRule_36ba96d9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 332;
					}
					currentCost = getCostForRule_2e111dbe(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 374;
					}
					currentCost = getCostForRule_4396256b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 375;
					}
					currentCost = getCostForRule_48880318(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 376;
					}
					currentCost = getCostForRule_2a66588e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 377;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_c3c5c91(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 328;
					}
					currentCost = getCostForRule_7e739d00(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 329;
					}
					currentCost = getCostForRule_76ebd115(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 331;
					}
					currentCost = getCostForRule_6ed1456e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 447;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_1cd5fd1c( int goalState)
		{

			if ( this.getArity() == 3 && this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == KeywordNewID && this.getNthChild(1).getArity() == 0 && this.getNthChild(1).getOperator() == IdentifierID && this.getNthChild(2).getArity() == 0 && this.getNthChild(2).getOperator() == ContainerID )
				return(cachedCost_a9b7bfd());
			else
				return(Integer.MAX_VALUE);
		}
		private int cachedCostFunctionResult_163a5743 = -1;
		
		private int cachedCost_a9b7bfd( )
		{
			if ( cachedCostFunctionResult_163a5743 == -1 )
				cachedCostFunctionResult_163a5743 = isEmptyArrayConstructor(m_node);
			return(cachedCostFunctionResult_163a5743);
		}
		
		private int getCostForRule_42056ff1( int goalState)
		{

			if ( this.getArity() == 3 && this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == KeywordNewID && this.getNthChild(1).getArity() == 0 && this.getNthChild(1).getOperator() == IdentifierID && this.getNthChild(2).getArity() == 0 && this.getNthChild(2).getOperator() == ContainerID )
				return(cachedCost_26616589());
			else
				return(Integer.MAX_VALUE);
		}
		private int cachedCostFunctionResult_b4881caf = -1;
		
		private int cachedCost_26616589( )
		{
			if ( cachedCostFunctionResult_b4881caf == -1 )
				cachedCostFunctionResult_b4881caf = isEmptyObjectConstructor(m_node);
			return(cachedCostFunctionResult_b4881caf);
		}
		
		private int getCostForRule_59efca0a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)4 + (long) ( (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_11c96cb6( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)4 + (long) ( (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_22c74e8e( int goalState)
		{

			if ( this.getArity() == 2 && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)30 + (long) (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4b54d7c0( int goalState)
		{

			if ( this.getArity() == 2 && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)3 + (long) (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_c3c5c91( int goalState)
		{

			if ( this.getArity() == 2 && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long) (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_7e739d00( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_4 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == FunctionCallID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == SuperID && this.getNthChild(0).getNthChild(0).getNthChild(1).getArity() == 1 && this.getNthChild(0).getNthChild(0).getNthChild(1).getOperator() == ContainerID && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long) ( (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_4.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6c4ceb3a( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_4 = (((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(0).getOperator() == FunctionCallID && this.getNthChild(0).getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getNthChild(0).getOperator() == SuperID && this.getNthChild(0).getNthChild(0).getNthChild(1).getArity() == 1 && this.getNthChild(0).getNthChild(0).getNthChild(1).getOperator() == ContainerID && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long) ( (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_4.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_76ebd115( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getOperator() == SuperID && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)1 + (long) (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)factoredPath_1.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_36ba96d9( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getOperator() == SuperID && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long) (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)factoredPath_1.getCost(__name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2e111dbe( int goalState)
		{

			if ( this.getArity() == 3 && this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == KeywordNewID && this.getNthChild(2).getOperator() == ContainerID )
				return(normalizeCost((long)30 + (long) (((long)getNaryCost(this.getNthChild(2), __expression_NT, 0)) + ((long)this.getNthChild(1).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4396256b( int goalState)
		{

			if ( this.getArity() == 3 && this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == KeywordNewID && this.getNthChild(2).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long) (((long)getNaryCost(this.getNthChild(2), __expression_NT, 0)) + ((long)this.getNthChild(1).getCost(__new_type_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_48880318( int goalState)
		{
			JBurgAnnotation factoredPath_2 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 3 && this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == KeywordNewID && this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == MemberAccessExpressionID && this.getNthChild(2).getOperator() == ContainerID )
				return(normalizeCost((long)10 + (long) ( (((long)getNaryCost(this.getNthChild(2), __expression_NT, 0)) + ((long)factoredPath_3.getCost(__name_NT)))  + ((long)factoredPath_2.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2a66588e( int goalState)
		{

			if ( this.getArity() == 3 && this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == KeywordNewID && this.getNthChild(2).getArity() == 0 && this.getNthChild(2).getOperator() == ContainerID )
				return(normalizeCost((long)0 + (long)((long)this.getNthChild(1).getCost(__vector_literal_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6ed1456e( int goalState)
		{

			if ( this.getArity() == 2 && this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == SuperID && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long)((long)getNaryCost(this.getNthChild(1), __expression_NT, 0))));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_FunctionID_3 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		JBurgAnnotation_FunctionID_3(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_function = -1;
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					if ( cachedCostFor_function == -1 )
					{
						cachedCostFor_function = getCostForRule_e744f1(goalState);

					}
					return(cachedCostFor_function);
				}
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_621e5270(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_e744f1(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 469;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_621e5270(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 470;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(3);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_e744f1( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) (((long)this.getNthChild(2).getCost(__statement_NT)) + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_621e5270( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) (((long)this.getNthChild(2).getCost(__statement_NT)) + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_FunctionID_4 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		private JBurgAnnotation subtree3;
		JBurgAnnotation_FunctionID_4(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_function = -1;
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					if ( cachedCostFor_function == -1 )
					{
						cachedCostFor_function = getCostForRule_4ad5545f(goalState);

					}
					return(cachedCostFor_function);
				}
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_2ecb925e(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4ad5545f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 460;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2ecb925e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 461;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(4);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				case 3:
					return subtree3;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else if ( subtree3 == null )
				subtree3 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_4ad5545f( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) ( (((long)this.getNthChild(3).getCost(__statement_NT)) + ((long)this.getNthChild(2).getCost(__return_type_name_NT)))  + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2ecb925e( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) ( (((long)this.getNthChild(3).getCost(__statement_NT)) + ((long)this.getNthChild(2).getCost(__return_type_name_NT)))  + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_FunctionObjectID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_FunctionObjectID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_14b18bba(goalState);

						int currentCost = getCostForRule_42cd68e(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_14b18bba(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 462;
					}
					currentCost = getCostForRule_42cd68e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 471;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_14b18bba( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 2? this.getNthChild(0).getNthChild(2): errorAnnotation);
			JBurgAnnotation factoredPath_2 = (this.getNthChild(0).getArity() > 3? this.getNthChild(0).getNthChild(3): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 4 && this.getNthChild(0).getOperator() == FunctionID && this.getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)1 + (long) ( (((long)factoredPath_2.getCost(__statement_NT)) + ((long)factoredPath_1.getCost(__return_type_name_NT)))  + ((long)factoredPath_0.getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_42cd68e( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 2? this.getNthChild(0).getNthChild(2): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 3 && this.getNthChild(0).getOperator() == FunctionID && this.getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_1.getCost(__statement_NT)) + ((long)factoredPath_0.getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_GetterID_3 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		JBurgAnnotation_GetterID_3(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_function = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					if ( cachedCostFor_function == -1 )
					{
						cachedCostFor_function = getCostForRule_64bb0df8(goalState);

					}
					return(cachedCostFor_function);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_64bb0df8(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 472;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(3);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_64bb0df8( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) (((long)this.getNthChild(2).getCost(__statement_NT)) + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_GetterID_4 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		private JBurgAnnotation subtree3;
		JBurgAnnotation_GetterID_4(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_function = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					if ( cachedCostFor_function == -1 )
					{
						cachedCostFor_function = getCostForRule_16102a53(goalState);

					}
					return(cachedCostFor_function);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_16102a53(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 463;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(4);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				case 3:
					return subtree3;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else if ( subtree3 == null )
				subtree3 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_16102a53( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) ( (((long)this.getNthChild(3).getCost(__statement_NT)) + ((long)this.getNthChild(2).getCost(__return_type_name_NT)))  + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_GotoID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_GotoID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_e649f70(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_e649f70(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 333;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_e649f70( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(1);
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_IdentifierID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_IdentifierID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT)));
				}
				case __decl_name_NT:
				{
					return(0);
				}
				case __dottedNamePart_NT:
				{
					return(0);
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = 2000;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __import_name_NT:
				{
					return(0);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(1);
				}
				case __name_NT:
				{
					return(0);
				}
				case __new_type_name_NT:
				{
					return(0);
				}
				case __qualifiedNamePart_NT:
				{
					return(0);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(1);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(1);
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = 1;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __decl_name_NT:
				{
					return(437);
				}
				case __dottedNamePart_NT:
				{
					return(505);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 2000;
					rule = 7;
					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 90;
					}
					return(rule);
				}
				case __import_name_NT:
				{
					return(439);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(93);
				}
				case __name_NT:
				{
					return(436);
				}
				case __new_type_name_NT:
				{
					return(501);
				}
				case __qualifiedNamePart_NT:
				{
					return(438);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					return(498);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					return(4);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 1;
					rule = 6;
					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
	}

	class JBurgAnnotation_IfStatementID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_IfStatementID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_6c9eb094(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6c9eb094(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 339;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_6c9eb094( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( (this.getArity() >= 1) && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ConditionalID )
				return(normalizeCost((long)0 + (long) ( (((long)getNaryCost(this, __conditionalElements_NT, 1)) + ((long)factoredPath_1.getCost(__statement_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_ImportID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_ImportID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_5076b432(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5076b432(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 340;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_5076b432( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__import_name_NT))));
		}
	}

	class JBurgAnnotation_InstructionListID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_InstructionListID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(2);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					return(268435457);
				}
				case __statement_NT:
				{
					return(2);
				}
				case __type_param_expression_NT:
				{
					return(1);
				}
				case __void_expression_NT:
				{
					return(2);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(343);
				}
				case __required_constant_value_NT:
				{
					return(81);
				}
				case __statement_NT:
				{
					return(496);
				}
				case __type_param_expression_NT:
				{
					return(502);
				}
				case __void_expression_NT:
				{
					return(1);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LabledStatementID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_LabledStatementID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_47a35edd(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_47a35edd(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 348;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_47a35edd( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)this.getNthChild(0).getCost(__non_resolving_identifier_NT))) ));
		}
	}

	class JBurgAnnotation_LiteralBooleanID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralBooleanID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					return(0);
				}
				case __boolean_literal_NT:
				{
					return(1);
				}
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(1);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __literal_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > 1 )  )
						bestCost = 1;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					return(276);
				}
				case __boolean_literal_NT:
				{
					return(92);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(86);
				}
				case __expression_NT:
				{
					return(12);
				}
				case __literal_NT:
				{
					return(508);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					if ( ( bestCost > 1 )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralDoubleID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralDoubleID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(4);
				}
				case __double_constant_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(4);
				}
				case __numeric_constant_NT:
				{
					return(3);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = 4;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(87);
				}
				case __double_constant_NT:
				{
					return(300);
				}
				case __expression_NT:
				{
					return(90);
				}
				case __numeric_constant_NT:
				{
					return(507);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 4;
					rule = 510;
					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralIntegerID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralIntegerID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(1);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __integer_constant_NT:
				{
					return(0);
				}
				case __numeric_constant_NT:
				{
					return(0);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > 1 )  )
						bestCost = 1;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(87);
				}
				case __expression_NT:
				{
					return(10);
				}
				case __integer_constant_NT:
				{
					return(344);
				}
				case __numeric_constant_NT:
				{
					return(509);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					if ( ( bestCost > 1 )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralIntegerZeroID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralIntegerZeroID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = 2;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					if ( ( bestCost > 2 )  )
						bestCost = 2;
					return(bestCost);
				}
				case __integer_constant_NT:
				{
					return(1);
				}
				case __numeric_constant_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __uint_constant_NT:
				{
					return(1);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 2;
					rule = 10;
					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 89;
					}
					if ( ( bestCost > 2 )  )
					{
						rule = 11;
					}
					return(rule);
				}
				case __integer_constant_NT:
				{
					return(83);
				}
				case __numeric_constant_NT:
				{
					return(509);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __uint_constant_NT:
				{
					return(84);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralNullID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralNullID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(0);
				}
				case __expression_NT:
				{
					return(0);
				}
				case __literal_NT:
				{
					return(1);
				}
				case __object_literal_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = 0;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(382);
				}
				case __expression_NT:
				{
					return(90);
				}
				case __literal_NT:
				{
					return(503);
				}
				case __object_literal_NT:
				{
					return(383);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 0;
					rule = 510;
					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralNumberID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralNumberID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(4);
				}
				case __double_constant_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(4);
				}
				case __numeric_constant_NT:
				{
					return(3);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = 4;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(87);
				}
				case __double_constant_NT:
				{
					return(384);
				}
				case __expression_NT:
				{
					return(90);
				}
				case __numeric_constant_NT:
				{
					return(507);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 4;
					rule = 510;
					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralObjectID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralObjectID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(0);
				}
				case __expression_NT:
				{
					return(0);
				}
				case __literal_NT:
				{
					return(1);
				}
				case __object_literal_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = 0;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(484);
				}
				case __expression_NT:
				{
					return(90);
				}
				case __literal_NT:
				{
					return(503);
				}
				case __object_literal_NT:
				{
					return(485);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 0;
					rule = 510;
					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralRegexID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralRegexID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(6);
				}
				case __expression_NT:
				{
					return(5);
				}
				case __literal_NT:
				{
					return(5);
				}
				case __object_literal_NT:
				{
					return(5);
				}
				case __required_constant_value_NT:
				{
					return(268435461);
				}
				case __statement_NT:
				{
					return(6);
				}
				case __type_param_expression_NT:
				{
					return(5);
				}
				case __void_expression_NT:
				{
					return(6);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(506);
				}
				case __literal_NT:
				{
					return(503);
				}
				case __object_literal_NT:
				{
					return(426);
				}
				case __required_constant_value_NT:
				{
					return(81);
				}
				case __statement_NT:
				{
					return(496);
				}
				case __type_param_expression_NT:
				{
					return(502);
				}
				case __void_expression_NT:
				{
					return(1);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralStringID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralStringID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(1);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > 1 )  )
						bestCost = 1;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __string_constant_NT:
				{
					return(0);
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(85);
				}
				case __expression_NT:
				{
					return(9);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					if ( ( bestCost > 1 )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __string_constant_NT:
				{
					return(444);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralUintID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralUintID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(1);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __numeric_constant_NT:
				{
					return(0);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > 1 )  )
						bestCost = 1;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __uint_constant_NT:
				{
					return(0);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(87);
				}
				case __expression_NT:
				{
					return(11);
				}
				case __numeric_constant_NT:
				{
					return(500);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					if ( ( bestCost > 1 )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __uint_constant_NT:
				{
					return(476);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_LiteralXMLID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_LiteralXMLID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(1);
				}
				case __e4x_literal_NT:
				{
					return(0);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > 1 )  )
						bestCost = 1;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __string_constant_NT:
				{
					return(0);
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					return(85);
				}
				case __e4x_literal_NT:
				{
					return(103);
				}
				case __expression_NT:
				{
					return(9);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					if ( ( bestCost > 1 )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __string_constant_NT:
				{
					return(499);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_MXMLEventSpecifierID_0_n extends JBurgSpecializedAnnotation
	{
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_MXMLEventSpecifierID_0_n(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					return(normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0))));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)0 + (long)((long)getNaryCost(this, __statement_NT, 0)));

					if ( ( bestCost > currentCost )  )
					{
						rule = 361;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				default:
				{
					return narySubtrees.get(index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
				narySubtrees.add(child);
		}
	}

	class JBurgAnnotation_MemberAccessExpressionID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_MemberAccessExpressionID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_name = -1;
		private int cachedCostFor_mxml_data_binding_setter_expression = -1;
		private int cachedCostFor_dottedNamePart = -1;
		private int cachedCostFor_constant_value = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					if ( cachedCostFor_constant_value == -1 )
					{
						cachedCostFor_constant_value = getCostForRule_6d96d646(goalState);

						int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
					}
					return(cachedCostFor_constant_value);
				}
				case __dottedNamePart_NT:
				{
					if ( cachedCostFor_dottedNamePart == -1 )
					{
						cachedCostFor_dottedNamePart = getCostForRule_7495c170(goalState);

					}
					return(cachedCostFor_dottedNamePart);
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_11272cf4(goalState);

						int currentCost = getCostForRule_4c2fddbb(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1750069e(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_4d94cb45(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_657c1e8f(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_570cd59e(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)2000 + (long)getCost(__name_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					if ( cachedCostFor_mxml_data_binding_setter_expression == -1 )
					{
						cachedCostFor_mxml_data_binding_setter_expression = getCostForRule_407f5d17(goalState);

						int currentCost = getCostForRule_2bda68be(goalState);

						if ( ( cachedCostFor_mxml_data_binding_setter_expression > currentCost )  )
							cachedCostFor_mxml_data_binding_setter_expression = currentCost;
						currentCost = getCostForRule_2ed7932c(goalState);
						if ( ( cachedCostFor_mxml_data_binding_setter_expression > currentCost )  )
							cachedCostFor_mxml_data_binding_setter_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));
						if ( ( cachedCostFor_mxml_data_binding_setter_expression > currentCost )  )
							cachedCostFor_mxml_data_binding_setter_expression = currentCost;
					}
					return(cachedCostFor_mxml_data_binding_setter_expression);
				}
				case __name_NT:
				{
					if ( cachedCostFor_name == -1 )
					{
						cachedCostFor_name = getCostForRule_1fc6134d(goalState);

						int currentCost = getCostForRule_256b7247(goalState);

						if ( ( cachedCostFor_name > currentCost )  )
							cachedCostFor_name = currentCost;
						currentCost = getCostForRule_5d8c61cc(goalState);
						if ( ( cachedCostFor_name > currentCost )  )
							cachedCostFor_name = currentCost;
						currentCost = getCostForRule_4f50c7a2(goalState);
						if ( ( cachedCostFor_name > currentCost )  )
							cachedCostFor_name = currentCost;
					}
					return(cachedCostFor_name);
				}
				case __new_type_name_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					int currentCost = getCost(__name_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(getCost(__type_name_NT));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = getCost(__expression_NT);

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6d96d646(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 282;
					}
					currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __dottedNamePart_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_7495c170(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 297;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_11272cf4(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 357;
					}
					currentCost = getCostForRule_4c2fddbb(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 415;
					}
					currentCost = getCostForRule_1750069e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 416;
					}
					currentCost = getCostForRule_4d94cb45(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 421;
					}
					currentCost = getCostForRule_657c1e8f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 423;
					}
					currentCost = getCostForRule_570cd59e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 479;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)2000 + (long)getCost(__name_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 7;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_407f5d17(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 358;
					}
					currentCost = getCostForRule_2bda68be(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 422;
					}
					currentCost = getCostForRule_2ed7932c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 424;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 93;
					}
					return(rule);
				}
				case __name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_1fc6134d(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 298;
					}
					currentCost = getCostForRule_256b7247(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 299;
					}
					currentCost = getCostForRule_5d8c61cc(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 446;
					}
					currentCost = getCostForRule_4f50c7a2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 449;
					}
					return(rule);
				}
				case __new_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 5;
					}
					currentCost = getCost(__name_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 501;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__type_name_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 498;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 4;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 502;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 6;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
		
		private int getCostForRule_6d96d646( int goalState)
		{

			return(normalizeCost((long)cachedCost_4411a827() + (long) (((long)this.getNthChild(1).getCost(__name_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		private int cachedCostFunctionResult_12095b4c = -1;
		
		private int cachedCost_4411a827( )
		{
			if ( cachedCostFunctionResult_12095b4c == -1 )
				cachedCostFunctionResult_12095b4c = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_12095b4c);
		}
		
		private int getCostForRule_7495c170( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__dottedNamePart_NT)) + ((long)this.getNthChild(0).getCost(__dottedNamePart_NT))) ));
		}
		
		private int getCostForRule_1fc6134d( int goalState)
		{

			return(normalizeCost((long)cachedCost_b05ac882() + (long) (((long)this.getNthChild(1).getCost(__dottedNamePart_NT)) + ((long)this.getNthChild(0).getCost(__dottedNamePart_NT))) ));
		}
		private int cachedCostFunctionResult_f25f3279 = -1;
		
		private int cachedCost_b05ac882( )
		{
			if ( cachedCostFunctionResult_f25f3279 == -1 )
				cachedCostFunctionResult_f25f3279 = isDottedName(m_node);
			return(cachedCostFunctionResult_f25f3279);
		}
		
		private int getCostForRule_256b7247( int goalState)
		{

			return(normalizeCost((long)cachedCost_609fc9ba() + (long) (((long)this.getNthChild(1).getCost(__dottedNamePart_NT)) + ((long)this.getNthChild(0).getCost(__dottedNamePart_NT))) ));
		}
		private int cachedCostFunctionResult_1ec55d2c = -1;
		
		private int cachedCost_609fc9ba( )
		{
			if ( cachedCostFunctionResult_1ec55d2c == -1 )
				cachedCostFunctionResult_1ec55d2c = isPackageName(m_node);
			return(cachedCostFunctionResult_1ec55d2c);
		}
		
		private int getCostForRule_11272cf4( int goalState)
		{

			return(normalizeCost((long)10 + (long) (((long)this.getNthChild(1).getCost(__name_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_407f5d17( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__name_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_4c2fddbb( int goalState)
		{
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 1 && this.getNthChild(1).getOperator() == Op_AtID && this.getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( (((long)factoredPath_3.getCost(__name_NT)) + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1750069e( int goalState)
		{
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 1 && this.getNthChild(1).getOperator() == Op_AtID && this.getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( (((long)factoredPath_3.getCost(__expression_NT)) + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4d94cb45( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)10 + (long) ( (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2bda68be( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)10 + (long) ( (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_657c1e8f( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)100 + (long) ( (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2ed7932c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)100 + (long) ( (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_5d8c61cc( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)0 + (long)((long)this.getNthChild(1).getCost(__name_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4f50c7a2( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == FunctionCallID && this.getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getOperator() == SuperID && this.getNthChild(0).getNthChild(1).getArity() == 1 && this.getNthChild(0).getNthChild(1).getOperator() == ContainerID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)cachedCost_4dc0513d() + (long)((long)this.getNthChild(1).getCost(__name_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		private int cachedCostFunctionResult_526494ba = -1;
		
		private int cachedCost_4dc0513d( )
		{
			if ( cachedCostFunctionResult_526494ba == -1 )
				cachedCostFunctionResult_526494ba = isSuperThisForFieldAccess(m_node);
			return(cachedCostFunctionResult_526494ba);
		}
		
		private int getCostForRule_570cd59e( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == ArrayIndexExpressionID && this.getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(1).getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_NamespaceAccessExpressionID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_NamespaceAccessExpressionID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_runtime_name_expression = -1;
		private int cachedCostFor_name = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = normalizeCost((long)1 + (long)getCost(__runtime_name_expression_NT));
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					int currentCost = normalizeCost((long)1 + (long)getCost(__runtime_name_expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __name_NT:
				{
					if ( cachedCostFor_name == -1 )
					{
						cachedCostFor_name = getCostForRule_60a3e97e(goalState);

						int currentCost = getCostForRule_1ea44667(goalState);

						if ( ( cachedCostFor_name > currentCost )  )
							cachedCostFor_name = currentCost;
					}
					return(cachedCostFor_name);
				}
				case __new_type_name_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					int currentCost = getCost(__name_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(getCost(__type_name_NT));
				}
				case __runtime_name_expression_NT:
				{
					if ( cachedCostFor_runtime_name_expression == -1 )
					{
						cachedCostFor_runtime_name_expression = getCostForRule_2098c67e(goalState);

						int currentCost = getCostForRule_693c6818(goalState);

						if ( ( cachedCostFor_runtime_name_expression > currentCost )  )
							cachedCostFor_runtime_name_expression = currentCost;
						currentCost = getCostForRule_162b9458(goalState);
						if ( ( cachedCostFor_runtime_name_expression > currentCost )  )
							cachedCostFor_runtime_name_expression = currentCost;
					}
					return(cachedCostFor_runtime_name_expression);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 7;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__runtime_name_expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 8;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 93;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__runtime_name_expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 94;
					}
					return(rule);
				}
				case __name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_60a3e97e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 362;
					}
					currentCost = getCostForRule_1ea44667(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 363;
					}
					return(rule);
				}
				case __new_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 5;
					}
					currentCost = getCost(__name_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 501;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__type_name_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 498;
					}
					return(rule);
				}
				case __runtime_name_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2098c67e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 369;
					}
					currentCost = getCostForRule_693c6818(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 370;
					}
					currentCost = getCostForRule_162b9458(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 371;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 4;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 6;
					}
					currentCost = getCost(__expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
		
		private int getCostForRule_60a3e97e( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == NamespaceIdentifierID )
				return(normalizeCost((long)cachedCost_d3ce5471() + (long)((long)this.getNthChild(1).getCost(__name_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		private int cachedCostFunctionResult_af76905a = -1;
		
		private int cachedCost_d3ce5471( )
		{
			if ( cachedCostFunctionResult_af76905a == -1 )
				cachedCostFunctionResult_af76905a = qualifierIsCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_af76905a);
		}
		
		private int getCostForRule_1ea44667( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == NamespaceIdentifierID )
				return(normalizeCost((long)ERROR_TRAP + (long)((long)this.getNthChild(1).getCost(__name_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2098c67e( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == NamespaceIdentifierID )
				return(normalizeCost((long)cachedCost_d3ce5471() + (long)((long)this.getNthChild(1).getCost(__expression_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_693c6818( int goalState)
		{

			return(normalizeCost((long)2000 + (long) (((long)this.getNthChild(1).getCost(__name_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_162b9458( int goalState)
		{

			return(normalizeCost((long)2000 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_NamespaceID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_NamespaceID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_2a806f84(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2a806f84(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 366;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2a806f84( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_NamespaceID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_NamespaceID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_4c4de79c(goalState);

						int currentCost = getCostForRule_46bb2aa5(goalState);

						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4c4de79c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 367;
					}
					currentCost = getCostForRule_46bb2aa5(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 368;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_4c4de79c( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_46bb2aa5( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__name_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
	}

	class JBurgAnnotation_NamespaceIdentifierID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_NamespaceIdentifierID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = 1;

					if ( ( bestCost > 2001 )  )
						bestCost = 2001;
					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(2);
				}
				case __name_NT:
				{
					return(1);
				}
				case __new_type_name_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(2);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(2);
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = 2;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 1;
					rule = 365;
					if ( ( bestCost > 2001 )  )
					{
						bestCost = 2001;
						rule = 7;
					}
					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 90;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(93);
				}
				case __name_NT:
				{
					return(364);
				}
				case __new_type_name_NT:
				{
					return(501);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					return(498);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					return(4);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					bestCost = 2;
					rule = 6;
					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
	}

	class JBurgAnnotation_NilID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_NilID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(1);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					return(268435457);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(1);
				}
				case __void_expression_NT:
				{
					return(0);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(380);
				}
				case __expression_NT:
				{
					return(379);
				}
				case __required_constant_value_NT:
				{
					return(81);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					return(502);
				}
				case __void_expression_NT:
				{
					return(378);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_NonResolvingIdentifierID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_NonResolvingIdentifierID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(2);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __non_resolving_identifier_NT:
				{
					return(0);
				}
				case __required_constant_value_NT:
				{
					return(268435457);
				}
				case __statement_NT:
				{
					return(2);
				}
				case __type_param_expression_NT:
				{
					return(1);
				}
				case __void_expression_NT:
				{
					return(2);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(91);
				}
				case __non_resolving_identifier_NT:
				{
					return(381);
				}
				case __required_constant_value_NT:
				{
					return(81);
				}
				case __statement_NT:
				{
					return(496);
				}
				case __type_param_expression_NT:
				{
					return(502);
				}
				case __void_expression_NT:
				{
					return(1);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_ObjectLiteralExpressionID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_ObjectLiteralExpressionID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_object_literal = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					return(getCost(__literal_NT));
				}
				case __literal_NT:
				{
					return(getCost(__object_literal_NT));
				}
				case __object_literal_NT:
				{
					if ( cachedCostFor_object_literal == -1 )
					{
						cachedCostFor_object_literal = getCostForRule_cf8ff7e(goalState);

					}
					return(cachedCostFor_object_literal);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 506;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__object_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 503;
					}
					return(rule);
				}
				case __object_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_cf8ff7e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 385;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_cf8ff7e( int goalState)
		{

			if ( this.getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID )
				return(normalizeCost((long)3 + (long)((long)getNaryCost(this.getNthChild(0), __object_literal_element_NT, 0))));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_ObjectLiteralValuePairID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_ObjectLiteralValuePairID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_object_literal_element = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __object_literal_element_NT:
				{
					if ( cachedCostFor_object_literal_element == -1 )
					{
						cachedCostFor_object_literal_element = getCostForRule_25ad5d2a(goalState);

					}
					return(cachedCostFor_object_literal_element);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __object_literal_element_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_25ad5d2a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 386;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_25ad5d2a( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_AddAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_AddAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_67f2f04(goalState);

						int currentCost = getCostForRule_190ed36c(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_5246dc3c(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1d4d9f53(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_623594f1(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_dcfbe68(goalState);

						int currentCost = getCostForRule_690c24d1(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_18ca99a4(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_56961450(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_26dacc14(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_67f2f04(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 211;
					}
					currentCost = getCostForRule_190ed36c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 214;
					}
					currentCost = getCostForRule_5246dc3c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 216;
					}
					currentCost = getCostForRule_1d4d9f53(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 218;
					}
					currentCost = getCostForRule_623594f1(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 220;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_dcfbe68(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 212;
					}
					currentCost = getCostForRule_690c24d1(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 213;
					}
					currentCost = getCostForRule_18ca99a4(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 215;
					}
					currentCost = getCostForRule_56961450(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 217;
					}
					currentCost = getCostForRule_26dacc14(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 219;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_67f2f04( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_dcfbe68( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_690c24d1( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_190ed36c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_18ca99a4( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_5246dc3c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_56961450( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_1d4d9f53( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_26dacc14( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_623594f1( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_AddID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_AddID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_2ef85eb2(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_62b3f570(goalState);

						int currentCost = getCostForRule_4e149e2(goalState);

						if ( ( cachedCostFor_numeric_constant > currentCost )  )
							cachedCostFor_numeric_constant = currentCost;
					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2ef85eb2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 478;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_62b3f570(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 41;
					}
					currentCost = getCostForRule_4e149e2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 42;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_62b3f570( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__numeric_constant_NT))));
		}
		
		private int getCostForRule_4e149e2( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__constant_value_NT))));
		}
		
		private int getCostForRule_2ef85eb2( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_Op_AddID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_AddID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		private int cachedCostFor_string_constant = -1;
		private int cachedCostFor_constant_value = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					if ( cachedCostFor_constant_value == -1 )
					{
						cachedCostFor_constant_value = getCostForRule_742b8f06(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
					}
					return(cachedCostFor_constant_value);
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_184a52ff(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_652f2cf3(goalState);

					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __string_constant_NT:
				{
					if ( cachedCostFor_string_constant == -1 )
					{
						cachedCostFor_string_constant = getCostForRule_6b0fc7ed(goalState);

						int currentCost = getCostForRule_43f42635(goalState);

						if ( ( cachedCostFor_string_constant > currentCost )  )
							cachedCostFor_string_constant = currentCost;
						currentCost = getCostForRule_9e3491e(goalState);
						if ( ( cachedCostFor_string_constant > currentCost )  )
							cachedCostFor_string_constant = currentCost;
					}
					return(cachedCostFor_string_constant);
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_742b8f06(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 21;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 87;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 85;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_184a52ff(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 104;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 89;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 9;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_652f2cf3(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 20;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __string_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6b0fc7ed(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 22;
					}
					currentCost = getCostForRule_43f42635(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 23;
					}
					currentCost = getCostForRule_9e3491e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 24;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_652f2cf3( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_742b8f06( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_6b0fc7ed( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_43f42635( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_9e3491e( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_184a52ff( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_AsID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_AsID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_1537b465(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_1537b465(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 265;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_1537b465( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_AssignId_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_AssignId_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_123981(goalState);

						int currentCost = getCostForRule_62b56238(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_710d6cc9(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_59b17a11(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_487e8e97(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1939102(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1b62cedd(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_49515e52(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_75676bd9(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_6861fff6(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_6578c001(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_2618a132(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_686f2f8b(goalState);

						int currentCost = getCostForRule_f96e33f(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_2c4d4204(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_4f3f678e(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_5ebd0a95(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_660a8566(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_2011a6c1(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_14a6a65a(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_2279eff9(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_10ea7f65(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_3de0e417(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_1c551187(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_71be23d3(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_123981(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 2;
					}
					currentCost = getCostForRule_62b56238(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 232;
					}
					currentCost = getCostForRule_710d6cc9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 234;
					}
					currentCost = getCostForRule_59b17a11(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 236;
					}
					currentCost = getCostForRule_487e8e97(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 238;
					}
					currentCost = getCostForRule_1939102(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 240;
					}
					currentCost = getCostForRule_1b62cedd(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 242;
					}
					currentCost = getCostForRule_49515e52(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 246;
					}
					currentCost = getCostForRule_75676bd9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 248;
					}
					currentCost = getCostForRule_6861fff6(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 250;
					}
					currentCost = getCostForRule_6578c001(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 252;
					}
					currentCost = getCostForRule_2618a132(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 254;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_686f2f8b(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 231;
					}
					currentCost = getCostForRule_f96e33f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 233;
					}
					currentCost = getCostForRule_2c4d4204(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 235;
					}
					currentCost = getCostForRule_4f3f678e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 237;
					}
					currentCost = getCostForRule_5ebd0a95(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 239;
					}
					currentCost = getCostForRule_660a8566(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 241;
					}
					currentCost = getCostForRule_2011a6c1(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 243;
					}
					currentCost = getCostForRule_14a6a65a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 244;
					}
					currentCost = getCostForRule_2279eff9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 245;
					}
					currentCost = getCostForRule_10ea7f65(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 247;
					}
					currentCost = getCostForRule_3de0e417(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 249;
					}
					currentCost = getCostForRule_1c551187(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 251;
					}
					currentCost = getCostForRule_71be23d3(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 253;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_123981( int goalState)
		{

			return(normalizeCost((long)ERROR_TRAP + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_686f2f8b( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_62b56238( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_f96e33f( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_710d6cc9( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2c4d4204( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_59b17a11( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)10 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4f3f678e( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_487e8e97( int goalState)
		{

			return(normalizeCost((long)2 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_5ebd0a95( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_4 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 1 && this.getNthChild(0).getNthChild(1).getOperator() == Op_AtID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_5.getCost(__name_NT)))  + ((long)factoredPath_4.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1939102( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_4 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 1 && this.getNthChild(0).getNthChild(1).getOperator() == Op_AtID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_5.getCost(__name_NT)))  + ((long)factoredPath_4.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_660a8566( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__name_NT)))  + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1b62cedd( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__name_NT)))  + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2011a6c1( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_4 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 1 && this.getNthChild(0).getNthChild(1).getOperator() == Op_AtID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_5.getCost(__expression_NT)))  + ((long)factoredPath_4.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_14a6a65a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_4 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 0? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_5 = (((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getArity() > 1? ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 1 && this.getNthChild(0).getNthChild(1).getOperator() == Op_AtID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_5.getCost(__expression_NT)))  + ((long)factoredPath_4.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2279eff9( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__expression_NT)))  + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_49515e52( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 0? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__expression_NT)))  + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_10ea7f65( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_75676bd9( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_3de0e417( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6861fff6( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(0).getOperator() == SuperID )
				return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1c551187( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6578c001( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_71be23d3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2618a132( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_3.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_Op_AtID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_AtID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_name = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __name_NT:
				{
					if ( cachedCostFor_name == -1 )
					{
						cachedCostFor_name = getCostForRule_326c6bd6(goalState);

					}
					return(cachedCostFor_name);
				}
				case __new_type_name_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					int currentCost = getCost(__name_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(getCost(__type_name_NT));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 7;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 90;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 93;
					}
					return(rule);
				}
				case __name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_326c6bd6(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 266;
					}
					return(rule);
				}
				case __new_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 5;
					}
					currentCost = getCost(__name_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 501;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__type_name_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 498;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 4;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 6;
					}
					currentCost = getCost(__expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
		
		private int getCostForRule_326c6bd6( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_Op_BitwiseAndAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_BitwiseAndAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_816e1d0(goalState);

						int currentCost = getCostForRule_3cfb107c(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_3cdb0c8b(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_6d38f21d(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_529f860b(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_360314d4(goalState);

						int currentCost = getCostForRule_52d8f9cb(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_78da4197(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_565b2f59(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_78d024f2(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_816e1d0(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 109;
					}
					currentCost = getCostForRule_3cfb107c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 112;
					}
					currentCost = getCostForRule_3cdb0c8b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 114;
					}
					currentCost = getCostForRule_6d38f21d(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 116;
					}
					currentCost = getCostForRule_529f860b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 118;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_360314d4(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 110;
					}
					currentCost = getCostForRule_52d8f9cb(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 111;
					}
					currentCost = getCostForRule_78da4197(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 113;
					}
					currentCost = getCostForRule_565b2f59(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 115;
					}
					currentCost = getCostForRule_78d024f2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 117;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_816e1d0( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_360314d4( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_52d8f9cb( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3cfb107c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_78da4197( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3cdb0c8b( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_565b2f59( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_6d38f21d( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_78d024f2( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_529f860b( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_BitwiseAndID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_BitwiseAndID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_integer_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_6d538c82(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __integer_constant_NT:
				{
					if ( cachedCostFor_integer_constant == -1 )
					{
						cachedCostFor_integer_constant = getCostForRule_47afae46(goalState);

						int currentCost = getCostForRule_4881600d(goalState);

						if ( ( cachedCostFor_integer_constant > currentCost )  )
							cachedCostFor_integer_constant = currentCost;
					}
					return(cachedCostFor_integer_constant);
				}
				case __numeric_constant_NT:
				{
					return(getCost(__integer_constant_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6d538c82(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 268;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 10;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __integer_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_47afae46(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 33;
					}
					currentCost = getCostForRule_4881600d(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 34;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__integer_constant_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 509;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_47afae46( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_4881600d( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_6d538c82( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_BitwiseNotID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_BitwiseNotID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_integer_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_310f2a5b(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __integer_constant_NT:
				{
					if ( cachedCostFor_integer_constant == -1 )
					{
						cachedCostFor_integer_constant = getCostForRule_40c98764(goalState);

						int currentCost = getCostForRule_7a2edca5(goalState);

						if ( ( cachedCostFor_integer_constant > currentCost )  )
							cachedCostFor_integer_constant = currentCost;
					}
					return(cachedCostFor_integer_constant);
				}
				case __numeric_constant_NT:
				{
					return(getCost(__integer_constant_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_310f2a5b(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 267;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 10;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __integer_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_40c98764(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 43;
					}
					currentCost = getCostForRule_7a2edca5(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 44;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__integer_constant_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 509;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_40c98764( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__numeric_constant_NT))));
		}
		
		private int getCostForRule_7a2edca5( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__constant_value_NT))));
		}
		
		private int getCostForRule_310f2a5b( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_Op_BitwiseOrAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_BitwiseOrAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_7d87b98d(goalState);

						int currentCost = getCostForRule_71c0896c(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_2aa04ed3(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_14f45b8c(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_54ffc34e(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_2181ab54(goalState);

						int currentCost = getCostForRule_97fbf61(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_3fe1bdf9(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_15aeecf8(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_39d92e12(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_7d87b98d(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 119;
					}
					currentCost = getCostForRule_71c0896c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 122;
					}
					currentCost = getCostForRule_2aa04ed3(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 124;
					}
					currentCost = getCostForRule_14f45b8c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 126;
					}
					currentCost = getCostForRule_54ffc34e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 128;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2181ab54(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 120;
					}
					currentCost = getCostForRule_97fbf61(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 121;
					}
					currentCost = getCostForRule_3fe1bdf9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 123;
					}
					currentCost = getCostForRule_15aeecf8(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 125;
					}
					currentCost = getCostForRule_39d92e12(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 127;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_7d87b98d( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2181ab54( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_97fbf61( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_71c0896c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3fe1bdf9( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2aa04ed3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_15aeecf8( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_14f45b8c( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_39d92e12( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_54ffc34e( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_BitwiseOrID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_BitwiseOrID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_integer_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_4d291aff(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __integer_constant_NT:
				{
					if ( cachedCostFor_integer_constant == -1 )
					{
						cachedCostFor_integer_constant = getCostForRule_7f1568d6(goalState);

						int currentCost = getCostForRule_1d3e82e0(goalState);

						if ( ( cachedCostFor_integer_constant > currentCost )  )
							cachedCostFor_integer_constant = currentCost;
					}
					return(cachedCostFor_integer_constant);
				}
				case __numeric_constant_NT:
				{
					return(getCost(__integer_constant_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4d291aff(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 270;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 10;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __integer_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_7f1568d6(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 35;
					}
					currentCost = getCostForRule_1d3e82e0(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 36;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__integer_constant_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 509;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_7f1568d6( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_1d3e82e0( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_4d291aff( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_BitwiseXorAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_BitwiseXorAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_6d6786eb(goalState);

						int currentCost = getCostForRule_689c975a(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_3c1b1147(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_555bada6(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_45a3938(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_8f048ae(goalState);

						int currentCost = getCostForRule_6c05f1de(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_643b5765(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_31fd3123(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_3bc2ba8a(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6d6786eb(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 129;
					}
					currentCost = getCostForRule_689c975a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 132;
					}
					currentCost = getCostForRule_3c1b1147(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 134;
					}
					currentCost = getCostForRule_555bada6(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 136;
					}
					currentCost = getCostForRule_45a3938(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 138;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_8f048ae(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 130;
					}
					currentCost = getCostForRule_6c05f1de(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 131;
					}
					currentCost = getCostForRule_643b5765(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 133;
					}
					currentCost = getCostForRule_31fd3123(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 135;
					}
					currentCost = getCostForRule_3bc2ba8a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 137;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_6d6786eb( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_8f048ae( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6c05f1de( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_689c975a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_643b5765( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3c1b1147( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_31fd3123( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_555bada6( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_3bc2ba8a( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_45a3938( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_BitwiseXorID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_BitwiseXorID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_integer_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_780a272d(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __integer_constant_NT:
				{
					if ( cachedCostFor_integer_constant == -1 )
					{
						cachedCostFor_integer_constant = getCostForRule_4634c736(goalState);

						int currentCost = getCostForRule_1e9892fa(goalState);

						if ( ( cachedCostFor_integer_constant > currentCost )  )
							cachedCostFor_integer_constant = currentCost;
					}
					return(cachedCostFor_integer_constant);
				}
				case __numeric_constant_NT:
				{
					return(getCost(__integer_constant_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_780a272d(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 273;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 10;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __integer_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4634c736(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 37;
					}
					currentCost = getCostForRule_1e9892fa(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 38;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__integer_constant_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 509;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_4634c736( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_1e9892fa( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_780a272d( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_CommaID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_Op_CommaID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_30207d49(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_30207d49(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 280;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_30207d49( int goalState)
		{

			if ( (this.getArity() >= 2) )
				return(normalizeCost((long)0 + (long) (((long)getNaryCost(this, __void_expression_NT, 1)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_Op_DeleteID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_DeleteID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_19ba072f(goalState);

						int currentCost = getCostForRule_79576e59(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_23022ccb(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_10fbd7d7(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_59312998(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1bd6a141(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_2980a284(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_19ba072f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 287;
					}
					currentCost = getCostForRule_79576e59(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 288;
					}
					currentCost = getCostForRule_23022ccb(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 289;
					}
					currentCost = getCostForRule_10fbd7d7(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 290;
					}
					currentCost = getCostForRule_59312998(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 291;
					}
					currentCost = getCostForRule_1bd6a141(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 292;
					}
					currentCost = getCostForRule_2980a284(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 293;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_19ba072f( int goalState)
		{

			return(normalizeCost((long)2000 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
		
		private int getCostForRule_79576e59( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getArity() > 1? (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID && this.getNthChild(0).getNthChild(1).getArity() == 2 && this.getNthChild(0).getNthChild(1).getOperator() == ArrayIndexExpressionID && this.getNthChild(0).getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(0).getNthChild(1).getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_2.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_23022ccb( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_10fbd7d7( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_59312998( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1bd6a141( int goalState)
		{

			return(normalizeCost((long)2 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
		
		private int getCostForRule_2980a284( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_1.getCost(__runtime_name_expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_Op_DescendantsID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_DescendantsID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_670b9d0c(goalState);

						int currentCost = getCostForRule_37a6059c(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_19546680(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_356c63ac(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_eb47bf0(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_9b9155f(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_670b9d0c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 294;
					}
					currentCost = getCostForRule_37a6059c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 417;
					}
					currentCost = getCostForRule_19546680(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 418;
					}
					currentCost = getCostForRule_356c63ac(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 419;
					}
					currentCost = getCostForRule_eb47bf0(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 420;
					}
					currentCost = getCostForRule_9b9155f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 480;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_670b9d0c( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__name_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_37a6059c( int goalState)
		{
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 1 && this.getNthChild(1).getOperator() == Op_AtID && this.getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( (((long)factoredPath_3.getCost(__name_NT)) + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_19546680( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)10 + (long) ( (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_356c63ac( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_eb47bf0( int goalState)
		{
			JBurgAnnotation factoredPath_2 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 0? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_3 = ((this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getArity() > 1? (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 1 && this.getNthChild(1).getOperator() == Op_AtID && this.getNthChild(1).getNthChild(0).getArity() == 2 && this.getNthChild(1).getNthChild(0).getOperator() == NamespaceAccessExpressionID )
				return(normalizeCost((long)1 + (long) ( (((long)factoredPath_3.getCost(__expression_NT)) + ((long)factoredPath_2.getCost(__name_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_9b9155f( int goalState)
		{
			JBurgAnnotation factoredPath_1 = (this.getNthChild(1).getArity() > 1? this.getNthChild(1).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(1).getArity() == 2 && this.getNthChild(1).getOperator() == ArrayIndexExpressionID && this.getNthChild(1).getNthChild(0).getArity() == 0 && this.getNthChild(1).getNthChild(0).getOperator() == Op_AtID )
				return(normalizeCost((long)1 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_Op_DivideAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_DivideAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_33e3028e(goalState);

						int currentCost = getCostForRule_65c4665d(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_4802eaee(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_9501d5c(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_220c998a(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_643cf518(goalState);

						int currentCost = getCostForRule_3b3636eb(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_3205762c(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_7403692f(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_7714c682(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_33e3028e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 139;
					}
					currentCost = getCostForRule_65c4665d(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 142;
					}
					currentCost = getCostForRule_4802eaee(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 144;
					}
					currentCost = getCostForRule_9501d5c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 146;
					}
					currentCost = getCostForRule_220c998a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 148;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_643cf518(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 140;
					}
					currentCost = getCostForRule_3b3636eb(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 141;
					}
					currentCost = getCostForRule_3205762c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 143;
					}
					currentCost = getCostForRule_7403692f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 145;
					}
					currentCost = getCostForRule_7714c682(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 147;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_33e3028e( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_643cf518( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3b3636eb( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_65c4665d( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3205762c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4802eaee( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_7403692f( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_9501d5c( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_7714c682( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_220c998a( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_DivideID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_DivideID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_7d1f37e5(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_64329a7c(goalState);

						int currentCost = getCostForRule_b17ddc4(goalState);

						if ( ( cachedCostFor_numeric_constant > currentCost )  )
							cachedCostFor_numeric_constant = currentCost;
					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_7d1f37e5(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 295;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_64329a7c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 15;
					}
					currentCost = getCostForRule_b17ddc4(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 16;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_64329a7c( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_b17ddc4( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_7d1f37e5( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_EqualID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_EqualID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_5a663af2(goalState);

						int currentCost = getCostForRule_5e429e44(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_2ed30e8a(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_1b1f0f69(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_70451752(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_3abf07a0(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5a663af2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 53;
					}
					currentCost = getCostForRule_5e429e44(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 54;
					}
					currentCost = getCostForRule_2ed30e8a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 55;
					}
					currentCost = getCostForRule_1b1f0f69(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 56;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_70451752(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 305;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3abf07a0(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 306;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_5a663af2( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__boolean_constant_NT)) + ((long)this.getNthChild(0).getCost(__boolean_constant_NT))) ));
		}
		
		private int getCostForRule_5e429e44( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_2ed30e8a( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_1b1f0f69( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_70451752( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_3abf07a0( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_GreaterThanEqualsID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_GreaterThanEqualsID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_caee923(goalState);

						int currentCost = getCostForRule_6f29cb98(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_370eaea8(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_75ce2dee(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_caee923(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 75;
					}
					currentCost = getCostForRule_6f29cb98(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 76;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_370eaea8(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 334;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_75ce2dee(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 335;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_caee923( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_6f29cb98( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_370eaea8( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_75ce2dee( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_GreaterThanID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_GreaterThanID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_e523585(goalState);

						int currentCost = getCostForRule_2f864adc(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_6dbfca6a(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_691a2b6e(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_e523585(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 73;
					}
					currentCost = getCostForRule_2f864adc(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 74;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6dbfca6a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 336;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_691a2b6e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 337;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_e523585( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_2f864adc( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_6dbfca6a( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_691a2b6e( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_InID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_InID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_767bd5d5(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_767bd5d5(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 341;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_767bd5d5( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_InstanceOfID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_InstanceOfID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_6b36a16c(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6b36a16c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 342;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_6b36a16c( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_IsID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_IsID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_78c9cafa(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_78c9cafa(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 345;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_78c9cafa( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LeftShiftAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LeftShiftAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_40b0cfd6(goalState);

						int currentCost = getCostForRule_68cd7f68(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_36ae8edc(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_860ce9(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_460ead50(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_453bbcc6(goalState);

						int currentCost = getCostForRule_7a112d3(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_37f0a78a(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_427e809(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_1ce2a9c7(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_40b0cfd6(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 149;
					}
					currentCost = getCostForRule_68cd7f68(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 152;
					}
					currentCost = getCostForRule_36ae8edc(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 154;
					}
					currentCost = getCostForRule_860ce9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 156;
					}
					currentCost = getCostForRule_460ead50(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 158;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_453bbcc6(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 150;
					}
					currentCost = getCostForRule_7a112d3(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 151;
					}
					currentCost = getCostForRule_37f0a78a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 153;
					}
					currentCost = getCostForRule_427e809(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 155;
					}
					currentCost = getCostForRule_1ce2a9c7(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 157;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_40b0cfd6( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_453bbcc6( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_7a112d3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_68cd7f68( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_37f0a78a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_36ae8edc( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_427e809( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_860ce9( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_1ce2a9c7( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_460ead50( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LeftShiftID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LeftShiftID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_integer_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_135a0702(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __integer_constant_NT:
				{
					if ( cachedCostFor_integer_constant == -1 )
					{
						cachedCostFor_integer_constant = getCostForRule_21243e14(goalState);

						int currentCost = getCostForRule_1af8ed99(goalState);

						if ( ( cachedCostFor_integer_constant > currentCost )  )
							cachedCostFor_integer_constant = currentCost;
					}
					return(cachedCostFor_integer_constant);
				}
				case __numeric_constant_NT:
				{
					return(getCost(__integer_constant_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_135a0702(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 269;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 10;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __integer_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_21243e14(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 27;
					}
					currentCost = getCostForRule_1af8ed99(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 28;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__integer_constant_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 509;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_21243e14( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_1af8ed99( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_135a0702( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LessThanEqualsID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LessThanEqualsID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_13ddd390(goalState);

						int currentCost = getCostForRule_507cb4fe(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_5028f47b(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_d615fc2(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_13ddd390(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 71;
					}
					currentCost = getCostForRule_507cb4fe(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 72;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5028f47b(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 350;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_d615fc2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 351;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_13ddd390( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_507cb4fe( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_5028f47b( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_d615fc2( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LessThanID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LessThanID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_705d4cad(goalState);

						int currentCost = getCostForRule_4533dd1c(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_522f62ed(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_55b7b825(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_705d4cad(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 69;
					}
					currentCost = getCostForRule_4533dd1c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 70;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_522f62ed(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 352;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_55b7b825(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 353;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_705d4cad( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_4533dd1c( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_522f62ed( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_55b7b825( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LogicalAndAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LogicalAndAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_4f15ae1a(goalState);

						int currentCost = getCostForRule_149551d9(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_3d8471ac(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_551a80a9(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_371d916e(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_93815cd(goalState);

						int currentCost = getCostForRule_17af0c57(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_1631c9c3(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_4d7cbc8a(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_4234e95(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_6b0137f2(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4f15ae1a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 159;
					}
					currentCost = getCostForRule_149551d9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 163;
					}
					currentCost = getCostForRule_3d8471ac(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 165;
					}
					currentCost = getCostForRule_551a80a9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 167;
					}
					currentCost = getCostForRule_371d916e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 169;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_93815cd(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 160;
					}
					currentCost = getCostForRule_17af0c57(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 161;
					}
					currentCost = getCostForRule_1631c9c3(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 162;
					}
					currentCost = getCostForRule_4d7cbc8a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 164;
					}
					currentCost = getCostForRule_4234e95(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 166;
					}
					currentCost = getCostForRule_6b0137f2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 168;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_4f15ae1a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_93815cd( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_17af0c57( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1631c9c3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_149551d9( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4d7cbc8a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3d8471ac( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4234e95( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_551a80a9( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_6b0137f2( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_371d916e( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LogicalAndID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LogicalAndID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		private int cachedCostFor_string_constant = -1;
		private int cachedCostFor_constant_value = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_73e68480(goalState);

					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					if ( cachedCostFor_constant_value == -1 )
					{
						cachedCostFor_constant_value = getCostForRule_5b56fe9a(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
					}
					return(cachedCostFor_constant_value);
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_451f4483(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__literal_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_27435575(goalState);

					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __string_constant_NT:
				{
					if ( cachedCostFor_string_constant == -1 )
					{
						cachedCostFor_string_constant = getCostForRule_60c60799(goalState);

					}
					return(cachedCostFor_string_constant);
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_73e68480(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 45;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5b56fe9a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 48;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 86;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 87;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 85;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_451f4483(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 354;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 89;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 9;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_27435575(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 46;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __string_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_60c60799(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 47;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_73e68480( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__boolean_constant_NT)) + ((long)this.getNthChild(0).getCost(__boolean_constant_NT))) ));
		}
		
		private int getCostForRule_27435575( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_60c60799( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_5b56fe9a( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_451f4483( int goalState)
		{

			return(normalizeCost((long)5 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LogicalNotID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_LogicalNotID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_c889735(goalState);

						int currentCost = getCostForRule_330cf17b(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_e59f292(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_5e73c60f(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_160ad3cb(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__literal_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_c889735(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 77;
					}
					currentCost = getCostForRule_330cf17b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 78;
					}
					currentCost = getCostForRule_e59f292(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 79;
					}
					currentCost = getCostForRule_5e73c60f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 80;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_160ad3cb(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 355;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 506;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_c889735( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__boolean_constant_NT))));
		}
		
		private int getCostForRule_330cf17b( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__numeric_constant_NT))));
		}
		
		private int getCostForRule_e59f292( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__string_constant_NT))));
		}
		
		private int getCostForRule_5e73c60f( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__constant_value_NT))));
		}
		
		private int getCostForRule_160ad3cb( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_Op_LogicalOrAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LogicalOrAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_42596f58(goalState);

						int currentCost = getCostForRule_355c8e3(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_43562538(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_3022212(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_aa8ae85(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_27977de3(goalState);

						int currentCost = getCostForRule_559af3cc(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_479a49df(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_8890b2f(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_14ed17b8(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_16eb827a(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_42596f58(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 170;
					}
					currentCost = getCostForRule_355c8e3(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 174;
					}
					currentCost = getCostForRule_43562538(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 176;
					}
					currentCost = getCostForRule_3022212(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 178;
					}
					currentCost = getCostForRule_aa8ae85(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 180;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_27977de3(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 171;
					}
					currentCost = getCostForRule_559af3cc(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 172;
					}
					currentCost = getCostForRule_479a49df(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 173;
					}
					currentCost = getCostForRule_8890b2f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 175;
					}
					currentCost = getCostForRule_14ed17b8(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 177;
					}
					currentCost = getCostForRule_16eb827a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 179;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_42596f58( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_27977de3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_559af3cc( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_479a49df( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_355c8e3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_8890b2f( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_43562538( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_14ed17b8( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_3022212( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_16eb827a( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_aa8ae85( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_LogicalOrID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_LogicalOrID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		private int cachedCostFor_string_constant = -1;
		private int cachedCostFor_constant_value = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_32ae5c9(goalState);

					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					if ( cachedCostFor_constant_value == -1 )
					{
						cachedCostFor_constant_value = getCostForRule_43ba46f0(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
						if ( ( cachedCostFor_constant_value > currentCost )  )
							cachedCostFor_constant_value = currentCost;
					}
					return(cachedCostFor_constant_value);
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_3f96c9e8(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__literal_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_75246432(goalState);

					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __string_constant_NT:
				{
					if ( cachedCostFor_string_constant == -1 )
					{
						cachedCostFor_string_constant = getCostForRule_2174c3f2(goalState);

					}
					return(cachedCostFor_string_constant);
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_32ae5c9(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 49;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_43ba46f0(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 52;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 86;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 87;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 85;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3f96c9e8(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 356;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 89;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__string_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 9;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_75246432(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 50;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __string_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2174c3f2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 51;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_32ae5c9( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__boolean_constant_NT)) + ((long)this.getNthChild(0).getCost(__boolean_constant_NT))) ));
		}
		
		private int getCostForRule_75246432( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_2174c3f2( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_43ba46f0( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_3f96c9e8( int goalState)
		{

			return(normalizeCost((long)5 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_ModuloAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_ModuloAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_30688cea(goalState);

						int currentCost = getCostForRule_3938ca86(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_6f6b3c67(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_6887092b(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1c7cc70d(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_63ef52fe(goalState);

						int currentCost = getCostForRule_5551c2e0(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_54f4730(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_7ff1ac3b(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_66106999(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_30688cea(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 191;
					}
					currentCost = getCostForRule_3938ca86(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 194;
					}
					currentCost = getCostForRule_6f6b3c67(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 196;
					}
					currentCost = getCostForRule_6887092b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 198;
					}
					currentCost = getCostForRule_1c7cc70d(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 200;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_63ef52fe(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 192;
					}
					currentCost = getCostForRule_5551c2e0(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 193;
					}
					currentCost = getCostForRule_54f4730(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 195;
					}
					currentCost = getCostForRule_7ff1ac3b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 197;
					}
					currentCost = getCostForRule_66106999(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 199;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_30688cea( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_63ef52fe( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_5551c2e0( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3938ca86( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_54f4730( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6f6b3c67( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_7ff1ac3b( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_6887092b( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_66106999( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_1c7cc70d( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_ModuloID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_ModuloID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		private int cachedCostFor_double_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __double_constant_NT:
				{
					if ( cachedCostFor_double_constant == -1 )
					{
						cachedCostFor_double_constant = getCostForRule_3d0de179(goalState);

					}
					return(cachedCostFor_double_constant);
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_4204572f(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__double_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_30e6bb20(goalState);

						int currentCost = getCostForRule_555f4004(goalState);

						if ( ( cachedCostFor_numeric_constant > currentCost )  )
							cachedCostFor_numeric_constant = currentCost;
						currentCost = getCost(__double_constant_NT);
						if ( ( cachedCostFor_numeric_constant > currentCost )  )
							cachedCostFor_numeric_constant = currentCost;
					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __double_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3d0de179(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 17;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4204572f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 359;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 89;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__double_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 88;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_30e6bb20(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 18;
					}
					currentCost = getCostForRule_555f4004(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 19;
					}
					currentCost = getCost(__double_constant_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 507;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_3d0de179( int goalState)
		{

			if ( this.getNthChild(1).getArity() == 0 && this.getNthChild(1).getOperator() == LiteralIntegerZeroID )
				return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__numeric_constant_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_30e6bb20( int goalState)
		{

			return(normalizeCost((long)2000 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_555f4004( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_4204572f( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_MultiplyAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_MultiplyAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_70b75ff(goalState);

						int currentCost = getCostForRule_67d6f71e(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_62ec6f7f(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_4d9c4c46(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_11e47c87(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_41da17a2(goalState);

						int currentCost = getCostForRule_40cc1f71(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_6f1d8552(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_5d2fdc72(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_4cd9a772(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_70b75ff(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 201;
					}
					currentCost = getCostForRule_67d6f71e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 204;
					}
					currentCost = getCostForRule_62ec6f7f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 206;
					}
					currentCost = getCostForRule_4d9c4c46(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 208;
					}
					currentCost = getCostForRule_11e47c87(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 210;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_41da17a2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 202;
					}
					currentCost = getCostForRule_40cc1f71(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 203;
					}
					currentCost = getCostForRule_6f1d8552(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 205;
					}
					currentCost = getCostForRule_5d2fdc72(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 207;
					}
					currentCost = getCostForRule_4cd9a772(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 209;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_70b75ff( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_41da17a2( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_40cc1f71( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_67d6f71e( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6f1d8552( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_62ec6f7f( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_5d2fdc72( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_4d9c4c46( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_4cd9a772( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_11e47c87( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_MultiplyID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_MultiplyID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_6c4e0e0f(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_6f7a31c1(goalState);

						int currentCost = getCostForRule_4c15ac10(goalState);

						if ( ( cachedCostFor_numeric_constant > currentCost )  )
							cachedCostFor_numeric_constant = currentCost;
					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6c4e0e0f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 360;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6f7a31c1(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 13;
					}
					currentCost = getCostForRule_4c15ac10(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 14;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_6f7a31c1( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_4c15ac10( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_6c4e0e0f( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_NotEqualID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_NotEqualID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_4d7670d7(goalState);

						int currentCost = getCostForRule_51d42100(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_6f1ee6c2(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_e8ab21d(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_70049bd3(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_2878f2(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4d7670d7(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 61;
					}
					currentCost = getCostForRule_51d42100(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 62;
					}
					currentCost = getCostForRule_6f1ee6c2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 63;
					}
					currentCost = getCostForRule_e8ab21d(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 64;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_70049bd3(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 372;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2878f2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 373;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_4d7670d7( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__boolean_constant_NT)) + ((long)this.getNthChild(0).getCost(__boolean_constant_NT))) ));
		}
		
		private int getCostForRule_51d42100( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_6f1ee6c2( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_e8ab21d( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_70049bd3( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_2878f2( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_PostDecrID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_PostDecrID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_1898a6c3(goalState);

						int currentCost = getCostForRule_4359f597(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1757242c(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_54fb31dc(goalState);

						int currentCost = getCostForRule_9083b3e(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_57192c5(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_1898a6c3(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 391;
					}
					currentCost = getCostForRule_4359f597(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 393;
					}
					currentCost = getCostForRule_1757242c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 395;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_54fb31dc(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 392;
					}
					currentCost = getCostForRule_9083b3e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 394;
					}
					currentCost = getCostForRule_57192c5(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 396;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_1898a6c3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_54fb31dc( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4359f597( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_9083b3e( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1757242c( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
		
		private int getCostForRule_57192c5( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_Op_PostIncrID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_PostIncrID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_2b29a003(goalState);

						int currentCost = getCostForRule_2651016b(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_6e481f54(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_67265fe2(goalState);

						int currentCost = getCostForRule_169c2bd(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_2f9dc1a2(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2b29a003(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 397;
					}
					currentCost = getCostForRule_2651016b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 399;
					}
					currentCost = getCostForRule_6e481f54(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 401;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_67265fe2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 398;
					}
					currentCost = getCostForRule_169c2bd(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 400;
					}
					currentCost = getCostForRule_2f9dc1a2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 402;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2b29a003( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_67265fe2( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2651016b( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_169c2bd( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6e481f54( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
		
		private int getCostForRule_2f9dc1a2( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_Op_PreDecrID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_PreDecrID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_181d9ba(goalState);

						int currentCost = getCostForRule_540d4f27(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1b3e1331(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_5aef5125(goalState);

						int currentCost = getCostForRule_55ac1fcb(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_6be6162e(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_181d9ba(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 403;
					}
					currentCost = getCostForRule_540d4f27(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 405;
					}
					currentCost = getCostForRule_1b3e1331(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 407;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5aef5125(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 404;
					}
					currentCost = getCostForRule_55ac1fcb(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 406;
					}
					currentCost = getCostForRule_6be6162e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 408;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_181d9ba( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_5aef5125( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_540d4f27( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_55ac1fcb( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1b3e1331( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
		
		private int getCostForRule_6be6162e( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_Op_PreIncrID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_PreIncrID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_aa27f8(goalState);

						int currentCost = getCostForRule_20ec28b1(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_158b2920(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_4e870ad9(goalState);

						int currentCost = getCostForRule_1fc36116(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_5eab6bff(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_aa27f8(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 409;
					}
					currentCost = getCostForRule_20ec28b1(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 411;
					}
					currentCost = getCostForRule_158b2920(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 413;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4e870ad9(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 410;
					}
					currentCost = getCostForRule_1fc36116(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 412;
					}
					currentCost = getCostForRule_5eab6bff(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 414;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_aa27f8( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4e870ad9( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__expression_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_20ec28b1( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_1fc36116( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)8 + (long) (((long)factoredPath_1.getCost(__name_NT)) + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_158b2920( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
		
		private int getCostForRule_5eab6bff( int goalState)
		{

			return(normalizeCost((long)7 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_Op_RightShiftAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_RightShiftAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_12a59b23(goalState);

						int currentCost = getCostForRule_64828a6c(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_604d8c3b(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_653cf75e(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_5b7e0459(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_2b5f34b0(goalState);

						int currentCost = getCostForRule_27ff59b4(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_25fbdc12(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_e0c5838(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_5ca417fd(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_12a59b23(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 221;
					}
					currentCost = getCostForRule_64828a6c(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 224;
					}
					currentCost = getCostForRule_604d8c3b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 226;
					}
					currentCost = getCostForRule_653cf75e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 228;
					}
					currentCost = getCostForRule_5b7e0459(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 230;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2b5f34b0(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 222;
					}
					currentCost = getCostForRule_27ff59b4(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 223;
					}
					currentCost = getCostForRule_25fbdc12(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 225;
					}
					currentCost = getCostForRule_e0c5838(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 227;
					}
					currentCost = getCostForRule_5ca417fd(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 229;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_12a59b23( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2b5f34b0( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_27ff59b4( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_64828a6c( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_25fbdc12( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_604d8c3b( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_e0c5838( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_653cf75e( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_5ca417fd( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_5b7e0459( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_RightShiftID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_RightShiftID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_integer_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_14bd724(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __integer_constant_NT:
				{
					if ( cachedCostFor_integer_constant == -1 )
					{
						cachedCostFor_integer_constant = getCostForRule_7a2b9053(goalState);

						int currentCost = getCostForRule_168adab6(goalState);

						if ( ( cachedCostFor_integer_constant > currentCost )  )
							cachedCostFor_integer_constant = currentCost;
					}
					return(cachedCostFor_integer_constant);
				}
				case __numeric_constant_NT:
				{
					return(getCost(__integer_constant_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_14bd724(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 271;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__integer_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 10;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __integer_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_7a2b9053(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 29;
					}
					currentCost = getCostForRule_168adab6(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 30;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__integer_constant_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 509;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_7a2b9053( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_168adab6( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_14bd724( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_StrictEqualID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_StrictEqualID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_6aed2c65(goalState);

						int currentCost = getCostForRule_35c034eb(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_13cf9308(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_5350b4ad(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_505d34a6(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_640e252a(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6aed2c65(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 57;
					}
					currentCost = getCostForRule_35c034eb(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 58;
					}
					currentCost = getCostForRule_13cf9308(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 59;
					}
					currentCost = getCostForRule_5350b4ad(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 60;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_505d34a6(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 440;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_640e252a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 441;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_6aed2c65( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__boolean_constant_NT)) + ((long)this.getNthChild(0).getCost(__boolean_constant_NT))) ));
		}
		
		private int getCostForRule_35c034eb( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_13cf9308( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_5350b4ad( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_505d34a6( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_640e252a( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_StrictNotEqualID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_StrictNotEqualID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_conditionalJump = -1;
		private int cachedCostFor_comparison_expression = -1;
		private int cachedCostFor_boolean_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					if ( cachedCostFor_boolean_constant == -1 )
					{
						cachedCostFor_boolean_constant = getCostForRule_bb6bd70(goalState);

						int currentCost = getCostForRule_5d959577(goalState);

						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_64547267(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
						currentCost = getCostForRule_71e63cb2(goalState);
						if ( ( cachedCostFor_boolean_constant > currentCost )  )
							cachedCostFor_boolean_constant = currentCost;
					}
					return(cachedCostFor_boolean_constant);
				}
				case __boolean_literal_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __comparison_expression_NT:
				{
					if ( cachedCostFor_comparison_expression == -1 )
					{
						cachedCostFor_comparison_expression = getCostForRule_4f0552c3(goalState);

					}
					return(cachedCostFor_comparison_expression);
				}
				case __conditionalJump_NT:
				{
					if ( cachedCostFor_conditionalJump == -1 )
					{
						cachedCostFor_conditionalJump = getCostForRule_3e4a5879(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_conditionalJump > currentCost )  )
							cachedCostFor_conditionalJump = currentCost;
					}
					return(cachedCostFor_conditionalJump);
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__boolean_constant_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __literal_NT:
				{
					return(getCost(__boolean_literal_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __boolean_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_bb6bd70(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 65;
					}
					currentCost = getCostForRule_5d959577(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 66;
					}
					currentCost = getCostForRule_64547267(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 67;
					}
					currentCost = getCostForRule_71e63cb2(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 68;
					}
					return(rule);
				}
				case __boolean_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 92;
					}
					return(rule);
				}
				case __comparison_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_4f0552c3(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 442;
					}
					return(rule);
				}
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3e4a5879(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 443;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 86;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__boolean_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 12;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = getCost(__literal_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 506;
					}
					currentCost = getCost(__comparison_expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 511;
					}
					return(rule);
				}
				case __literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__boolean_literal_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 508;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_bb6bd70( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__boolean_constant_NT)) + ((long)this.getNthChild(0).getCost(__boolean_constant_NT))) ));
		}
		
		private int getCostForRule_5d959577( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_64547267( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__string_constant_NT)) + ((long)this.getNthChild(0).getCost(__string_constant_NT))) ));
		}
		
		private int getCostForRule_71e63cb2( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_4f0552c3( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
		
		private int getCostForRule_3e4a5879( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_SubtractAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_SubtractAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_79cac29d(goalState);

						int currentCost = getCostForRule_398972ba(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_5cffbc02(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_309aae74(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_1feb4cd0(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_6d05f135(goalState);

						int currentCost = getCostForRule_4cbb5f3b(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_2937b1d6(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_6cfff5ec(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_2eb12d1f(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_79cac29d(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 181;
					}
					currentCost = getCostForRule_398972ba(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 184;
					}
					currentCost = getCostForRule_5cffbc02(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 186;
					}
					currentCost = getCostForRule_309aae74(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 188;
					}
					currentCost = getCostForRule_1feb4cd0(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 190;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6d05f135(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 182;
					}
					currentCost = getCostForRule_4cbb5f3b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 183;
					}
					currentCost = getCostForRule_2937b1d6(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 185;
					}
					currentCost = getCostForRule_6cfff5ec(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 187;
					}
					currentCost = getCostForRule_2eb12d1f(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 189;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_79cac29d( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6d05f135( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4cbb5f3b( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_398972ba( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2937b1d6( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_5cffbc02( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_6cfff5ec( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_309aae74( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_2eb12d1f( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_1feb4cd0( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_SubtractID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_SubtractID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_3865fd75(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_2c4842ae(goalState);

						int currentCost = getCostForRule_3f8b925e(goalState);

						if ( ( cachedCostFor_numeric_constant > currentCost )  )
							cachedCostFor_numeric_constant = currentCost;
					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3865fd75(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 477;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2c4842ae(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 39;
					}
					currentCost = getCostForRule_3f8b925e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 40;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2c4842ae( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__numeric_constant_NT))));
		}
		
		private int getCostForRule_3f8b925e( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__constant_value_NT))));
		}
		
		private int getCostForRule_3865fd75( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_Op_SubtractID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_SubtractID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_numeric_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_18759965(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					if ( cachedCostFor_numeric_constant == -1 )
					{
						cachedCostFor_numeric_constant = getCostForRule_fec414b(goalState);

						int currentCost = getCostForRule_615f2f2a(goalState);

						if ( ( cachedCostFor_numeric_constant > currentCost )  )
							cachedCostFor_numeric_constant = currentCost;
					}
					return(cachedCostFor_numeric_constant);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_18759965(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 445;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_fec414b(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 25;
					}
					currentCost = getCostForRule_615f2f2a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 26;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_fec414b( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_615f2f2a( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_18759965( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_TypeOfID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_TypeOfID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_225483d(goalState);

						int currentCost = getCostForRule_362f57ad(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_225483d(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 474;
					}
					currentCost = getCostForRule_362f57ad(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 475;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_225483d( int goalState)
		{

			return(normalizeCost((long)10 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
		
		private int getCostForRule_362f57ad( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_Op_UnsignedRightShift_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_UnsignedRightShift_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_uint_constant = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__numeric_constant_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_5ba4ae3a(goalState);

						int currentCost = normalizeCost((long)1 + (long)getCost(__uint_constant_NT));

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCost(__constant_value_NT);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __numeric_constant_NT:
				{
					return(getCost(__uint_constant_NT));
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __uint_constant_NT:
				{
					if ( cachedCostFor_uint_constant == -1 )
					{
						cachedCostFor_uint_constant = getCostForRule_439afc1b(goalState);

						int currentCost = getCostForRule_6b5630f5(goalState);

						if ( ( cachedCostFor_uint_constant > currentCost )  )
							cachedCostFor_uint_constant = currentCost;
					}
					return(cachedCostFor_uint_constant);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__numeric_constant_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 87;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5ba4ae3a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 272;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__uint_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 11;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 90;
					}
					currentCost = normalizeCost((long)5 + (long)getCost(__numeric_constant_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 89;
					}
					return(rule);
				}
				case __numeric_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__uint_constant_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 500;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __uint_constant_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_439afc1b(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 31;
					}
					currentCost = getCostForRule_6b5630f5(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 32;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_439afc1b( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__numeric_constant_NT)) + ((long)this.getNthChild(0).getCost(__numeric_constant_NT))) ));
		}
		
		private int getCostForRule_6b5630f5( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__constant_value_NT)) + ((long)this.getNthChild(0).getCost(__constant_value_NT))) ));
		}
		
		private int getCostForRule_5ba4ae3a( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_UnsignedRightShiftAssignID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_Op_UnsignedRightShiftAssignID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_2788800d(goalState);

						int currentCost = getCostForRule_59233fb8(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_4dcd7aa3(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_17463a77(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
						currentCost = getCostForRule_742d587a(goalState);
						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = getCostForRule_343367b8(goalState);

						int currentCost = getCostForRule_120d1bff(goalState);

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_34be0e4b(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_2ace6e2e(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = getCostForRule_56fd268(goalState);
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
						currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2788800d(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 255;
					}
					currentCost = getCostForRule_59233fb8(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 258;
					}
					currentCost = getCostForRule_4dcd7aa3(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 260;
					}
					currentCost = getCostForRule_17463a77(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 262;
					}
					currentCost = getCostForRule_742d587a(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 264;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_343367b8(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 256;
					}
					currentCost = getCostForRule_120d1bff(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 257;
					}
					currentCost = getCostForRule_34be0e4b(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 259;
					}
					currentCost = getCostForRule_2ace6e2e(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 261;
					}
					currentCost = getCostForRule_56fd268(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 263;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2788800d( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_343367b8( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == ArrayIndexExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__expression_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_120d1bff( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_59233fb8( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == Op_DescendantsID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_34be0e4b( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_4dcd7aa3( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == MemberAccessExpressionID )
				return(normalizeCost((long)4 + (long) ( (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)factoredPath_1.getCost(__name_NT)))  + ((long)factoredPath_0.getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_2ace6e2e( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_17463a77( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_56fd268( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
		
		private int getCostForRule_742d587a( int goalState)
		{

			return(normalizeCost((long)4 + (long) (((long)this.getNthChild(1).getCost(__expression_NT)) + ((long)this.getNthChild(0).getCost(__runtime_name_expression_NT))) ));
		}
	}

	class JBurgAnnotation_Op_VoidID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_Op_VoidID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(2);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __literal_NT:
				{
					return(1);
				}
				case __object_literal_NT:
				{
					return(1);
				}
				case __required_constant_value_NT:
				{
					return(268435457);
				}
				case __statement_NT:
				{
					return(2);
				}
				case __type_param_expression_NT:
				{
					return(1);
				}
				case __void_expression_NT:
				{
					return(2);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(506);
				}
				case __literal_NT:
				{
					return(503);
				}
				case __object_literal_NT:
				{
					return(486);
				}
				case __required_constant_value_NT:
				{
					return(81);
				}
				case __statement_NT:
				{
					return(496);
				}
				case __type_param_expression_NT:
				{
					return(502);
				}
				case __void_expression_NT:
				{
					return(1);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_Op_VoidID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_Op_VoidID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		private int cachedCostFor_constant_value = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					if ( cachedCostFor_constant_value == -1 )
					{
						cachedCostFor_constant_value = getCostForRule_7fc7e3d9(goalState);

					}
					return(cachedCostFor_constant_value);
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_3bcf763c(goalState);

						int currentCost = getCost(__constant_value_NT);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = getCost(__constant_value_NT);

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_7fc7e3d9(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 487;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3bcf763c(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 493;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 90;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 510;
					}
					currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_7fc7e3d9( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__constant_value_NT))));
		}
		
		private int getCostForRule_3bcf763c( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_QualifiedNamespaceExpressionID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_QualifiedNamespaceExpressionID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_name = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __name_NT:
				{
					if ( cachedCostFor_name == -1 )
					{
						cachedCostFor_name = getCostForRule_62a9c075(goalState);

					}
					return(cachedCostFor_name);
				}
				case __new_type_name_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					int currentCost = getCost(__name_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(getCost(__type_name_NT));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 7;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 90;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 93;
					}
					return(rule);
				}
				case __name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_62a9c075(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 425;
					}
					return(rule);
				}
				case __new_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 5;
					}
					currentCost = getCost(__name_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 501;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__type_name_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 498;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 4;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 6;
					}
					currentCost = getCost(__expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
		
		private int getCostForRule_62a9c075( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__dottedNamePart_NT)) + ((long)this.getNthChild(0).getCost(__dottedNamePart_NT))) ));
		}
	}

	class JBurgAnnotation_ReturnStatementID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_ReturnStatementID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(1);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(431);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_ReturnStatementID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_ReturnStatementID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_192ea2da(goalState);

						int currentCost = getCostForRule_59b7530d(goalState);

						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_1909b091(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_358f61ad(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_192ea2da(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 429;
					}
					currentCost = getCostForRule_59b7530d(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 430;
					}
					currentCost = getCostForRule_1909b091(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 432;
					}
					currentCost = getCostForRule_358f61ad(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 433;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_192ea2da( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == NilID )
				return(1);
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_59b7530d( int goalState)
		{

			return(normalizeCost((long)2 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
		
		private int getCostForRule_1909b091( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);

			if ( this.getNthChild(0).getArity() == 1 && this.getNthChild(0).getOperator() == Op_VoidID )
				return(normalizeCost((long)1 + (long)((long)factoredPath_0.getCost(__expression_NT))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_358f61ad( int goalState)
		{

			return(normalizeCost((long)2000 + (long)((long)this.getNthChild(0).getCost(__void_expression_NT))));
		}
	}

	class JBurgAnnotation_RuntimeNameExpressionID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_RuntimeNameExpressionID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_59db3db4(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_59db3db4(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 435;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_59db3db4( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_SetterID_3 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		JBurgAnnotation_SetterID_3(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_function = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					if ( cachedCostFor_function == -1 )
					{
						cachedCostFor_function = getCostForRule_3a1732b9(goalState);

					}
					return(cachedCostFor_function);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3a1732b9(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 473;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(3);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_3a1732b9( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) (((long)this.getNthChild(2).getCost(__statement_NT)) + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_SetterID_4 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		private JBurgAnnotation subtree3;
		JBurgAnnotation_SetterID_4(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_function = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					if ( cachedCostFor_function == -1 )
					{
						cachedCostFor_function = getCostForRule_6e4e8052(goalState);

					}
					return(cachedCostFor_function);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __function_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6e4e8052(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 464;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(4);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				case 3:
					return subtree3;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else if ( subtree3 == null )
				subtree3 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_6e4e8052( int goalState)
		{

			if ( this.getNthChild(0).getArity() == 0 && this.getNthChild(0).getOperator() == IdentifierID )
				return(normalizeCost((long)0 + (long) ( (((long)this.getNthChild(3).getCost(__statement_NT)) + ((long)this.getNthChild(2).getCost(__return_type_name_NT)))  + ((long)this.getNthChild(1).getCost(__parameterList_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_SwitchID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_SwitchID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_2002163f(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2002163f(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 452;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_2002163f( int goalState)
		{

			if ( this.getArity() == 2 && this.getNthChild(1).getOperator() == BlockID )
				return(normalizeCost((long)0 + (long) (((long)getNaryCost(this.getNthChild(1), __conditionalElements_NT, 0)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_TernaryExpressionID_3 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private JBurgAnnotation subtree2;
		JBurgAnnotation_TernaryExpressionID_3(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_2034b916(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2034b916(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 453;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(3);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				case 2:
					return subtree2;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else if ( subtree2 == null )
				subtree2 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2034b916( int goalState)
		{

			return(normalizeCost((long)1 + (long) ( (((long)this.getNthChild(2).getCost(__expression_NT)) + ((long)this.getNthChild(1).getCost(__expression_NT)))  + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_ThrowsStatementID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_ThrowsStatementID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_2335c553(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2335c553(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 454;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2335c553( int goalState)
		{

			return(normalizeCost((long)1 + (long)((long)this.getNthChild(0).getCost(__expression_NT))));
		}
	}

	class JBurgAnnotation_TryID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_TryID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_39e38d77(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_39e38d77(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 95;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_39e38d77( int goalState)
		{

			return(normalizeCost((long)ERROR_TRAP + (long)((long)this.getNthChild(0).getCost(__statement_NT))));
		}
	}

	class JBurgAnnotation_TryID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_TryID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_960d79a(goalState);

						int currentCost = getCostForRule_c1923a9(goalState);

						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
						currentCost = getCostForRule_10b7024(goalState);
						if ( ( cachedCostFor_statement > currentCost )  )
							cachedCostFor_statement = currentCost;
					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_960d79a(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 455;
					}
					currentCost = getCostForRule_c1923a9(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 456;
					}
					currentCost = getCostForRule_10b7024(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 457;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_960d79a( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);

			if ( (this.getArity() >= 3) && this.getNthChild(1).getArity() == 1 && this.getNthChild(1).getOperator() == FinallyID )
				return(normalizeCost((long)0 + (long) ( (((long)getNaryCost(this, __catch_block_NT, 2)) + ((long)factoredPath_0.getCost(__finally_clause_NT)))  + ((long)this.getNthChild(0).getCost(__statement_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_c1923a9( int goalState)
		{

			if ( (this.getArity() >= 2) )
				return(normalizeCost((long)0 + (long) (((long)getNaryCost(this, __catch_block_NT, 1)) + ((long)this.getNthChild(0).getCost(__statement_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_10b7024( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(1).getArity() > 0? this.getNthChild(1).getNthChild(0): errorAnnotation);

			if ( this.getArity() == 2 && this.getNthChild(1).getArity() == 1 && this.getNthChild(1).getOperator() == FinallyID )
				return(normalizeCost((long)0 + (long) (((long)factoredPath_0.getCost(__finally_clause_NT)) + ((long)this.getNthChild(0).getCost(__statement_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_TypedExpressionID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_TypedExpressionID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_type_name = -1;
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_24a6dd47(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __new_type_name_NT:
				{
					return(normalizeCost((long)20 + (long)getCost(__type_name_NT)));
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __return_type_name_NT:
				{
					return(getCost(__type_name_NT));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					if ( cachedCostFor_type_name == -1 )
					{
						cachedCostFor_type_name = getCostForRule_2b75124e(goalState);

					}
					return(cachedCostFor_type_name);
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_24a6dd47(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 389;
					}
					return(rule);
				}
				case __new_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 5;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__type_name_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 498;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_2b75124e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 388;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_2b75124e( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__type_name_NT)) + ((long)this.getNthChild(0).getCost(__name_NT))) ));
		}
		
		private int getCostForRule_24a6dd47( int goalState)
		{

			return(normalizeCost((long)1 + (long) (((long)this.getNthChild(1).getCost(__type_param_expression_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_UseID_1 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		JBurgAnnotation_UseID_1(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_6e3468e2(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_6e3468e2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 481;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_6e3468e2( int goalState)
		{

			return(normalizeCost((long)0 + (long)((long)this.getNthChild(0).getCost(__name_NT))));
		}
	}

	class JBurgAnnotation_VariableExpressionID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_VariableExpressionID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_name = -1;
		private int cachedCostFor_void_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __constant_value_NT:
				{
					return(normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT)));
				}
				case __expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __name_NT:
				{
					if ( cachedCostFor_name == -1 )
					{
						cachedCostFor_name = getCostForRule_3464af50(goalState);

					}
					return(cachedCostFor_name);
				}
				case __new_type_name_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					int currentCost = getCost(__name_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __required_constant_value_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					int currentCost = getCost(__constant_value_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __return_type_name_NT:
				{
					return(getCost(__type_name_NT));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_name_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__name_NT)));
				}
				case __type_param_expression_NT:
				{
					int bestCost;

					bestCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
						bestCost = currentCost;
					return(bestCost);
				}
				case __void_expression_NT:
				{
					if ( cachedCostFor_void_expression == -1 )
					{
						cachedCostFor_void_expression = normalizeCost((long)0 + (long)((long)getNaryCost(this, __var_decl_NT, 0)));

						int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

						if ( ( cachedCostFor_void_expression > currentCost )  )
							cachedCostFor_void_expression = currentCost;
					}
					return(cachedCostFor_void_expression);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)getCostFunctionResult_4411a827() + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 82;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)2000 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 7;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 90;
					}
					return(rule);
				}
				case __mxml_data_binding_setter_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 93;
					}
					return(rule);
				}
				case __name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_3464af50(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 468;
					}
					return(rule);
				}
				case __new_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)20 + (long)getCost(__type_name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 5;
					}
					currentCost = getCost(__name_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 501;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 81;
					}
					currentCost = getCost(__constant_value_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 510;
					}
					return(rule);
				}
				case __return_type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__type_name_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 498;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_name_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 4;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__name_NT));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 6;
					}
					currentCost = getCost(__expression_NT);
					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)0 + (long)((long)getNaryCost(this, __var_decl_NT, 0)));

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 482;
					}
					currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));
					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		private int cachedCostFunctionResult_cde68443 = -1;
		
		private int getCostFunctionResult_4411a827( )
		{
			if ( cachedCostFunctionResult_cde68443 == -1 )
				cachedCostFunctionResult_cde68443 = isCompileTimeConstant(m_node);
			return(cachedCostFunctionResult_cde68443);
		}
		
		private int getCostForRule_3464af50( int goalState)
		{
			JBurgAnnotation factoredPath_0 = (this.getNthChild(0).getArity() > 0? this.getNthChild(0).getNthChild(0): errorAnnotation);
			JBurgAnnotation factoredPath_1 = (this.getNthChild(0).getArity() > 1? this.getNthChild(0).getNthChild(1): errorAnnotation);

			if ( this.getArity() == 1 && this.getNthChild(0).getArity() == 2 && this.getNthChild(0).getOperator() == VariableID )
				return(normalizeCost((long)0 + (long) (((long)factoredPath_1.getCost(__type_name_NT)) + ((long)factoredPath_0.getCost(__decl_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_VariableID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_VariableID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_var_decl = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					return(getCost(__var_decl_NT));
				}
				case __var_decl_NT:
				{
					if ( cachedCostFor_var_decl == -1 )
					{
						cachedCostFor_var_decl = getCostForRule_26ba007e(goalState);

						int currentCost = getCostForRule_255e9185(goalState);

						if ( ( cachedCostFor_var_decl > currentCost )  )
							cachedCostFor_var_decl = currentCost;
						currentCost = getCostForRule_68608eb4(goalState);
						if ( ( cachedCostFor_var_decl > currentCost )  )
							cachedCostFor_var_decl = currentCost;
					}
					return(cachedCostFor_var_decl);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__var_decl_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 504;
					}
					return(rule);
				}
				case __var_decl_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_26ba007e(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 465;
					}
					currentCost = getCostForRule_255e9185(goalState);
					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 466;
					}
					currentCost = getCostForRule_68608eb4(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 467;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_26ba007e( int goalState)
		{

			if ( (this.getArity() >= 2) )
				return(normalizeCost((long)0 + (long) ( (((long)getNaryCost(this, __var_decl_NT, 2)) + ((long)this.getNthChild(1).getCost(__type_name_NT)))  + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_255e9185( int goalState)
		{

			if ( (this.getArity() >= 3) )
				return(normalizeCost((long)0 + (long) ( ( (((long)getNaryCost(this, __var_decl_NT, 3)) + ((long)this.getNthChild(2).getCost(__constant_value_NT)))  + ((long)this.getNthChild(1).getCost(__type_name_NT)))  + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_68608eb4( int goalState)
		{

			if ( (this.getArity() >= 3) )
				return(normalizeCost((long)0 + (long) ( ( (((long)getNaryCost(this, __var_decl_NT, 3)) + ((long)this.getNthChild(2).getCost(__expression_NT)))  + ((long)this.getNthChild(1).getCost(__type_name_NT)))  + ((long)this.getNthChild(0).getCost(__decl_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_VectorLiteralID_2_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_VectorLiteralID_2_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_vector_literal = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __vector_literal_NT:
				{
					if ( cachedCostFor_vector_literal == -1 )
					{
						cachedCostFor_vector_literal = getCostForRule_796fa2c7(goalState);

					}
					return(cachedCostFor_vector_literal);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __vector_literal_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_796fa2c7(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 483;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					return narySubtrees.get(index - 2);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_796fa2c7( int goalState)
		{

			if ( this.getArity() == 2 && this.getNthChild(1).getOperator() == ContainerID )
				return(normalizeCost((long)1 + (long) (((long)getNaryCost(this.getNthChild(1), __expression_NT, 0)) + ((long)this.getNthChild(0).getCost(__type_name_NT))) ));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_VoidID_0 extends JBurgSpecializedAnnotation
	{
		JBurgAnnotation_VoidID_0(IASNode node)
		{
			super(node);
		}
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(2);
				}
				case __expression_NT:
				{
					return(1);
				}
				case __new_type_name_NT:
				{
					return(20);
				}
				case __required_constant_value_NT:
				{
					return(268435457);
				}
				case __return_type_name_NT:
				{
					return(0);
				}
				case __statement_NT:
				{
					return(2);
				}
				case __type_name_NT:
				{
					return(0);
				}
				case __type_param_expression_NT:
				{
					return(1);
				}
				case __void_expression_NT:
				{
					return(2);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(3);
				}
				case __expression_NT:
				{
					return(492);
				}
				case __new_type_name_NT:
				{
					return(5);
				}
				case __required_constant_value_NT:
				{
					return(81);
				}
				case __return_type_name_NT:
				{
					return(488);
				}
				case __statement_NT:
				{
					return(496);
				}
				case __type_name_NT:
				{
					return(491);
				}
				case __type_param_expression_NT:
				{
					return(502);
				}
				case __void_expression_NT:
				{
					return(1);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(0);
		}
	}

	class JBurgAnnotation_WhileLoopID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_WhileLoopID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_fa0f464(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_fa0f464(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 494;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_fa0f464( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_WithID_2 extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private JBurgAnnotation subtree1;
		JBurgAnnotation_WithID_2(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_statement = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					if ( cachedCostFor_statement == -1 )
					{
						cachedCostFor_statement = getCostForRule_5e238eac(goalState);

					}
					return(cachedCostFor_statement);
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_5e238eac(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 495;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(2);
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				case 1:
					return subtree1;
				default:
				{
					throw new IllegalStateException("Invalid index " + index);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else if ( subtree1 == null )
				subtree1 = child;
			else
				throw new IllegalStateException("too many children");
		}
		
		private int getCostForRule_5e238eac( int goalState)
		{

			return(normalizeCost((long)0 + (long) (((long)this.getNthChild(1).getCost(__statement_NT)) + ((long)this.getNthChild(0).getCost(__expression_NT))) ));
		}
	}

	class JBurgAnnotation_XMLContentID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_XMLContentID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_32daaef2(goalState);

					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_32daaef2(goalState);

					if ( ( bestCost > currentCost )  )
					{
						rule = 100;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_32daaef2( int goalState)
		{

			if ( this.getArity() == 1 && (this.getNthChild(0).getArity() >= 1) && this.getNthChild(0).getOperator() == ContainerID )
				return(normalizeCost((long)1 + (long)((long)getNaryCost(this.getNthChild(0), __expression_NT, 0))));
			else
				return(Integer.MAX_VALUE);
		}
	}

	class JBurgAnnotation_XMLListContentID_1_n extends JBurgSpecializedAnnotation
	{
		private JBurgAnnotation subtree0;
		private java.util.Vector narySubtrees = new java.util.Vector();
		JBurgAnnotation_XMLListContentID_1_n(IASNode node)
		{
			super(node);
		}
		private int cachedCostFor_expression = -1;
		
		public int getCost( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
				case __expression_NT:
				{
					if ( cachedCostFor_expression == -1 )
					{
						cachedCostFor_expression = getCostForRule_36274bf4(goalState);

						int currentCost = getCostForRule_3eac8a80(goalState);

						if ( ( cachedCostFor_expression > currentCost )  )
							cachedCostFor_expression = currentCost;
					}
					return(cachedCostFor_expression);
				}
				case __required_constant_value_NT:
				{
					return(normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT)));
				}
				case __statement_NT:
				{
					return(getCost(__void_expression_NT));
				}
				case __type_param_expression_NT:
				{
					return(getCost(__expression_NT));
				}
				case __void_expression_NT:
				{
					return(normalizeCost((long)1 + (long)getCost(__expression_NT)));
				}
			}
			return(Integer.MAX_VALUE);
		}
		
		public int getRule( int goalState)
		{
			switch( goalState )
			{
				case __conditionalJump_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 3;
					}
					return(rule);
				}
				case __expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCostForRule_36274bf4(goalState);

					if ( ( bestCost > currentCost )  )
					{
						bestCost = currentCost;
						rule = 101;
					}
					currentCost = getCostForRule_3eac8a80(goalState);
					if ( ( bestCost > currentCost )  )
					{
						rule = 102;
					}
					return(rule);
				}
				case __required_constant_value_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)ERROR_TRAP + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 81;
					}
					return(rule);
				}
				case __statement_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__void_expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 496;
					}
					return(rule);
				}
				case __type_param_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = getCost(__expression_NT);

					if ( ( bestCost > currentCost )  )
					{
						rule = 502;
					}
					return(rule);
				}
				case __void_expression_NT:
				{
					int rule = -1;

					int bestCost = Integer.MAX_VALUE;

					int currentCost = normalizeCost((long)1 + (long)getCost(__expression_NT));

					if ( ( bestCost > currentCost )  )
					{
						rule = 1;
					}
					return(rule);
				}
			}
			return(-1);
		}
		
		public int getArity( )
		{
			return(1 + narySubtrees.size());
		}
		
		public JBurgAnnotation getNthChild( int index)
		{
			switch( index )
			{
				case 0:
					return subtree0;
				default:
				{
					return narySubtrees.get(index - 1);
				}
			}
		}
		
		public void addChild( JBurgAnnotation child)
		{
			if ( subtree0 == null )
				subtree0 = child;
			else
				narySubtrees.add(child);
		}
		
		private int getCostForRule_36274bf4( int goalState)
		{

			if ( this.getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID )
				return(normalizeCost((long)2 + (long)((long)getNaryCost(this.getNthChild(0), __expression_NT, 0))));
			else
				return(Integer.MAX_VALUE);
		}
		
		private int getCostForRule_3eac8a80( int goalState)
		{

			if ( this.getArity() == 1 && this.getNthChild(0).getOperator() == ContainerID )
				return(normalizeCost((long)1 + (long)((long)getNaryCost(this.getNthChild(0), __e4x_literal_NT, 0))));
			else
				return(Integer.MAX_VALUE);
		}
	}
	
	public JBurgAnnotation getJBurgAnnotation( IASNode node)
	{
		switch( node.getNodeID() )
		{
			case AnonymousFunctionID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_AnonymousFunctionID_1(node));
				break;
			}
			case ArgumentID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_ArgumentID_2(node));
				if ( SemanticUtils.getChildCount(node) == 3 )
					return(new JBurgAnnotation_ArgumentID_3(node));
				break;
			}
			case ArgumentRestID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_ArgumentRestID_2(node));
				break;
			}
			case ArrayIndexExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_ArrayIndexExpressionID_2(node));
				break;
			}
			case ArrayLiteralID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_ArrayLiteralID_1_n(node));
				break;
			}
			case BindableVariableID:
			{
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_BindableVariableID_2_n(node));
				break;
			}
			case BlockID:
			{
				if ( SemanticUtils.getChildCount(node) >= 0 )
					return(new JBurgAnnotation_BlockID_0_n(node));
				break;
			}
			case BreakID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_BreakID_0(node));
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_BreakID_1(node));
				break;
			}
			case CatchID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_CatchID_2(node));
				break;
			}
			case ConditionalID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_ConditionalID_1_n(node));
				break;
			}
			case ConfigBlockID:
			{
				if ( SemanticUtils.getChildCount(node) >= 0 )
					return(new JBurgAnnotation_ConfigBlockID_0_n(node));
				break;
			}
			case ContainerID:
			{
				if ( SemanticUtils.getChildCount(node) >= 0 )
					return(new JBurgAnnotation_ContainerID_0_n(node));
				break;
			}
			case ContinueID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_ContinueID_0(node));
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_ContinueID_1(node));
				break;
			}
			case DefaultID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_DefaultID_1_n(node));
				break;
			}
			case DefaultXMLStatementID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_DefaultXMLStatementID_1(node));
				break;
			}
			case DoWhileLoopID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_DoWhileLoopID_2(node));
				break;
			}
			case E4XFilterID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_E4XFilterID_2(node));
				break;
			}
			case ElseID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_ElseID_1(node));
				break;
			}
			case EmbedID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_EmbedID_0(node));
				break;
			}
			case ForEachLoopID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_ForEachLoopID_2(node));
				break;
			}
			case ForLoopID:
			{
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_ForLoopID_2_n(node));
				break;
			}
			case FullNameID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_FullNameID_2(node));
				break;
			}
			case FunctionCallID:
			{
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_FunctionCallID_2_n(node));
				break;
			}
			case FunctionID:
			{
				if ( SemanticUtils.getChildCount(node) == 3 )
					return(new JBurgAnnotation_FunctionID_3(node));
				if ( SemanticUtils.getChildCount(node) == 4 )
					return(new JBurgAnnotation_FunctionID_4(node));
				break;
			}
			case FunctionObjectID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_FunctionObjectID_1(node));
				break;
			}
			case GetterID:
			{
				if ( SemanticUtils.getChildCount(node) == 3 )
					return(new JBurgAnnotation_GetterID_3(node));
				if ( SemanticUtils.getChildCount(node) == 4 )
					return(new JBurgAnnotation_GetterID_4(node));
				break;
			}
			case GotoID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_GotoID_1(node));
				break;
			}
			case IdentifierID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_IdentifierID_0(node));
				break;
			}
			case IfStatementID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_IfStatementID_1_n(node));
				break;
			}
			case ImportID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_ImportID_1(node));
				break;
			}
			case InstructionListID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_InstructionListID_0(node));
				break;
			}
			case LabledStatementID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_LabledStatementID_2(node));
				break;
			}
			case LiteralBooleanID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralBooleanID_0(node));
				break;
			}
			case LiteralDoubleID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralDoubleID_0(node));
				break;
			}
			case LiteralIntegerID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralIntegerID_0(node));
				break;
			}
			case LiteralIntegerZeroID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralIntegerZeroID_0(node));
				break;
			}
			case LiteralNullID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralNullID_0(node));
				break;
			}
			case LiteralNumberID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralNumberID_0(node));
				break;
			}
			case LiteralObjectID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralObjectID_0(node));
				break;
			}
			case LiteralRegexID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralRegexID_0(node));
				break;
			}
			case LiteralStringID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralStringID_0(node));
				break;
			}
			case LiteralUintID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralUintID_0(node));
				break;
			}
			case LiteralXMLID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_LiteralXMLID_0(node));
				break;
			}
			case MXMLEventSpecifierID:
			{
				if ( SemanticUtils.getChildCount(node) >= 0 )
					return(new JBurgAnnotation_MXMLEventSpecifierID_0_n(node));
				break;
			}
			case MemberAccessExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_MemberAccessExpressionID_2(node));
				break;
			}
			case NamespaceAccessExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_NamespaceAccessExpressionID_2(node));
				break;
			}
			case NamespaceID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_NamespaceID_1(node));
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_NamespaceID_2(node));
				break;
			}
			case NamespaceIdentifierID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_NamespaceIdentifierID_0(node));
				break;
			}
			case NilID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_NilID_0(node));
				break;
			}
			case NonResolvingIdentifierID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_NonResolvingIdentifierID_0(node));
				break;
			}
			case ObjectLiteralExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_ObjectLiteralExpressionID_1_n(node));
				break;
			}
			case ObjectLiteralValuePairID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_ObjectLiteralValuePairID_2(node));
				break;
			}
			case Op_AddAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_AddAssignID_2(node));
				break;
			}
			case Op_AddID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_AddID_1(node));
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_AddID_2(node));
				break;
			}
			case Op_AsID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_AsID_2(node));
				break;
			}
			case Op_AssignId:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_AssignId_2(node));
				break;
			}
			case Op_AtID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_AtID_1(node));
				break;
			}
			case Op_BitwiseAndAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_BitwiseAndAssignID_2(node));
				break;
			}
			case Op_BitwiseAndID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_BitwiseAndID_2(node));
				break;
			}
			case Op_BitwiseNotID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_BitwiseNotID_1(node));
				break;
			}
			case Op_BitwiseOrAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_BitwiseOrAssignID_2(node));
				break;
			}
			case Op_BitwiseOrID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_BitwiseOrID_2(node));
				break;
			}
			case Op_BitwiseXorAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_BitwiseXorAssignID_2(node));
				break;
			}
			case Op_BitwiseXorID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_BitwiseXorID_2(node));
				break;
			}
			case Op_CommaID:
			{
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_Op_CommaID_2_n(node));
				break;
			}
			case Op_DeleteID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_DeleteID_1(node));
				break;
			}
			case Op_DescendantsID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_DescendantsID_2(node));
				break;
			}
			case Op_DivideAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_DivideAssignID_2(node));
				break;
			}
			case Op_DivideID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_DivideID_2(node));
				break;
			}
			case Op_EqualID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_EqualID_2(node));
				break;
			}
			case Op_GreaterThanEqualsID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_GreaterThanEqualsID_2(node));
				break;
			}
			case Op_GreaterThanID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_GreaterThanID_2(node));
				break;
			}
			case Op_InID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_InID_2(node));
				break;
			}
			case Op_InstanceOfID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_InstanceOfID_2(node));
				break;
			}
			case Op_IsID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_IsID_2(node));
				break;
			}
			case Op_LeftShiftAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LeftShiftAssignID_2(node));
				break;
			}
			case Op_LeftShiftID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LeftShiftID_2(node));
				break;
			}
			case Op_LessThanEqualsID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LessThanEqualsID_2(node));
				break;
			}
			case Op_LessThanID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LessThanID_2(node));
				break;
			}
			case Op_LogicalAndAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LogicalAndAssignID_2(node));
				break;
			}
			case Op_LogicalAndID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LogicalAndID_2(node));
				break;
			}
			case Op_LogicalNotID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_LogicalNotID_1(node));
				break;
			}
			case Op_LogicalOrAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LogicalOrAssignID_2(node));
				break;
			}
			case Op_LogicalOrID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_LogicalOrID_2(node));
				break;
			}
			case Op_ModuloAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_ModuloAssignID_2(node));
				break;
			}
			case Op_ModuloID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_ModuloID_2(node));
				break;
			}
			case Op_MultiplyAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_MultiplyAssignID_2(node));
				break;
			}
			case Op_MultiplyID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_MultiplyID_2(node));
				break;
			}
			case Op_NotEqualID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_NotEqualID_2(node));
				break;
			}
			case Op_PostDecrID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_PostDecrID_1(node));
				break;
			}
			case Op_PostIncrID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_PostIncrID_1(node));
				break;
			}
			case Op_PreDecrID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_PreDecrID_1(node));
				break;
			}
			case Op_PreIncrID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_PreIncrID_1(node));
				break;
			}
			case Op_RightShiftAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_RightShiftAssignID_2(node));
				break;
			}
			case Op_RightShiftID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_RightShiftID_2(node));
				break;
			}
			case Op_StrictEqualID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_StrictEqualID_2(node));
				break;
			}
			case Op_StrictNotEqualID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_StrictNotEqualID_2(node));
				break;
			}
			case Op_SubtractAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_SubtractAssignID_2(node));
				break;
			}
			case Op_SubtractID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_SubtractID_1(node));
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_SubtractID_2(node));
				break;
			}
			case Op_TypeOfID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_TypeOfID_1(node));
				break;
			}
			case Op_UnsignedRightShift:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_UnsignedRightShift_2(node));
				break;
			}
			case Op_UnsignedRightShiftAssignID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_Op_UnsignedRightShiftAssignID_2(node));
				break;
			}
			case Op_VoidID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_Op_VoidID_0(node));
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_Op_VoidID_1(node));
				break;
			}
			case QualifiedNamespaceExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_QualifiedNamespaceExpressionID_2(node));
				break;
			}
			case ReturnStatementID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_ReturnStatementID_0(node));
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_ReturnStatementID_1(node));
				break;
			}
			case RuntimeNameExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_RuntimeNameExpressionID_1(node));
				break;
			}
			case SetterID:
			{
				if ( SemanticUtils.getChildCount(node) == 3 )
					return(new JBurgAnnotation_SetterID_3(node));
				if ( SemanticUtils.getChildCount(node) == 4 )
					return(new JBurgAnnotation_SetterID_4(node));
				break;
			}
			case SwitchID:
			{
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_SwitchID_2_n(node));
				break;
			}
			case TernaryExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) == 3 )
					return(new JBurgAnnotation_TernaryExpressionID_3(node));
				break;
			}
			case ThrowsStatementID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_ThrowsStatementID_1(node));
				break;
			}
			case TryID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_TryID_1(node));
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_TryID_2_n(node));
				break;
			}
			case TypedExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_TypedExpressionID_2(node));
				break;
			}
			case UseID:
			{
				if ( SemanticUtils.getChildCount(node) == 1 )
					return(new JBurgAnnotation_UseID_1(node));
				break;
			}
			case VariableExpressionID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_VariableExpressionID_1_n(node));
				break;
			}
			case VariableID:
			{
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_VariableID_2_n(node));
				break;
			}
			case VectorLiteralID:
			{
				if ( SemanticUtils.getChildCount(node) >= 2 )
					return(new JBurgAnnotation_VectorLiteralID_2_n(node));
				break;
			}
			case VoidID:
			{
				if ( SemanticUtils.getChildCount(node) == 0 )
					return(new JBurgAnnotation_VoidID_0(node));
				break;
			}
			case WhileLoopID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_WhileLoopID_2(node));
				break;
			}
			case WithID:
			{
				if ( SemanticUtils.getChildCount(node) == 2 )
					return(new JBurgAnnotation_WithID_2(node));
				break;
			}
			case XMLContentID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_XMLContentID_1_n(node));
				break;
			}
			case XMLListContentID:
			{
				if ( SemanticUtils.getChildCount(node) >= 1 )
					return(new JBurgAnnotation_XMLListContentID_1_n(node));
				break;
			}
		}
		return new JBurgAnnotationGeneral(node, nStates+1);
	}
	
	public void reduce( JBurgAnnotation p, int goalState) throws java.lang.Exception
	{
		reduceAntecedent(p,goalState);
		/* Release the annotation's data. */
		p.release();
	}
	
	public void reduceAntecedent( JBurgAnnotation p, int goalState) throws java.lang.Exception
	{int iRule = -1;
		if ( ( goalState > 0 )  )
		{iRule = p.getRule(goalState);
		}
		else
		{
			/* Find the minimum-cost path. */int minCost = Integer.MAX_VALUE;int i;for( i = 0;i <= nStates;i++ )
			{
				if ( ( minCost > p.getCost(i) )  )
				{iRule = p.getRule(i);minCost = p.getCost(i);goalState = i;
				}
			}
		}
		if ( ( iRule > 0 )  )
		{
			dispatchPrologue ( (IASNode)p.getNode(), iRule );
			reduceSubgoals(p, iRule);
			dispatchAction(p, iRule );
		}
		else
		{
			{
    new UnknownTreeHandler(reducer.getProblems()).analyze(p);
    BURMAbortException.abort();
}
		}
	}
	
	private void reduceSubgoals( JBurgAnnotation p, int rule_num) throws java.lang.Exception
	{
		if ( ___subgoals_by_rule[rule_num] != null )
		{
			for ( JBurgSubgoal sg : ___subgoals_by_rule[rule_num] )
			{
				if ( !sg.isNary() )
				{
					reduce ( sg.getNode(p), sg.getGoalState());
				}
				else
				{
					/* Aggregate the operands of an n-ary operator into a single container. */
					JBurgAnnotation sub_parent = sg.getNode(p);
					java.util.Vector variadic_result = new java.util.Vector(sub_parent.getArity() - sg.startIndex);
					for ( int j = sg.startIndex; j < sub_parent.getArity(); j++ )
					{
						reduce(sub_parent.getNthChild(j), sg.getGoalState());
						variadic_result.add(__reducedValues.pop());
					}
					__reducedValues.push(variadic_result);
				}
			}
		}
	}
	
	private void dispatchPrologue( IASNode p, int iRule) throws java.lang.Exception
	{
		switch( iRule )
		{
				
			case 105:
			{	reducer.prologue_anonymousFunction(p);
				break;
			}
				
			case 274:
			{	reducer.prologue_blockStmt(p);
				break;
			}
				
			case 275:
			{	reducer.prologue_blockStmt_to_finally_clause(p);
				break;
			}
				
			case 278:
			{	reducer.prologue_catchBlock(p);
				break;
			}
				
			case 279:
			{	reducer.prologue_catchBlock(p);
				break;
			}
				
			case 281:
			{	reducer.prologue_blockStmt(p);
				break;
			}
				
			case 285:
			{	reducer.prologue_countedForStmt(p);
				break;
			}
				
			case 296:
			{	reducer.prologue_doStmt(p);
				break;
			}
				
			case 307:
			{	reducer.prologue_forEachStmt(p);
				break;
			}
				
			case 308:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 309:
			{	reducer.prologue_forEachStmt(p);
				break;
			}
				
			case 310:
			{	reducer.prologue_forEachStmt(p);
				break;
			}
				
			case 311:
			{	reducer.prologue_forEachStmt(p);
				break;
			}
				
			case 312:
			{	reducer.prologue_forEachStmt(p);
				break;
			}
				
			case 313:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 314:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 315:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 316:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 317:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 318:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 319:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 320:
			{	reducer.prologue_forInStmt(p);
				break;
			}
				
			case 348:
			{	reducer.prologue_labeledStmt(p);
				break;
			}
				
			case 361:
			{	reducer.prologue_mxmlEventSpecifier(p);
				break;
			}
				
			case 452:
			{	reducer.prologue_switchStmt(p);
				break;
			}
				
			case 455:
			{	reducer.prologue_tryCatchFinallyStmt(p);
				break;
			}
				
			case 456:
			{	reducer.prologue_tryCatchStmt(p);
				break;
			}
				
			case 457:
			{	reducer.prologue_tryFinallyStmt(p);
				break;
			}
				
			case 460:
			{	reducer.prologue_function(p);
				break;
			}
				
			case 461:
			{	reducer.prologue_typedFunction_to_statement(p);
				break;
			}
				
			case 462:
			{	reducer.prologue_functionObject(p);
				break;
			}
				
			case 463:
			{	reducer.prologue_function(p);
				break;
			}
				
			case 464:
			{	reducer.prologue_function(p);
				break;
			}
				
			case 469:
			{	reducer.prologue_function(p);
				break;
			}
				
			case 470:
			{	reducer.prologue_typelessFunction_to_statement(p);
				break;
			}
				
			case 471:
			{	reducer.prologue_functionObject(p);
				break;
			}
				
			case 472:
			{	reducer.prologue_function(p);
				break;
			}
				
			case 473:
			{	reducer.prologue_function(p);
				break;
			}
				
			case 474:
			{	reducer.prologue_typeof(p);
				break;
			}
				
			case 475:
			{	reducer.prologue_typeof(p);
				break;
			}
				
			case 494:
			{	reducer.prologue_whileStmt(p);
				break;
			}
				
			case 495:
			{	reducer.prologue_withStmt(p);
				break;
			}
		}
	}
	
	private int getNaryCost( JBurgAnnotation node, int goalState, int start_index)
	{
		int accumCost = 0;
		for ( int i = start_index; i < node.getArity() && accumCost != Integer.MAX_VALUE; i++ )
		{
			int subCost = node.getNthChild(i).getCost(goalState);
			if ( subCost != Integer.MAX_VALUE )
				accumCost += subCost;
			else
				accumCost = Integer.MAX_VALUE;
		}
		return accumCost;
	}
	
	public void burm( IASNode root) throws java.lang.Exception
	{
		/* Use the least-cost goal state available. */
		burm(root, 0);
	}
	
	public void burm( IASNode root, int goal_state) throws java.lang.Exception
	{
		JBurgAnnotation annotatedTree = label(root);
		try
		{
			reduce ( annotatedTree, goal_state);
		}
		catch ( Exception cant_reduce )
		{
			this.__problemTree = annotatedTree;
			throw cant_reduce;
		}
	}
	private JBurgAnnotation __problemTree;
	
	public void dump( java.io.PrintWriter debug_output)
	{if ( null == __problemTree )
		{debug_output.println("");
			return;
		}debug_output.println("");
	}

void describeNode ( JBurgAnnotation node, java.io.PrintWriter debugOutput ) 
{
	if ( node == null ) return;
	String self_description;
	try {
		self_description = java.net.URLEncoder.encode(node.getNode().toString(),"UTF-8");
	} catch ( Exception cant_encode ) {self_description = node.getNode().toString();
	}
	debugOutput.print ( "");

	for (int i = 0; i <= nStates ; i++ )
	{
		if ( node.getRule(i) != 0 )
		{
			debugOutput.print ( "" );
		}
	}
	for (int i = 0; i < node.getArity(); i++ )
		describeNode ( node.getNthChild(i), debugOutput );
	debugOutput.println ( "" );
}

	static final String[] stateName = new String[] { "" , "non_resolving_identifier", "type_name", "integer_constant", "boolean_literal", "finally_clause", "literal", "conditionalJump", "decl_name", "runtime_name_expression", "double_constant", "function", "parameter", "statement", "return_type_name", "object_literal", "catch_block", "boolean_constant", "expression", "numeric_constant", "type_param_expression", "required_constant_value", "object_literal_element", "import_name", "void_expression", "conditionalElements", "comparison_expression", "constant_value", "e4x_literal", "vector_literal", "new_type_name", "qualifiedNamePart", "string_constant", "name", "parameterList", "mxml_data_binding_setter_expression", "var_decl", "dottedNamePart", "array_literal", "uint_constant"};

	
	public Object getResult( )
	{
		return __reducedValues.pop();
	}
	/* @return the input cost, limited to Integer.MAX_VALUE to avoid overflow. */
	
	public int normalizeCost( long c)
	{
		return(c < Integer.MAX_VALUE? (int) c: Integer.MAX_VALUE);
	}

	/** JBurgAnnotation is a data structure internal to the
	 *  JBurg-generated BURM that annotates a JBurgNode with
	 *  information used for dynamic programming and reduction.
	 */
	abstract class JBurgAnnotation
	{
		/**  The INode we're annotating.  */
		IASNode m_node; 
		JBurgAnnotation ( IASNode newNode)
		{
			m_node = newNode;
		}
		/** @return this node's operator. */
		public ASTNodeID getOperator() 
		{
			return m_node.getNodeID(); 
		}
		/** @return this node's wrappedIASNode. */ 
		public IASNode getNode()  
		{
			return m_node; 
		}
		/** @return the nth child of this node.  */
		public abstract JBurgAnnotation getNthChild(int idx);
		/** @return this node's child count.  */
		public abstract int getArity();
		/** Add a new child to this node.  */
		public abstract void addChild(JBurgAnnotation new_child);
		/** Release this node's data.  */
		public abstract void release();
		/** @return the wrapped node's toString().  */
		public String toString() 
		{
			return m_node.toString(); 
		}
		/** @return the current best cost to reach a goal state.  */
		public abstract int getCost( int goalState ) ;
		 /** Set the cost/rule configuration of a goal state.
		 * @throws IllegalArgumentException if this node has a fixed cost/rule.*/
		 public abstract void reset ( int goalState, int cost, int rule );
		/** * @return the rule to fire for a specific goal state. */
		public abstract int getRule ( int goalState ) ;
		/**
		 *  A closure's transformation rule succeeded.
		 *  If this path is selected for reduction, then all the actions  must be run in sequence, beginning with the original;
		 *  so the order of the rules matters.  We disallow transformation rules with  cycles (a node should never 
		 *  transition back to a goal state that has already been reduced).*/
		public abstract void recordAntecedent ( int iGoalState, int newAntecedentState );
	
	}

	abstract class JBurgSpecializedAnnotation extends JBurgAnnotation
	{
		JBurgSpecializedAnnotation(IASNode node)
		{
			super(node);
		}
		public JBurgAnnotation getNthChild(int idx)
		{
			throw new IllegalStateException(this.getClass().getName() + " has no children.");
		}
		public void addChild(JBurgAnnotation new_child)
		{
			throw new IllegalStateException(this.getClass().getName() + " cannot have children.");
		}
		public void reset ( int goalState, int cost, int rule )
		{
			throw new IllegalStateException(this.getClass().getName() + " cannot be reset.");
		}
		public void release ()
		{
		}
		public void recordAntecedent ( int iGoalState, int newAntecedentState )
		{
			throw new IllegalStateException(this.getClass().getName() + " cannot record antecedents.");
		}
	}

	class ErrorAnnotation extends JBurgSpecializedAnnotation
	{
		ErrorAnnotation()
		{
			super(null);
		}
		public int getRule(int state) { return -1; }
		public int getCost(int state) { return Integer.MAX_VALUE; }
		public int getArity() { return 0; }
	}
	final JBurgAnnotation errorAnnotation = new ErrorAnnotation();

	/**  JBurgAnnotation implementation used for general-purpose computation. */
	class JBurgAnnotationGeneral extends JBurgAnnotation
	{
		/** cost/rule matrices used during dynamic programming to compute
		 *  the most economical rules that can reduce  the input node.
		 */
		private int cost[];
		private int rule[];
		/**  Transformation rules may have antecedents: other states whose
		 *  output the transformation rule is intended to transform.
		 *  All such antecedent states must be executed in sequence when the rule is reduced.
		 */
		private int[] antecedentState = null;
		/** *  This node's children (may be empty).  */
		private java.util.Vector m_children = null;
		JBurgAnnotationGeneral ( IASNode newNode, int nRules) 
		{
			super(newNode);
			rule   = new int[nRules];
			cost   = new int[nRules];
			//  Initial cost of all rules is "infinite"
			java.util.Arrays.fill ( cost, Integer.MAX_VALUE);
			//  Initial rule for every goal is zero -- the JVM has zero-filled the rules array.
		}
		/** @return this node's operator. */
		public ASTNodeID getOperator() 
		{
			return m_node.getNodeID(); 
		}
		/** @return this node's wrappedIASNode. */ 
		public IASNode getNode()  
		{
			return m_node; 
		}
		/** @return the nth child of this node.  */
		public JBurgAnnotation getNthChild(int idx)
		{
			if ( m_children != null && m_children.size() > idx)
			{
				return (JBurgAnnotation) m_children.elementAt(idx);
			}
			else
			{
				throw new IllegalArgumentException( String.format("Index %d out of range opcode %s:", idx, this.getOperator() ));
			}
		}
		/** @return this node's child count.  */
		public int getArity()
		{
			return m_children != null? m_children.size():0;
		}
		/** Add a new child to this node.  */
		public void addChild(JBurgAnnotation new_child)
		{
			if (m_children == null)
			m_children = new java.util.Vector();
			if (new_child != null)
			m_children.add(new_child);
		}
		/** Release this node's data.  */
		public void release()
		{
			m_children = null;
			cost = null;
			rule = null;
		}
		/** @return the wrapped node's toString().  */
		public String toString() 
		{
			return m_node.toString(); 
		}
		/** @return the current best cost to reach a goal state.  */
		public int getCost( int goalState ) 
		{
			return cost[goalState]; 
		}
		 /** Set the cost/rule configuration of a goal state.
		 * @throws IllegalArgumentException if this node has a fixed cost/rule.*/
		 public void reset ( int goalState, int cost, int rule )
		{
			this.cost[goalState] = cost;
			this.rule[goalState] = rule;
			//  We have a brand new rule, therefore it has no antecedents.
			if ( this.antecedentState != null )this.antecedentState[goalState] = 0;
		}
		/** * @return the rule to fire for a specific goal state. */
		public int getRule ( int goalState ) 
		{
			return rule[goalState]; 
		}
		/**
		 *  A closure's transformation rule succeeded.
		 *  If this path is selected for reduction, then all the actions  must be run in sequence, beginning with the original;
		 *  so the order of the rules matters.  We disallow transformation rules with  cycles (a node should never 
		 *  transition back to a goal state that has already been reduced).*/
		public void recordAntecedent ( int iGoalState, int newAntecedentState )
		{
			int antecedentRule = rule[newAntecedentState];
			//  Sanity-check: we shouldn't be asked to record an antecedent state that hasn't been labelled.
			if ( antecedentRule == 0 )
			throw new IllegalStateException ( "Attempting to record an unlabelled antecedent state." );
			if ( antecedentRule == 1 )
			{
				//  Rule 1 is the simple transformation rule; it doesn't run,  but if it has antecedents, then they must run.
				if ( antecedentState != null )
				antecedentState[iGoalState] = antecedentState[newAntecedentState];
			}
			else
			{
				if ( antecedentState == null )
				antecedentState = new int[rule.length];
				antecedentState[iGoalState] = newAntecedentState;
			}
		}
	
	}
	
	static class JBurgSubgoal
	{
		private int goalState;
		private boolean isNary;
		private int startIndex;
		private int[] accessPath;
		
		public JBurgSubgoal( int goal_state, boolean is_nary, int start_index, int... access_path)
		{
			this.goalState = goal_state;
			this.isNary = is_nary;
			this.startIndex = start_index;
			this.accessPath = access_path;
		}
		public int getGoalState() { return this.goalState; }
		public boolean isNary() { return this.isNary; }
		public JBurgAnnotation getNode(JBurgAnnotation root)
		{
			JBurgAnnotation result = root;
			for ( int idx: this.accessPath )
				result = result.getNthChild(idx);
			return result;
		}
	
	}

}