src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:329:1: enumConstant : ( annotations )? Identifier ( arguments )? ( classBody )? ;
549508
public final void enumConstant() throws RecognitionException {
		int enumConstant_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:5: ( ( annotations )? Identifier ( arguments )? ( classBody )? )
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:7: ( annotations )? Identifier ( arguments )? ( classBody )?
			{
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:7: ( annotations )?
			int alt23=2;
			int LA23_0 = input.LA(1);
			if ( (LA23_0==58) ) {
				alt23=1;
			}
			switch (alt23) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:7: annotations
					{
					pushFollow(FOLLOW_annotations_in_enumConstant491);
					annotations();
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}

			match(input,Identifier,FOLLOW_Identifier_in_enumConstant494); if (state.failed) return;
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:31: ( arguments )?
			int alt24=2;
			int LA24_0 = input.LA(1);
			if ( (LA24_0==36) ) {
				alt24=1;
			}
			switch (alt24) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:32: arguments
					{
					pushFollow(FOLLOW_arguments_in_enumConstant497);
					arguments();
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:44: ( classBody )?
			int alt25=2;
			int LA25_0 = input.LA(1);
			if ( (LA25_0==121) ) {
				alt25=1;
			}
			switch (alt25) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:330:45: classBody
					{
					pushFollow(FOLLOW_classBody_in_enumConstant502);
					classBody();
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}

			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 14, enumConstant_StartIndex); }

		}
	}
470725
static JavaAnnotation []parseAnnotations(InputStream is,
                                           ConstantPool cp,
                                           JavaClassLoader loader)
    throws IOException
  {
    int n = readShort(is);

    JavaAnnotation []annArray = new JavaAnnotation[n];

    for (int i = 0; i < n; i++) {
      annArray[i] = parseAnnotation(is, cp, loader);
    }

    return annArray;
  }
619665
private static String parseFormat(List<? extends TargetExpr> args) {
    String numberFormatType = !args.isEmpty() ? args.get(0).getText() : "'" + DEFAULT_FORMAT + "'";

    if (!JS_ARGS_TO_ENUM.containsKey(numberFormatType)) {
      String validKeys = Joiner.on("', '").join(JS_ARGS_TO_ENUM.keySet());
      throw new IllegalArgumentException(
          "First argument to formatNum must be constant, and one of: '" + validKeys + "'.");
    }

    return numberFormatType;
  }
1079306
public final void synpred174_Java_fragment() throws RecognitionException {
		Token id=null;
		Token z=null;

		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:820:9: ( ( ( variableModifier )* type id= Identifier z= ':' expression ) )
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:820:9: ( ( variableModifier )* type id= Identifier z= ':' expression )
		{
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:820:9: ( ( variableModifier )* type id= Identifier z= ':' expression )
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:820:11: ( variableModifier )* type id= Identifier z= ':' expression
		{
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:820:11: ( variableModifier )*
		loop216:
		while (true) {
			int alt216=2;
			int LA216_0 = input.LA(1);
			if ( (LA216_0==58||LA216_0==83) ) {
				alt216=1;
			}

			switch (alt216) {
			case 1 :
				// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:820:13: variableModifier
				{
				pushFollow(FOLLOW_variableModifier_in_synpred174_Java3449);
				variableModifier();
				state._fsp--;
				if (state.failed) return;
				}
				break;

			default :
				break loop216;
			}
		}

		pushFollow(FOLLOW_type_in_synpred174_Java3488);
		type();
		state._fsp--;
		if (state.failed) return;
		id=(Token)match(input,Identifier,FOLLOW_Identifier_in_synpred174_Java3514); if (state.failed) return;
		z=(Token)match(input,51,FOLLOW_51_in_synpred174_Java3541); if (state.failed) return;
		pushFollow(FOLLOW_expression_in_synpred174_Java3543);
		expression();
		state._fsp--;
		if (state.failed) return;
		}

		}

	}
