public final void classOrInterfaceDeclaration() throws RecognitionException {
		int classOrInterfaceDeclaration_StartIndex = input.index();

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

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:290:5: ( ( modifier )* ( classDeclaration | interfaceDeclaration ) )
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:290:7: ( modifier )* ( classDeclaration | interfaceDeclaration )
			{
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:290:7: ( modifier )*
			loop9:
			while (true) {
				int alt9=2;
				int LA9_0 = input.LA(1);
				if ( (LA9_0==58) ) {
					int LA9_4 = input.LA(2);
					if ( (LA9_4==Identifier) ) {
						alt9=1;
					}

				}
				else if ( (LA9_0==63||LA9_0==83||LA9_0==96||(LA9_0 >= 100 && LA9_0 <= 102)||(LA9_0 >= 106 && LA9_0 <= 107)||LA9_0==110||LA9_0==114||LA9_0==119) ) {
					alt9=1;
				}

				switch (alt9) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:290:7: modifier
					{
					pushFollow(FOLLOW_modifier_in_classOrInterfaceDeclaration218);
					modifier();
					state._fsp--;
					if (state.failed) return;
					}
					break;

				default :
					break loop9;
				}
			}

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:290:17: ( classDeclaration | interfaceDeclaration )
			int alt10=2;
			int LA10_0 = input.LA(1);
			if ( (LA10_0==ENUM||LA10_0==72) ) {
				alt10=1;
			}
			else if ( (LA10_0==58||LA10_0==93) ) {
				alt10=2;
			}

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

			switch (alt10) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:290:18: classDeclaration
					{
					pushFollow(FOLLOW_classDeclaration_in_classOrInterfaceDeclaration222);
					classDeclaration();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:290:37: interfaceDeclaration
					{
					pushFollow(FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration226);
					interfaceDeclaration();
					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, 5, classOrInterfaceDeclaration_StartIndex); }

		}
	}
public final void classOrInterfaceDeclaration ( ) throws RecognitionException { int classOrInterfaceDeclaration_StartIndex = input . index ( ) ; try { if ( state . backtracking > 0 && alreadyParsedRule ( input , 5 ) ) { return ; } { loop9 : while ( true ) { int alt9 = 2 ; int LA9_0 = input . LA ( 1 ) ; if ( ( LA9_0 == 58 ) ) { int LA9_4 = input . LA ( 2 ) ; if ( ( LA9_4 == Identifier ) ) { alt9 = 1 ; } } else if ( ( LA9_0 == 63 || LA9_0 == 83 || LA9_0 == 96 || ( LA9_0 >= 100 && LA9_0 <= 102 ) || ( LA9_0 >= 106 && LA9_0 <= 107 ) || LA9_0 == 110 || LA9_0 == 114 || LA9_0 == 119 ) ) { alt9 = 1 ; } switch ( alt9 ) { case 1 : { pushFollow ( FOLLOW_modifier_in_classOrInterfaceDeclaration218 ) ; modifier ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; default : break loop9 ; } } int alt10 = 2 ; int LA10_0 = input . LA ( 1 ) ; if ( ( LA10_0 == ENUM || LA10_0 == 72 ) ) { alt10 = 1 ; } else if ( ( LA10_0 == 58 || LA10_0 == 93 ) ) { alt10 = 2 ; } else { if ( state . backtracking > 0 ) { state . failed = true ; return ; } NoViableAltException nvae = new NoViableAltException ( "" , 10 , 0 , input ) ; throw nvae ; } switch ( alt10 ) { case 1 : { pushFollow ( FOLLOW_classDeclaration_in_classOrInterfaceDeclaration222 ) ; classDeclaration ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; case 2 : { pushFollow ( FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration226 ) ; interfaceDeclaration ( ) ; state . _fsp -- ; if ( state . failed ) return ; } break ; } } } catch ( RecognitionException re ) { reportError ( re ) ; recover ( input , re ) ; } finally { if ( state . backtracking > 0 ) { memoize ( input , 5 , classOrInterfaceDeclaration_StartIndex ) ; } } }
src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:289:1: classOrInterfaceDeclaration : ( modifier )* ( classDeclaration | interfaceDeclaration ) ;