docs: 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); }
  
  		}
  	}