769539
public final void annotationArgs(AnnotationDescr descr) throws RecognitionException {
		Token value=null;

		try {
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:188:3: ( LEFT_PAREN (value= ID | annotationElementValuePairs[descr] )? RIGHT_PAREN )
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:188:5: LEFT_PAREN (value= ID | annotationElementValuePairs[descr] )? RIGHT_PAREN
			{
			match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_annotationArgs945); if (state.failed) return;
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:189:5: (value= ID | annotationElementValuePairs[descr] )?
			int alt19=3;
			int LA19_0 = input.LA(1);
			if ( (LA19_0==ID) ) {
				int LA19_1 = input.LA(2);
				if ( (LA19_1==EQUALS_ASSIGN) ) {
					alt19=2;
				}
				else if ( (LA19_1==RIGHT_PAREN) ) {
					alt19=1;
				}
			}
			switch (alt19) {
				case 1 :
					// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:190:8: value= ID
					{
					value=(Token)match(input,ID,FOLLOW_ID_in_annotationArgs962); if (state.failed) return;
					if ( state.backtracking==0 ) { if ( buildDescr ) { descr.setValue( (value!=null?value.getText():null) ); } }
					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:191:10: annotationElementValuePairs[descr]
					{
					pushFollow(FOLLOW_annotationElementValuePairs_in_annotationArgs975);
					annotationElementValuePairs(descr);
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}

			match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_annotationArgs989); if (state.failed) return;
			}

		}

		catch (RecognitionException re) {
		    throw re;
		}

		finally {
			// do for sure before leaving
		}
	}
735671
public final void importDeclaration() throws RecognitionException {
		int importDeclaration_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:5: ( 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' )
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:7: 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';'
			{
			match(input,89,FOLLOW_89_in_importDeclaration153); if (state.failed) return;
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:16: ( 'static' )?
			int alt5=2;
			int LA5_0 = input.LA(1);
			if ( (LA5_0==106) ) {
				alt5=1;
			}
			switch (alt5) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:16: 'static'
					{
					match(input,106,FOLLOW_106_in_importDeclaration155); if (state.failed) return;
					}
					break;

			}

			match(input,Identifier,FOLLOW_Identifier_in_importDeclaration158); if (state.failed) return;
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:37: ( '.' Identifier )*
			loop6:
			while (true) {
				int alt6=2;
				int LA6_0 = input.LA(1);
				if ( (LA6_0==47) ) {
					int LA6_1 = input.LA(2);
					if ( (LA6_1==Identifier) ) {
						alt6=1;
					}

				}

				switch (alt6) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:38: '.' Identifier
					{
					match(input,47,FOLLOW_47_in_importDeclaration161); if (state.failed) return;
					match(input,Identifier,FOLLOW_Identifier_in_importDeclaration163); if (state.failed) return;
					}
					break;

				default :
					break loop6;
				}
			}

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:55: ( '.' '*' )?
			int alt7=2;
			int LA7_0 = input.LA(1);
			if ( (LA7_0==47) ) {
				alt7=1;
			}
			switch (alt7) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:281:56: '.' '*'
					{
					match(input,47,FOLLOW_47_in_importDeclaration168); if (state.failed) return;
					match(input,38,FOLLOW_38_in_importDeclaration170); if (state.failed) return;
					}
					break;

			}

			match(input,52,FOLLOW_52_in_importDeclaration174); if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }

		}
	}
