int[] currentCellCoords = new int[size.length];
for (int i = 0; i < size.length; i++) {
currentCellCoords[i] = 0;
}
CACell currentCell = new CACell(currentCellCoords, 0);
int cellNumber = 1; // Max number of cells
for (int element : size) {
cellNumber = cellNumber * element;
}
for (int i = 0; i < cellNumber; i++) {
result.add(currentCell.clone());
}
int[] temp;
currentCell = null;
int currentCellPosition = 0;
int last = 1;
for (int i = 0; i < size.length; i++) {
while (currentCellPosition < cellNumber) {
for (int j = 0; j < size[i]; j++) {
for (int k = 0; k < last; k++) {
currentCell = (CACell) result.get(currentCellPosition);
temp = currentCell.getPosition();
temp[i] = j;
currentCell.setPosition(temp);
if (i == size.length - 1) {
currentCell.setState(getState(temp));
}
result.set(currentCellPosition, currentCell);
currentCellPosition++;
}
}