access, (JExpression)indices.get(j));
prefix, (JExpression)indices.get(0));  for (int j = 1; j <= indices.size() - 1; j++) { access = new JArrayAccessExpression(null, access, (JExpression)indices.get(j)); }  access = new JArrayAccessExpression(null, access, new JIntLiteral(i));
    private void arrayInitBlock(Object varAccess, JArrayInitializer init, JBlock block, 				Vector indices)    {	for (int i = 0; i < init.getElems().length; i++) {	    //recurse through the array initializer statements, building	    //the array access indices as we recurse	    if (init.getElems()[i] instanceof JArrayInitializer) {		Vector indices1 = new Vector(indices);		indices1.add(new JIntLiteral(i));		arrayInitBlock(varAccess, (JArrayInitializer)init.getElems()[i], block,				    indices1);	    }	    else {		//otherwise we have an expression that is supposed to be assigned		//to the calculated array element		JExpression prefix;				assert varAccess instanceof String || varAccess instanceof JLocalVariable;				if (varAccess instanceof String)		    prefix = new JFieldAccessExpression((String)varAccess);		else 		    prefix = new JLocalVariableExpression(null,							  (JLocalVariable)varAccess);		// RMR {		/* the  code   below  will   reverse  the  order   of  the		 * dimmensions in an array expression; this is a bug!		 *		   //build the final array access expression 		   JArrayAccessExpression access = 			 new JArrayAccessExpression(null, 							    prefix,							    new JIntLiteral(i));		   //build the remaining, from bottom up		   for (int j = indices.size() - 1; j >= 0; j--) {			 access = new JArrayAccessExpression(null, 									 access,									 (JExpression)indices.get(j));		   }				 * the  follow code  will produce  the dimmensions  in the		 * proper order:  the prefix is the  variable name, append		 * to that the  first dimmension and then in  the loop add		 * every  other  dimmension but  the  last; following  the		 * loop, add the very  last dimmension		 */		//build the final array access expression, top down		JArrayAccessExpression access = 		    new JArrayAccessExpression(null, 							 prefix,							 (JExpression)indices.get(0));				for (int j = 1; j <= indices.size() - 1; j++) {		    access = new JArrayAccessExpression(null, 								    access,								    (JExpression)indices.get(j));		}				access = new JArrayAccessExpression(null, access, new JIntLiteral(i));		// } RMR				//only handle constant initializers for now		assert (Utils.passThruParens(init.getElems()[i]) instanceof JLiteral) : 		    "Error: Currently we only handle constant array initializers.";			 		//generate the assignment statement 		block.addStatement(new JExpressionStatement				   (null,				    new JAssignmentExpression(null,							      access,							      init.getElems()[i]),				    null));	    }	}    }