817103
public final void switchLabel() throws RecognitionException {
		int switchLabel_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 98) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1031:5: ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' )
			int alt130=3;
			int LA130_0 = input.LA(1);
			if ( (LA130_0==68) ) {
				int LA130_1 = input.LA(2);
				if ( ((LA130_1 >= CharacterLiteral && LA130_1 <= DecimalLiteral)||LA130_1==FloatingPointLiteral||LA130_1==HexLiteral||(LA130_1 >= OctalLiteral && LA130_1 <= StringLiteral)||LA130_1==29||LA130_1==36||(LA130_1 >= 40 && LA130_1 <= 41)||(LA130_1 >= 44 && LA130_1 <= 45)||LA130_1==53||LA130_1==65||LA130_1==67||(LA130_1 >= 70 && LA130_1 <= 71)||LA130_1==77||(LA130_1 >= 79 && LA130_1 <= 80)||LA130_1==82||LA130_1==85||LA130_1==92||LA130_1==94||(LA130_1 >= 97 && LA130_1 <= 98)||LA130_1==105||LA130_1==108||LA130_1==111||LA130_1==115||LA130_1==118||LA130_1==126) ) {
					alt130=1;
				}
				else if ( (LA130_1==Identifier) ) {
					int LA130_23 = input.LA(3);
					if ( (synpred190_Java()) ) {
						alt130=1;
					}
					else if ( (synpred191_Java()) ) {
						alt130=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 130, 23, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

				}

				else {
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 130, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}
			else if ( (LA130_0==74) ) {
				alt130=3;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 130, 0, input);
				throw nvae;
			}

			switch (alt130) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1031:7: 'case' constantExpression ':'
					{
					match(input,68,FOLLOW_68_in_switchLabel4450); if (state.failed) return;
					pushFollow(FOLLOW_constantExpression_in_switchLabel4452);
					constantExpression();
					state._fsp--;
					if (state.failed) return;
					match(input,51,FOLLOW_51_in_switchLabel4454); if (state.failed) return;
					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1032:9: 'case' enumConstantName ':'
					{
					match(input,68,FOLLOW_68_in_switchLabel4464); if (state.failed) return;
					pushFollow(FOLLOW_enumConstantName_in_switchLabel4466);
					enumConstantName();
					state._fsp--;
					if (state.failed) return;
					match(input,51,FOLLOW_51_in_switchLabel4468); if (state.failed) return;
					}
					break;
				case 3 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1033:9: 'default' ':'
					{
					match(input,74,FOLLOW_74_in_switchLabel4478); if (state.failed) return;
					match(input,51,FOLLOW_51_in_switchLabel4480); if (state.failed) return;
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 98, switchLabel_StartIndex); }

		}
	}
908528
public final void formalParameters() throws RecognitionException {
		int formalParameters_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 56) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:566:5: ( '(' ( formalParameterDecls )? ')' )
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:566:7: '(' ( formalParameterDecls )? ')'
			{
			match(input,36,FOLLOW_36_in_formalParameters2025); if (state.failed) return;
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:566:11: ( formalParameterDecls )?
			int alt78=2;
			int LA78_0 = input.LA(1);
			if ( (LA78_0==Identifier||LA78_0==58||LA78_0==65||LA78_0==67||LA78_0==71||LA78_0==77||LA78_0==83||LA78_0==85||LA78_0==92||LA78_0==94||LA78_0==105) ) {
				alt78=1;
			}
			switch (alt78) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:566:11: formalParameterDecls
					{
					pushFollow(FOLLOW_formalParameterDecls_in_formalParameters2027);
					formalParameterDecls();
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}

			match(input,37,FOLLOW_37_in_formalParameters2030); if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 56, formalParameters_StartIndex); }

		}
	}
1052713
public final void classBody() throws RecognitionException {
		int classBody_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:351:5: ( '{' ( classBodyDeclaration )* '}' )
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:351:7: '{' ( classBodyDeclaration )* '}'
			{
			match(input,121,FOLLOW_121_in_classBody627); if (state.failed) return;
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:351:11: ( classBodyDeclaration )*
			loop31:
			while (true) {
				int alt31=2;
				int LA31_0 = input.LA(1);
				if ( (LA31_0==ENUM||LA31_0==Identifier||(LA31_0 >= 52 && LA31_0 <= 53)||LA31_0==58||LA31_0==63||LA31_0==65||LA31_0==67||(LA31_0 >= 71 && LA31_0 <= 72)||LA31_0==77||LA31_0==83||LA31_0==85||(LA31_0 >= 92 && LA31_0 <= 94)||LA31_0==96||(LA31_0 >= 100 && LA31_0 <= 102)||(LA31_0 >= 105 && LA31_0 <= 107)||LA31_0==110||LA31_0==114||(LA31_0 >= 118 && LA31_0 <= 119)||LA31_0==121) ) {
					alt31=1;
				}

				switch (alt31) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:351:11: classBodyDeclaration
					{
					pushFollow(FOLLOW_classBodyDeclaration_in_classBody629);
					classBodyDeclaration();
					state._fsp--;
					if (state.failed) return;
					}
					break;

				default :
					break loop31;
				}
			}

			match(input,125,FOLLOW_125_in_classBody632); if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 19, classBody_StartIndex); }

		}
	}
