public final void primary() throws RecognitionException {
		int primary_StartIndex = input.index();

		Token i=null;

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

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1216:5: ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | epStatement ( '.' methodName )* ( identifierSuffix )? | literal | 'new' creator |i= Identifier ( '.' methodName )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' )
			int alt170=10;
			switch ( input.LA(1) ) {
			case 36:
				{
				alt170=1;
				}
				break;
			case 53:
				{
				alt170=2;
				}
				break;
			case 111:
				{
				alt170=3;
				}
				break;
			case 108:
				{
				alt170=4;
				}
				break;
			case 70:
			case 79:
			case 80:
				{
				alt170=5;
				}
				break;
			case CharacterLiteral:
			case DecimalLiteral:
			case FloatingPointLiteral:
			case HexLiteral:
			case OctalLiteral:
			case StringLiteral:
			case 82:
			case 98:
			case 115:
				{
				alt170=6;
				}
				break;
			case 97:
				{
				alt170=7;
				}
				break;
			case Identifier:
				{
				alt170=8;
				}
				break;
			case 65:
			case 67:
			case 71:
			case 77:
			case 85:
			case 92:
			case 94:
			case 105:
				{
				alt170=9;
				}
				break;
			case 118:
				{
				alt170=10;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 170, 0, input);
				throw nvae;
			}
			switch (alt170) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1216:7: parExpression
					{
					pushFollow(FOLLOW_parExpression_in_primary5654);
					parExpression();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1217:9: nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments )
					{
					pushFollow(FOLLOW_nonWildcardTypeArguments_in_primary5664);
					nonWildcardTypeArguments();
					state._fsp--;
					if (state.failed) return;
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1218:9: ( explicitGenericInvocationSuffix | 'this' arguments )
					int alt162=2;
					int LA162_0 = input.LA(1);
					if ( (LA162_0==Identifier||LA162_0==108) ) {
						alt162=1;
					}
					else if ( (LA162_0==111) ) {
						alt162=2;
					}

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

					switch (alt162) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1218:10: explicitGenericInvocationSuffix
							{
							pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_primary5675);
							explicitGenericInvocationSuffix();
							state._fsp--;
							if (state.failed) return;
							}
							break;
						case 2 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1218:44: 'this' arguments
							{
							match(input,111,FOLLOW_111_in_primary5679); if (state.failed) return;
							pushFollow(FOLLOW_arguments_in_primary5681);
							arguments();
							state._fsp--;
							if (state.failed) return;
							}
							break;

					}

					}
					break;
				case 3 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1219:9: 'this' ( '.' Identifier )* ( identifierSuffix )?
					{
					match(input,111,FOLLOW_111_in_primary5692); if (state.failed) return;
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1219:16: ( '.' Identifier )*
					loop163:
					while (true) {
						int alt163=2;
						int LA163_0 = input.LA(1);
						if ( (LA163_0==47) ) {
							int LA163_3 = input.LA(2);
							if ( (LA163_3==Identifier) ) {
								int LA163_37 = input.LA(3);
								if ( (synpred249_Java()) ) {
									alt163=1;
								}

							}

						}

						switch (alt163) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1219:17: '.' Identifier
							{
							match(input,47,FOLLOW_47_in_primary5695); if (state.failed) return;
							match(input,Identifier,FOLLOW_Identifier_in_primary5697); if (state.failed) return;
							}
							break;

						default :
							break loop163;
						}
					}

					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1219:34: ( identifierSuffix )?
					int alt164=2;
					alt164 = dfa164.predict(input);
					switch (alt164) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1219:35: identifierSuffix
							{
							pushFollow(FOLLOW_identifierSuffix_in_primary5702);
							identifierSuffix();
							state._fsp--;
							if (state.failed) return;
							}
							break;

					}

					}
					break;
				case 4 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1220:9: 'super' superSuffix
					{
					match(input,108,FOLLOW_108_in_primary5714); if (state.failed) return;
					pushFollow(FOLLOW_superSuffix_in_primary5716);
					superSuffix();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 5 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1221:9: epStatement ( '.' methodName )* ( identifierSuffix )?
					{
					pushFollow(FOLLOW_epStatement_in_primary5726);
					epStatement();
					state._fsp--;
					if (state.failed) return;
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1221:21: ( '.' methodName )*
					loop165:
					while (true) {
						int alt165=2;
						int LA165_0 = input.LA(1);
						if ( (LA165_0==47) ) {
							int LA165_3 = input.LA(2);
							if ( (LA165_3==Identifier||LA165_3==75||LA165_3==90||LA165_3==95||LA165_3==103||LA165_3==117) ) {
								int LA165_38 = input.LA(3);
								if ( (synpred253_Java()) ) {
									alt165=1;
								}

							}

						}

						switch (alt165) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1221:22: '.' methodName
							{
							match(input,47,FOLLOW_47_in_primary5729); if (state.failed) return;
							pushFollow(FOLLOW_methodName_in_primary5731);
							methodName();
							state._fsp--;
							if (state.failed) return;
							}
							break;

						default :
							break loop165;
						}
					}

					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1221:39: ( identifierSuffix )?
					int alt166=2;
					alt166 = dfa166.predict(input);
					switch (alt166) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1221:40: identifierSuffix
							{
							pushFollow(FOLLOW_identifierSuffix_in_primary5736);
							identifierSuffix();
							state._fsp--;
							if (state.failed) return;
							}
							break;

					}

					}
					break;
				case 6 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1222:9: literal
					{
					pushFollow(FOLLOW_literal_in_primary5748);
					literal();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 7 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1223:9: 'new' creator
					{
					match(input,97,FOLLOW_97_in_primary5758); if (state.failed) return;
					pushFollow(FOLLOW_creator_in_primary5760);
					creator();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 8 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1224:9: i= Identifier ( '.' methodName )* ( identifierSuffix )?
					{
					i=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary5772); if (state.failed) return;
					if ( state.backtracking==0 ) { if( ! "(".equals( input.LT(1) == null ? "" : input.LT(1).getText() ) ) identifiers.add( (i!=null?i.getText():null) );  }
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1224:126: ( '.' methodName )*
					loop167:
					while (true) {
						int alt167=2;
						int LA167_0 = input.LA(1);
						if ( (LA167_0==47) ) {
							int LA167_3 = input.LA(2);
							if ( (LA167_3==Identifier||LA167_3==75||LA167_3==90||LA167_3==95||LA167_3==103||LA167_3==117) ) {
								int LA167_38 = input.LA(3);
								if ( (synpred258_Java()) ) {
									alt167=1;
								}

							}

						}

						switch (alt167) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1224:127: '.' methodName
							{
							match(input,47,FOLLOW_47_in_primary5777); if (state.failed) return;
							pushFollow(FOLLOW_methodName_in_primary5779);
							methodName();
							state._fsp--;
							if (state.failed) return;
							}
							break;

						default :
							break loop167;
						}
					}

					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1224:144: ( identifierSuffix )?
					int alt168=2;
					alt168 = dfa168.predict(input);
					switch (alt168) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1224:145: identifierSuffix
							{
							pushFollow(FOLLOW_identifierSuffix_in_primary5784);
							identifierSuffix();
							state._fsp--;
							if (state.failed) return;
							}
							break;

					}

					}
					break;
				case 9 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1225:9: primitiveType ( '[' ']' )* '.' 'class'
					{
					pushFollow(FOLLOW_primitiveType_in_primary5796);
					primitiveType();
					state._fsp--;
					if (state.failed) return;
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1225:23: ( '[' ']' )*
					loop169:
					while (true) {
						int alt169=2;
						int LA169_0 = input.LA(1);
						if ( (LA169_0==59) ) {
							alt169=1;
						}

						switch (alt169) {
						case 1 :
							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1225:24: '[' ']'
							{
							match(input,59,FOLLOW_59_in_primary5799); if (state.failed) return;
							match(input,60,FOLLOW_60_in_primary5801); if (state.failed) return;
							}
							break;

						default :
							break loop169;
						}
					}

					match(input,47,FOLLOW_47_in_primary5805); if (state.failed) return;
					match(input,72,FOLLOW_72_in_primary5807); if (state.failed) return;
					}
					break;
				case 10 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1226:9: 'void' '.' 'class'
					{
					match(input,118,FOLLOW_118_in_primary5817); if (state.failed) return;
					match(input,47,FOLLOW_47_in_primary5819); if (state.failed) return;
					match(input,72,FOLLOW_72_in_primary5821); 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, 127, primary_StartIndex); }

		}
	}
