docs: public final void mLINE_COMMENT() throws RecognitionException {
  		try {
  			int _type = LINE_COMMENT;
  			int _channel = DEFAULT_TOKEN_CHANNEL;
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1403:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1403:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
  			{
  			match("//"); 
  
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1403:12: (~ ( '\\n' | '\\r' ) )*
  			loop30:
  			while (true) {
  				int alt30=2;
  				int LA30_0 = input.LA(1);
  				if ( ((LA30_0 >= '\u0000' && LA30_0 <= '\t')||(LA30_0 >= '\u000B' && LA30_0 <= '\f')||(LA30_0 >= '\u000E' && LA30_0 <= '\uFFFF')) ) {
  					alt30=1;
  				}
  
  				switch (alt30) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:
  					{
  					if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '\t')||(input.LA(1) >= '\u000B' && input.LA(1) <= '\f')||(input.LA(1) >= '\u000E' && input.LA(1) <= '\uFFFF') ) {
  						input.consume();
  					}
  					else {
  						MismatchedSetException mse = new MismatchedSetException(null,input);
  						recover(mse);
  						throw mse;
  					}
  					}
  					break;
  
  				default :
  					break loop30;
  				}
  			}
  
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1403:26: ( '\\r' )?
  			int alt31=2;
  			int LA31_0 = input.LA(1);
  			if ( (LA31_0=='\r') ) {
  				alt31=1;
  			}
  			switch (alt31) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1403:26: '\\r'
  					{
  					match('\r'); 
  					}
  					break;
  
  			}
  
  			match('\n'); 
  			_channel=HIDDEN;
  			}
  
  			state.type = _type;
  			state.channel = _channel;
  		}
  		finally {
  			// do for sure before leaving
  		}
  	}