32507
public final void synpred249_Java_fragment() throws RecognitionException {
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1219:17: ( '.' Identifier )
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1219:17: '.' Identifier
		{
		match(input,47,FOLLOW_47_in_synpred249_Java5695); if (state.failed) return;
		match(input,Identifier,FOLLOW_Identifier_in_synpred249_Java5697); if (state.failed) return;
		}

	}
1032469
public final void annotationArray() throws RecognitionException {
		try {
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:209:3: ( LEFT_CURLY ( annotationValue ( COMMA annotationValue )* )? RIGHT_CURLY )
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:209:6: LEFT_CURLY ( annotationValue ( COMMA annotationValue )* )? RIGHT_CURLY
			{
			match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_annotationArray1071); if (state.failed) return;
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:209:17: ( annotationValue ( COMMA annotationValue )* )?
			int alt23=2;
			int LA23_0 = input.LA(1);
			if ( (LA23_0==BOOL||(LA23_0 >= DECIMAL && LA23_0 <= DECR)||LA23_0==FLOAT||LA23_0==HEX||(LA23_0 >= ID && LA23_0 <= INCR)||(LA23_0 >= LEFT_CURLY && LA23_0 <= LESS)||LA23_0==MINUS||LA23_0==NEGATION||LA23_0==NULL||LA23_0==PLUS||(LA23_0 >= STAR && LA23_0 <= TIME_INTERVAL)) ) {
				alt23=1;
			}
			switch (alt23) {
				case 1 :
					// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:209:19: annotationValue ( COMMA annotationValue )*
					{
					pushFollow(FOLLOW_annotationValue_in_annotationArray1075);
					annotationValue();
					state._fsp--;
					if (state.failed) return;
					// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:209:35: ( COMMA annotationValue )*
					loop22:
					while (true) {
						int alt22=2;
						int LA22_0 = input.LA(1);
						if ( (LA22_0==COMMA) ) {
							alt22=1;
						}

						switch (alt22) {
						case 1 :
							// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:209:37: COMMA annotationValue
							{
							match(input,COMMA,FOLLOW_COMMA_in_annotationArray1079); if (state.failed) return;
							pushFollow(FOLLOW_annotationValue_in_annotationArray1081);
							annotationValue();
							state._fsp--;
							if (state.failed) return;
							}
							break;

						default :
							break loop22;
						}
					}

					}
					break;

			}

			match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_annotationArray1089); if (state.failed) return;
			}

		}

		catch (RecognitionException re) {
		    throw re;
		}

		finally {
			// do for sure before leaving
		}
	}
104381
public final void annotationConstantRest() throws RecognitionException {
		VarDecl_stack.push(new VarDecl_scope());

		int annotationConstantRest_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 78) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:673:6: ( variableDeclarators )
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:673:8: variableDeclarators
			{
			pushFollow(FOLLOW_variableDeclarators_in_annotationConstantRest2702);
			variableDeclarators();
			state._fsp--;
			if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 78, annotationConstantRest_StartIndex); }

			VarDecl_stack.pop();

		}
	}
