docs: public final void arrayInitializer() throws RecognitionException {
  		int arrayInitializer_StartIndex = input.index();
  
  		try {
  			if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return; }
  
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:5: ( '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' )
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:7: '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}'
  			{
  			match(input,121,FOLLOW_121_in_arrayInitializer1534); if (state.failed) return;
  			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:11: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?
  			int alt63=2;
  			int LA63_0 = input.LA(1);
  			if ( ((LA63_0 >= CharacterLiteral && LA63_0 <= DecimalLiteral)||LA63_0==FloatingPointLiteral||(LA63_0 >= HexLiteral && LA63_0 <= Identifier)||(LA63_0 >= OctalLiteral && LA63_0 <= StringLiteral)||LA63_0==29||LA63_0==36||(LA63_0 >= 40 && LA63_0 <= 41)||(LA63_0 >= 44 && LA63_0 <= 45)||LA63_0==53||LA63_0==65||LA63_0==67||(LA63_0 >= 70 && LA63_0 <= 71)||LA63_0==77||(LA63_0 >= 79 && LA63_0 <= 80)||LA63_0==82||LA63_0==85||LA63_0==92||LA63_0==94||(LA63_0 >= 97 && LA63_0 <= 98)||LA63_0==105||LA63_0==108||LA63_0==111||LA63_0==115||LA63_0==118||LA63_0==121||LA63_0==126) ) {
  				alt63=1;
  			}
  			switch (alt63) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:12: variableInitializer ( ',' variableInitializer )* ( ',' )?
  					{
  					pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1537);
  					variableInitializer();
  					state._fsp--;
  					if (state.failed) return;
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:32: ( ',' variableInitializer )*
  					loop61:
  					while (true) {
  						int alt61=2;
  						int LA61_0 = input.LA(1);
  						if ( (LA61_0==43) ) {
  							int LA61_1 = input.LA(2);
  							if ( ((LA61_1 >= CharacterLiteral && LA61_1 <= DecimalLiteral)||LA61_1==FloatingPointLiteral||(LA61_1 >= HexLiteral && LA61_1 <= Identifier)||(LA61_1 >= OctalLiteral && LA61_1 <= StringLiteral)||LA61_1==29||LA61_1==36||(LA61_1 >= 40 && LA61_1 <= 41)||(LA61_1 >= 44 && LA61_1 <= 45)||LA61_1==53||LA61_1==65||LA61_1==67||(LA61_1 >= 70 && LA61_1 <= 71)||LA61_1==77||(LA61_1 >= 79 && LA61_1 <= 80)||LA61_1==82||LA61_1==85||LA61_1==92||LA61_1==94||(LA61_1 >= 97 && LA61_1 <= 98)||LA61_1==105||LA61_1==108||LA61_1==111||LA61_1==115||LA61_1==118||LA61_1==121||LA61_1==126) ) {
  								alt61=1;
  							}
  
  						}
  
  						switch (alt61) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:33: ',' variableInitializer
  							{
  							match(input,43,FOLLOW_43_in_arrayInitializer1540); if (state.failed) return;
  							pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1542);
  							variableInitializer();
  							state._fsp--;
  							if (state.failed) return;
  							}
  							break;
  
  						default :
  							break loop61;
  						}
  					}
  
  					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:59: ( ',' )?
  					int alt62=2;
  					int LA62_0 = input.LA(1);
  					if ( (LA62_0==43) ) {
  						alt62=1;
  					}
  					switch (alt62) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:500:60: ','
  							{
  							match(input,43,FOLLOW_43_in_arrayInitializer1547); if (state.failed) return;
  							}
  							break;
  
  					}
  
  					}
  					break;
  
  			}
  
  			match(input,125,FOLLOW_125_in_arrayInitializer1554); if (state.failed) return;
  			}
  
  		}
  		catch (RecognitionException re) {
  			reportError(re);
  			recover(input,re);
  		}
  		finally {
  			// do for sure before leaving
  			if ( state.backtracking>0 ) { memoize(input, 45, arrayInitializer_StartIndex); }
  
  		}
  	}