public final void primary ( ) throws RecognitionException { int primary_StartIndex = input . index ( ) ; Token i = null ; try { if ( state . backtracking > 0 && alreadyParsedRule ( input , 127 ) ) { return ; } int alt170 = 10 ; switch ( input . LA ( 1 ) ) { case 36 : { alt170 = 1 ; } break ; case 53 : { alt170 = 2 ; } break ; case 111 : { alt170 = 3 ; } break ; case 108 : { alt170 = 4 ; } break ; case 70 : case 79 : case 80 : { alt170 = 5 ; } break ; case CharacterLiteral : case DecimalLiteral : case FloatingPointLiteral : case HexLiteral : case OctalLiteral : case StringLiteral : case 82 : case 98 : case 115 : { alt170 = 6 ; } break ; case 97 : { alt170 = 7 ; } break ; case Identifier : { alt170 = 8 ; } break ; case 65 : case 67 : case 71 : case 77 : case 85 : case 92 : case 94 : case 105 : { alt170 = 9 ; } break ; case 118 : { alt170 = 10 ; } break ; default : if ( state . backtracking > 0 ) { state . failed = true ; return ; } NoViableAltException nvae = new NoViableAltException ( "" , 170 , 0 , input ) ; throw nvae ; } switch ( alt170 ) { case 1 : { pushFollow ( FOLLOW_parExpression_in_primary5654 ) ; parExpression ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; case 2 : { pushFollow ( FOLLOW_nonWildcardTypeArguments_in_primary5664 ) ; nonWildcardTypeArguments ( ) ; state . _fsp -- ; if ( state . failed ) return ; int alt162 = 2 ; int LA162_0 = input . LA ( 1 ) ; if ( ( LA162_0 == Identifier || LA162_0 == 108 ) ) { alt162 = 1 ; } else if ( ( LA162_0 == 111 ) ) { alt162 = 2 ; } else { if ( state . backtracking > 0 ) { state . failed = true ; return ; } NoViableAltException nvae = new NoViableAltException ( "" , 162 , 0 , input ) ; throw nvae ; } switch ( alt162 ) { case 1 : { pushFollow ( FOLLOW_explicitGenericInvocationSuffix_in_primary5675 ) ; explicitGenericInvocationSuffix ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; case 2 : { match ( input , 111 , FOLLOW_111_in_primary5679 ) ; if ( state . failed ) return ; pushFollow ( FOLLOW_arguments_in_primary5681 ) ; arguments ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; } } break ; case 3 : { match ( input , 111 , FOLLOW_111_in_primary5692 ) ; if ( state . failed ) return ; loop163 : while ( true ) { int alt163 = 2 ; int LA163_0 = input . LA ( 1 ) ; if ( ( LA163_0 == 47 ) ) { int LA163_3 = input . LA ( 2 ) ; if ( ( LA163_3 == Identifier ) ) { int LA163_37 = input . LA ( 3 ) ; if ( ( synpred249_Java ( ) ) ) { alt163 = 1 ; } } } switch ( alt163 ) { case 1 : { match ( input , 47 , FOLLOW_47_in_primary5695 ) ; if ( state . failed ) return ; match ( input , Identifier , FOLLOW_Identifier_in_primary5697 ) ; if ( state . failed ) return ; } break ; default : break loop163 ; } } int alt164 = 2 ; alt164 = dfa164 . predict ( input ) ; switch ( alt164 ) { case 1 : { pushFollow ( FOLLOW_identifierSuffix_in_primary5702 ) ; identifierSuffix ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; } } break ; case 4 : { match ( input , 108 , FOLLOW_108_in_primary5714 ) ; if ( state . failed ) return ; pushFollow ( FOLLOW_superSuffix_in_primary5716 ) ; superSuffix ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; case 5 : { pushFollow ( FOLLOW_epStatement_in_primary5726 ) ; epStatement ( ) ; state . _fsp -- ; if ( state . failed ) return ; loop165 : while ( true ) { int alt165 = 2 ; int LA165_0 = input . LA ( 1 ) ; if ( ( LA165_0 == 47 ) ) { int LA165_3 = input . LA ( 2 ) ; if ( ( LA165_3 == Identifier || LA165_3 == 75 || LA165_3 == 90 || LA165_3 == 95 || LA165_3 == 103 || LA165_3 == 117 ) ) { int LA165_38 = input . LA ( 3 ) ; if ( ( synpred253_Java ( ) ) ) { alt165 = 1 ; } } } switch ( alt165 ) { case 1 : { match ( input , 47 , FOLLOW_47_in_primary5729 ) ; if ( state . failed ) return ; pushFollow ( FOLLOW_methodName_in_primary5731 ) ; methodName ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; default : break loop165 ; } } int alt166 = 2 ; alt166 = dfa166 . predict ( input ) ; switch ( alt166 ) { case 1 : { pushFollow ( FOLLOW_identifierSuffix_in_primary5736 ) ; identifierSuffix ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; } } break ; case 6 : { pushFollow ( FOLLOW_literal_in_primary5748 ) ; literal ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; case 7 : { match ( input , 97 , FOLLOW_97_in_primary5758 ) ; if ( state . failed ) return ; pushFollow ( FOLLOW_creator_in_primary5760 ) ; creator ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; case 8 : { i = ( Token ) match ( input , Identifier , FOLLOW_Identifier_in_primary5772 ) ; if ( state . failed ) return ; if ( state . backtracking == 0 ) { if ( ! "(" . equals ( input . LT ( 1 ) == null ? "" : input . LT ( 1 ) . getText ( ) ) ) identifiers . add ( ( i != null ? i . getText ( ) : null ) ) ; } loop167 : while ( true ) { int alt167 = 2 ; int LA167_0 = input . LA ( 1 ) ; if ( ( LA167_0 == 47 ) ) { int LA167_3 = input . LA ( 2 ) ; if ( ( LA167_3 == Identifier || LA167_3 == 75 || LA167_3 == 90 || LA167_3 == 95 || LA167_3 == 103 || LA167_3 == 117 ) ) { int LA167_38 = input . LA ( 3 ) ; if ( ( synpred258_Java ( ) ) ) { alt167 = 1 ; } } } switch ( alt167 ) { case 1 : { match ( input , 47 , FOLLOW_47_in_primary5777 ) ; if ( state . failed ) return ; pushFollow ( FOLLOW_methodName_in_primary5779 ) ; methodName ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; default : break loop167 ; } } int alt168 = 2 ; alt168 = dfa168 . predict ( input ) ; switch ( alt168 ) { case 1 : { pushFollow ( FOLLOW_identifierSuffix_in_primary5784 ) ; identifierSuffix ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; } } break ; case 9 : { pushFollow ( FOLLOW_primitiveType_in_primary5796 ) ; primitiveType ( ) ; state . _fsp -- ; if ( state . failed ) return ; loop169 : while ( true ) { int alt169 = 2 ; int LA169_0 = input . LA ( 1 ) ; if ( ( LA169_0 == 59 ) ) { alt169 = 1 ; } switch ( alt169 ) { case 1 : { match ( input , 59 , FOLLOW_59_in_primary5799 ) ; if ( state . failed ) return ; match ( input , 60 , FOLLOW_60_in_primary5801 ) ; if ( state . failed ) return ; } break ; default : break loop169 ; } } match ( input , 47 , FOLLOW_47_in_primary5805 ) ; if ( state . failed ) return ; match ( input , 72 , FOLLOW_72_in_primary5807 ) ; if ( state . failed ) return ; } break ; case 10 : { match ( input , 118 , FOLLOW_118_in_primary5817 ) ; if ( state . failed ) return ; match ( input , 47 , FOLLOW_47_in_primary5819 ) ; if ( state . failed ) return ; match ( input , 72 , FOLLOW_72_in_primary5821 ) ; if ( state . failed ) return ; } break ; } } catch ( RecognitionException re ) { reportError ( re ) ; recover ( input , re ) ; } finally { if ( state . backtracking > 0 ) { memoize ( input , 127 , primary_StartIndex ) ; } } }
src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1215:1: primary : ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | epStatement ( '.' methodName )* ( identifierSuffix )? | literal | 'new' creator |i= Identifier ( '.' methodName )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' );