866991
public final void modifier() throws RecognitionException {
		int modifier_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:504:5: ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' )
			int alt64=12;
			switch ( input.LA(1) ) {
			case 58:
				{
				alt64=1;
				}
				break;
			case 102:
				{
				alt64=2;
				}
				break;
			case 101:
				{
				alt64=3;
				}
				break;
			case 100:
				{
				alt64=4;
				}
				break;
			case 106:
				{
				alt64=5;
				}
				break;
			case 63:
				{
				alt64=6;
				}
				break;
			case 83:
				{
				alt64=7;
				}
				break;
			case 96:
				{
				alt64=8;
				}
				break;
			case 110:
				{
				alt64=9;
				}
				break;
			case 114:
				{
				alt64=10;
				}
				break;
			case 119:
				{
				alt64=11;
				}
				break;
			case 107:
				{
				alt64=12;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 64, 0, input);
				throw nvae;
			}
			switch (alt64) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:504:9: annotation
					{
					pushFollow(FOLLOW_annotation_in_modifier1573);
					annotation();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:505:9: 'public'
					{
					match(input,102,FOLLOW_102_in_modifier1583); if (state.failed) return;
					}
					break;
				case 3 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:506:9: 'protected'
					{
					match(input,101,FOLLOW_101_in_modifier1593); if (state.failed) return;
					}
					break;
				case 4 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:507:9: 'private'
					{
					match(input,100,FOLLOW_100_in_modifier1603); if (state.failed) return;
					}
					break;
				case 5 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:508:9: 'static'
					{
					match(input,106,FOLLOW_106_in_modifier1613); if (state.failed) return;
					}
					break;
				case 6 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:509:9: 'abstract'
					{
					match(input,63,FOLLOW_63_in_modifier1623); if (state.failed) return;
					}
					break;
				case 7 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:510:9: 'final'
					{
					match(input,83,FOLLOW_83_in_modifier1633); if (state.failed) return;
					}
					break;
				case 8 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:511:9: 'native'
					{
					match(input,96,FOLLOW_96_in_modifier1643); if (state.failed) return;
					}
					break;
				case 9 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:512:9: 'synchronized'
					{
					match(input,110,FOLLOW_110_in_modifier1653); if (state.failed) return;
					}
					break;
				case 10 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:513:9: 'transient'
					{
					match(input,114,FOLLOW_114_in_modifier1663); if (state.failed) return;
					}
					break;
				case 11 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:514:9: 'volatile'
					{
					match(input,119,FOLLOW_119_in_modifier1673); if (state.failed) return;
					}
					break;
				case 12 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:515:9: 'strictfp'
					{
					match(input,107,FOLLOW_107_in_modifier1683); if (state.failed) return;
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 46, modifier_StartIndex); }

		}
	}
499081
public final void typeArgument() throws RecognitionException {
		int typeArgument_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 54) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:557:5: ( type | '?' ( ( 'extends' | 'super' ) type )? )
			int alt76=2;
			int LA76_0 = input.LA(1);
			if ( (LA76_0==Identifier||LA76_0==65||LA76_0==67||LA76_0==71||LA76_0==77||LA76_0==85||LA76_0==92||LA76_0==94||LA76_0==105) ) {
				alt76=1;
			}
			else if ( (LA76_0==57) ) {
				alt76=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 76, 0, input);
				throw nvae;
			}

			switch (alt76) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:557:7: type
					{
					pushFollow(FOLLOW_type_in_typeArgument1963);
					type();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:558:7: '?' ( ( 'extends' | 'super' ) type )?
					{
					match(input,57,FOLLOW_57_in_typeArgument1971); if (state.failed) return;
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:558:11: ( ( 'extends' | 'super' ) type )?
					int alt75=2;
					int LA75_0 = input.LA(1);
					if ( (LA75_0==81||LA75_0==108) ) {
						alt75=1;
					}
					switch (alt75) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:558:12: ( 'extends' | 'super' ) type
							{
							if ( input.LA(1)==81||input.LA(1)==108 ) {
								input.consume();
								state.errorRecovery=false;
								state.failed=false;
							}
							else {
								if (state.backtracking>0) {state.failed=true; return;}
								MismatchedSetException mse = new MismatchedSetException(null,input);
								throw mse;
							}
							pushFollow(FOLLOW_type_in_typeArgument1982);
							type();
							state._fsp--;
							if (state.failed) return;
							}
							break;

					}

					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 54, typeArgument_StartIndex); }

		}
	}
