docs: public final void mFloatingPointLiteral() throws RecognitionException {
  		try {
  			int _type = FloatingPointLiteral;
  			int _channel = DEFAULT_TOKEN_CHANNEL;
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1315:5: ( Digits '.' ( Digits )? ( Exponent )? ( FloatTypeSuffix )? | '.' Digits ( Exponent )? ( FloatTypeSuffix )? | Digits Exponent ( FloatTypeSuffix )? | Digits ( Exponent )? FloatTypeSuffix )
  			int alt16=4;
  			alt16 = dfa16.predict(input);
  			switch (alt16) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1315:9: Digits '.' ( Digits )? ( Exponent )? ( FloatTypeSuffix )?
  					{
  					mDigits(); 
  
  					match('.'); 
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1315:20: ( Digits )?
  					int alt9=2;
  					int LA9_0 = input.LA(1);
  					if ( ((LA9_0 >= '0' && LA9_0 <= '9')) ) {
  						alt9=1;
  					}
  					switch (alt9) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1315:20: Digits
  							{
  							mDigits(); 
  
  							}
  							break;
  
  					}
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1315:28: ( Exponent )?
  					int alt10=2;
  					int LA10_0 = input.LA(1);
  					if ( (LA10_0=='E'||LA10_0=='e') ) {
  						alt10=1;
  					}
  					switch (alt10) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1315:28: Exponent
  							{
  							mExponent(); 
  
  							}
  							break;
  
  					}
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1315:38: ( FloatTypeSuffix )?
  					int alt11=2;
  					int LA11_0 = input.LA(1);
  					if ( (LA11_0=='D'||LA11_0=='F'||LA11_0=='d'||LA11_0=='f') ) {
  						alt11=1;
  					}
  					switch (alt11) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:
  							{
  							if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
  								input.consume();
  							}
  							else {
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1316:9: '.' Digits ( Exponent )? ( FloatTypeSuffix )?
  					{
  					match('.'); 
  					mDigits(); 
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1316:20: ( Exponent )?
  					int alt12=2;
  					int LA12_0 = input.LA(1);
  					if ( (LA12_0=='E'||LA12_0=='e') ) {
  						alt12=1;
  					}
  					switch (alt12) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1316:20: Exponent
  							{
  							mExponent(); 
  
  							}
  							break;
  
  					}
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1316:30: ( FloatTypeSuffix )?
  					int alt13=2;
  					int LA13_0 = input.LA(1);
  					if ( (LA13_0=='D'||LA13_0=='F'||LA13_0=='d'||LA13_0=='f') ) {
  						alt13=1;
  					}
  					switch (alt13) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:
  							{
  							if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
  								input.consume();
  							}
  							else {
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 3 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1317:9: Digits Exponent ( FloatTypeSuffix )?
  					{
  					mDigits(); 
  
  					mExponent(); 
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1317:25: ( FloatTypeSuffix )?
  					int alt14=2;
  					int LA14_0 = input.LA(1);
  					if ( (LA14_0=='D'||LA14_0=='F'||LA14_0=='d'||LA14_0=='f') ) {
  						alt14=1;
  					}
  					switch (alt14) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:
  							{
  							if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
  								input.consume();
  							}
  							else {
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 4 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1318:9: Digits ( Exponent )? FloatTypeSuffix
  					{
  					mDigits(); 
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1318:16: ( Exponent )?
  					int alt15=2;
  					int LA15_0 = input.LA(1);
  					if ( (LA15_0=='E'||LA15_0=='e') ) {
  						alt15=1;
  					}
  					switch (alt15) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1318:16: Exponent
  							{
  							mExponent(); 
  
  							}
  							break;
  
  					}
  
  					mFloatTypeSuffix(); 
  
  					}
  					break;
  
  			}
  			state.type = _type;
  			state.channel = _channel;
  		}
  		finally {
  			// do for sure before leaving
  		}
  	}