docs: public final void arrayCreatorRest() throws RecognitionException {
  		int arrayCreatorRest_StartIndex = input.index();
  
  		try {
  			if ( state.backtracking>0 && alreadyParsedRule(input, 133) ) { return; }
  
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1260:5: ( '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) )
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1260:7: '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
  			{
  			match(input,59,FOLLOW_59_in_arrayCreatorRest6097); if (state.failed) return;
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1261:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
  			int alt184=2;
  			int LA184_0 = input.LA(1);
  			if ( (LA184_0==60) ) {
  				alt184=1;
  			}
  			else if ( ((LA184_0 >= CharacterLiteral && LA184_0 <= DecimalLiteral)||LA184_0==FloatingPointLiteral||(LA184_0 >= HexLiteral && LA184_0 <= Identifier)||(LA184_0 >= OctalLiteral && LA184_0 <= StringLiteral)||LA184_0==29||LA184_0==36||(LA184_0 >= 40 && LA184_0 <= 41)||(LA184_0 >= 44 && LA184_0 <= 45)||LA184_0==53||LA184_0==65||LA184_0==67||(LA184_0 >= 70 && LA184_0 <= 71)||LA184_0==77||(LA184_0 >= 79 && LA184_0 <= 80)||LA184_0==82||LA184_0==85||LA184_0==92||LA184_0==94||(LA184_0 >= 97 && LA184_0 <= 98)||LA184_0==105||LA184_0==108||LA184_0==111||LA184_0==115||LA184_0==118||LA184_0==126) ) {
  				alt184=2;
  			}
  
  			else {
  				if (state.backtracking>0) {state.failed=true; return;}
  				NoViableAltException nvae =
  					new NoViableAltException("", 184, 0, input);
  				throw nvae;
  			}
  
  			switch (alt184) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1261:13: ']' ( '[' ']' )* arrayInitializer
  					{
  					match(input,60,FOLLOW_60_in_arrayCreatorRest6111); if (state.failed) return;
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1261:17: ( '[' ']' )*
  					loop181:
  					while (true) {
  						int alt181=2;
  						int LA181_0 = input.LA(1);
  						if ( (LA181_0==59) ) {
  							alt181=1;
  						}
  
  						switch (alt181) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1261:18: '[' ']'
  							{
  							match(input,59,FOLLOW_59_in_arrayCreatorRest6114); if (state.failed) return;
  							match(input,60,FOLLOW_60_in_arrayCreatorRest6116); if (state.failed) return;
  							}
  							break;
  
  						default :
  							break loop181;
  						}
  					}
  
  					pushFollow(FOLLOW_arrayInitializer_in_arrayCreatorRest6120);
  					arrayInitializer();
  					state._fsp--;
  					if (state.failed) return;
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1262:13: expression ']' ( '[' expression ']' )* ( '[' ']' )*
  					{
  					pushFollow(FOLLOW_expression_in_arrayCreatorRest6134);
  					expression();
  					state._fsp--;
  					if (state.failed) return;
  					match(input,60,FOLLOW_60_in_arrayCreatorRest6136); if (state.failed) return;
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1262:28: ( '[' expression ']' )*
  					loop182:
  					while (true) {
  						int alt182=2;
  						int LA182_0 = input.LA(1);
  						if ( (LA182_0==59) ) {
  							switch ( input.LA(2) ) {
  							case 40:
  								{
  								int LA182_33 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 44:
  								{
  								int LA182_34 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 41:
  								{
  								int LA182_35 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 45:
  								{
  								int LA182_36 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 126:
  								{
  								int LA182_37 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 29:
  								{
  								int LA182_38 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 36:
  								{
  								int LA182_39 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 53:
  								{
  								int LA182_40 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 111:
  								{
  								int LA182_41 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 108:
  								{
  								int LA182_42 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 80:
  								{
  								int LA182_43 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 79:
  								{
  								int LA182_44 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 70:
  								{
  								int LA182_45 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case DecimalLiteral:
  							case HexLiteral:
  							case OctalLiteral:
  								{
  								int LA182_46 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case FloatingPointLiteral:
  								{
  								int LA182_47 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case CharacterLiteral:
  								{
  								int LA182_48 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case StringLiteral:
  								{
  								int LA182_49 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 82:
  							case 115:
  								{
  								int LA182_50 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 98:
  								{
  								int LA182_51 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 97:
  								{
  								int LA182_52 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case Identifier:
  								{
  								int LA182_53 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 65:
  							case 67:
  							case 71:
  							case 77:
  							case 85:
  							case 92:
  							case 94:
  							case 105:
  								{
  								int LA182_54 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							case 118:
  								{
  								int LA182_55 = input.LA(3);
  								if ( (synpred286_Java()) ) {
  									alt182=1;
  								}
  
  								}
  								break;
  							}
  						}
  
  						switch (alt182) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1262:29: '[' expression ']'
  							{
  							match(input,59,FOLLOW_59_in_arrayCreatorRest6139); if (state.failed) return;
  							pushFollow(FOLLOW_expression_in_arrayCreatorRest6141);
  							expression();
  							state._fsp--;
  							if (state.failed) return;
  							match(input,60,FOLLOW_60_in_arrayCreatorRest6143); if (state.failed) return;
  							}
  							break;
  
  						default :
  							break loop182;
  						}
  					}
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1262:50: ( '[' ']' )*
  					loop183:
  					while (true) {
  						int alt183=2;
  						int LA183_0 = input.LA(1);
  						if ( (LA183_0==59) ) {
  							int LA183_30 = input.LA(2);
  							if ( (LA183_30==60) ) {
  								alt183=1;
  							}
  
  						}
  
  						switch (alt183) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1262:51: '[' ']'
  							{
  							match(input,59,FOLLOW_59_in_arrayCreatorRest6148); if (state.failed) return;
  							match(input,60,FOLLOW_60_in_arrayCreatorRest6150); if (state.failed) return;
  							}
  							break;
  
  						default :
  							break loop183;
  						}
  					}
  
  					}
  					break;
  
  			}
  
  			}
  
  		}
  		catch (RecognitionException re) {
  			reportError(re);
  			recover(input,re);
  		}
  		finally {
  			// do for sure before leaving
  			if ( state.backtracking>0 ) { memoize(input, 133, arrayCreatorRest_StartIndex); }
  
  		}
  	}