320969
static ClassRefTypeSignature parse(final Parser parser, final String definingClassName) throws ParseException {
        if (parser.peek() == 'L') {
            parser.next();
            if (!TypeUtils.getIdentifierToken(parser, /* separator = */ '/', /* separatorReplace = */ '.')) {
                throw new ParseException(parser, "Could not parse identifier token");
            }
            final String className = parser.currToken();
            final List<TypeArgument> typeArguments = TypeArgument.parseList(parser, definingClassName);
            List<String> suffixes;
            List<List<TypeArgument>> suffixTypeArguments;
            if (parser.peek() == '.') {
                suffixes = new ArrayList<>();
                suffixTypeArguments = new ArrayList<>();
                while (parser.peek() == '.') {
                    parser.expect('.');
                    if (!TypeUtils.getIdentifierToken(parser, /* separator = */ '/',
                            /* separatorReplace = */ '.')) {
                        throw new ParseException(parser, "Could not parse identifier token");
                    }
                    suffixes.add(parser.currToken());
                    suffixTypeArguments.add(TypeArgument.parseList(parser, definingClassName));
                }
            } else {
                suffixes = Collections.emptyList();
                suffixTypeArguments = Collections.emptyList();
            }
            parser.expect(';');
            return new ClassRefTypeSignature(className, typeArguments, suffixes, suffixTypeArguments);
        } else {
            return null;
        }
    }
905073
void annotation( AnnotatedDescrBuilder<?> adb ) {
        AnnotationDescrBuilder<?> annotation = null;

        try {
            if (speculateFullAnnotation()) {
                boolean buildState = exprParser.isBuildDescr();
                exprParser.setBuildDescr(true);
                exprParser.fullAnnotation(adb);
                exprParser.setBuildDescr(buildState);
            } else {

                // '@'
                Token at = match(input,
                        DRL6Lexer.AT,
                        null,
                        null,
                        DroolsEditorType.SYMBOL);
                if (state.failed)
                    return;

                // identifier
                String fqn = qualifiedIdentifier();
                if (state.failed)
                    return;

                if (state.backtracking == 0) {
                    annotation = adb.newAnnotation(fqn);
                    helper.setStart(annotation,
                            at);
                }

                try {
                    if (input.LA(1) == DRL6Lexer.LEFT_PAREN) {
                        String value = chunk(DRL6Lexer.LEFT_PAREN,
                                DRL6Lexer.RIGHT_PAREN,
                                -1).trim();
                        if (state.failed)
                            return;
                        if (state.backtracking == 0) {
                            annotation.value(value);
                        }
                    }
                } finally {
                    if (state.backtracking == 0) {
                        helper.setEnd(annotation);
                    }
                }
            }

        } catch (RecognitionException re) {
            reportError(re);
        }
    }
483934
public final void synpred198_Java_fragment() throws RecognitionException {
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1056:7: ( ( variableModifier )* type variableDeclarators )
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1056:7: ( variableModifier )* type variableDeclarators
		{
		// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1056:7: ( variableModifier )*
		loop220:
		while (true) {
			int alt220=2;
			int LA220_0 = input.LA(1);
			if ( (LA220_0==58||LA220_0==83) ) {
				alt220=1;
			}

			switch (alt220) {
			case 1 :
				// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1056:9: variableModifier
				{
				pushFollow(FOLLOW_variableModifier_in_synpred198_Java4596);
				variableModifier();
				state._fsp--;
				if (state.failed) return;
				}
				break;

			default :
				break loop220;
			}
		}

		pushFollow(FOLLOW_type_in_synpred198_Java4631);
		type();
		state._fsp--;
		if (state.failed) return;
		pushFollow(FOLLOW_variableDeclarators_in_synpred198_Java4651);
		variableDeclarators();
		state._fsp--;
		if (state.failed) return;
		}

	}