docs: public final JavaParser.variableDeclaratorRest_return variableDeclaratorRest() throws RecognitionException {
  		JavaParser.variableDeclaratorRest_return retval = new JavaParser.variableDeclaratorRest_return();
  		retval.start = input.LT(1);
  		int variableDeclaratorRest_StartIndex = input.index();
  
  		try {
  			if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return retval; }
  
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:477:5: ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer |)
  			int alt56=3;
  			switch ( input.LA(1) ) {
  			case 59:
  				{
  				alt56=1;
  				}
  				break;
  			case 54:
  				{
  				alt56=2;
  				}
  				break;
  			case EOF:
  			case 43:
  			case 52:
  				{
  				alt56=3;
  				}
  				break;
  			default:
  				if (state.backtracking>0) {state.failed=true; return retval;}
  				NoViableAltException nvae =
  					new NoViableAltException("", 56, 0, input);
  				throw nvae;
  			}
  			switch (alt56) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:477:7: ( '[' ']' )+ ( '=' variableInitializer )?
  					{
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:477:7: ( '[' ']' )+
  					int cnt54=0;
  					loop54:
  					while (true) {
  						int alt54=2;
  						int LA54_0 = input.LA(1);
  						if ( (LA54_0==59) ) {
  							alt54=1;
  						}
  
  						switch (alt54) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:477:8: '[' ']'
  							{
  							match(input,59,FOLLOW_59_in_variableDeclaratorRest1387); if (state.failed) return retval;
  							match(input,60,FOLLOW_60_in_variableDeclaratorRest1389); if (state.failed) return retval;
  							}
  							break;
  
  						default :
  							if ( cnt54 >= 1 ) break loop54;
  							if (state.backtracking>0) {state.failed=true; return retval;}
  							EarlyExitException eee = new EarlyExitException(54, input);
  							throw eee;
  						}
  						cnt54++;
  					}
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:477:18: ( '=' variableInitializer )?
  					int alt55=2;
  					int LA55_0 = input.LA(1);
  					if ( (LA55_0==54) ) {
  						alt55=1;
  					}
  					switch (alt55) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:477:19: '=' variableInitializer
  							{
  							match(input,54,FOLLOW_54_in_variableDeclaratorRest1394); if (state.failed) return retval;
  							pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1396);
  							variableInitializer();
  							state._fsp--;
  							if (state.failed) return retval;
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:478:7: '=' variableInitializer
  					{
  					match(input,54,FOLLOW_54_in_variableDeclaratorRest1406); if (state.failed) return retval;
  					pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1408);
  					variableInitializer();
  					state._fsp--;
  					if (state.failed) return retval;
  					}
  					break;
  				case 3 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:480:5: 
  					{
  					}
  					break;
  
  			}
  			retval.stop = input.LT(-1);
  
  		}
  		catch (RecognitionException re) {
  			reportError(re);
  			recover(input,re);
  		}
  		finally {
  			// do for sure before leaving
  			if ( state.backtracking>0 ) { memoize(input, 40, variableDeclaratorRest_StartIndex); }
  
  		}
  		return retval;
  	}