docs: public final void throwStatement() throws RecognitionException {
  		int throwStatement_StartIndex = input.index();
  
  		Token s=null;
  		Token c=null;
  		ParserRuleReturnScope expression3 =null;
  
  
  		        JavaThrowBlockDescr d = null;
  		    
  		try {
  			if ( state.backtracking>0 && alreadyParsedRule(input, 84) ) { return; }
  
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:754:5: (s= 'throw' expression c= ';' )
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:754:7: s= 'throw' expression c= ';'
  			{
  			s=(Token)match(input,112,FOLLOW_112_in_throwStatement3171); if (state.failed) return;
  			pushFollow(FOLLOW_expression_in_throwStatement3177);
  			expression3=expression();
  			state._fsp--;
  			if (state.failed) return;
  			c=(Token)match(input,52,FOLLOW_52_in_throwStatement3187); if (state.failed) return;
  			if ( state.backtracking==0 ) {
  			        d = new JavaThrowBlockDescr( );
  			        d.setStart( ((CommonToken)s).getStartIndex() );
  			        d.setTextStart( ((CommonToken)(expression3!=null?(expression3.start):null)).getStartIndex() );        
  			        this.addBlockDescr( d );
  			        d.setEnd( ((CommonToken)c).getStopIndex() ); 
  			        }
  			}
  
  		}
  		catch (RecognitionException re) {
  			reportError(re);
  			recover(input,re);
  		}
  		finally {
  			// do for sure before leaving
  			if ( state.backtracking>0 ) { memoize(input, 84, throwStatement_StartIndex); }
  
  		}
  	}