added = true; changed.put(self, Boolean.TRUE);
    private void recordArrayInit(JArrayInitializer arrInit,                                  JVariableDefinition self)     {        if (arrInit.getElems().length == 0)            return;            if (write)            self.setExpression(arrInit);            //NOTE: only handle 1 or 2 dimensional rectangular arrays right now        if (!(arrInit.getElems()[0] instanceof JArrayInitializer)) {                    int dim1 = arrInit.getElems().length;                    // only propagate arrays if they are under a threshold size            if (dim1 < MAX_ARRAY_SIZE) {                Object[] array = new Object[dim1];                        for (int i = 0; i < arrInit.getElems().length; i++) {                    if (!(arrInit.getElems()[i] instanceof JLiteral)) {                        System.err.println("WARNING: Only rectangular one or two dimensional array" +                                            "initializers of literals supported in constant prop... ");                        return;                    }                                array[i] = arrInit.getElems()[i];                }                constants.put(self, array);                added = true;                changed.put(self, Boolean.TRUE);                return;            }        }  //now look for 2 dimensional rectangular arrays        else if (arrInit.getElems()[0] instanceof JArrayInitializer &&                 ((JArrayInitializer)arrInit.getElems()[0]).getElems().length > 0 &&                 !(((JArrayInitializer)arrInit.getElems()[0]).getElems()[0] instanceof JArrayInitializer)) {            int dim1 = arrInit.getElems().length;            int dim2 = ((JArrayInitializer)arrInit.getElems()[0]).getElems().length;            int numElements = dim1*dim2;            // only propagate arrays if they are under a threshold size            if (numElements < MAX_ARRAY_SIZE) {                        Object[][] array = new Object[dim1][dim2];                        for (int i = 0; i < array.length; i++) {                    //check each element of the 1st dim to make sure it is an array init and it has                     //the same number of elements...                    if (!(arrInit.getElems()[i] instanceof JArrayInitializer) ||                        ((JArrayInitializer)arrInit.getElems()[i]).getElems().length != array[0].length) {                        System.err.println("WARNING: Only rectangular one or two dimensional array" +                                            "initializers of literals supported in constant prop... ");                        return;                    }                       for (int j = 0; j < array[0].length; j++) {                        //now place each initial val in the array we are placing in the hash table                        array[i][j] = ((JArrayInitializer)arrInit.getElems()[i]).getElems()[j];                    }                }                        constants.put(self, array);                added = true;                changed.put(self, Boolean.TRUE);                return;            }        }        System.err.println("WARNING: Only rectangular one or two dimensional array" +                            "initializers of literals supported in constant prop... ");    }