for (Iterator holdIt = holding.holdingArrayList.iterator(); holdIt.hasNext();){ //We are going to create multiple clones of the puzzle. One for each possible //Node value. Object o = holdIt.next(); System.err.println("Poss Val: "+o.toString()); ArrayList cloned = (ArrayList) starterCopy.clone(); //for (Iterator stIt = cloned.iterator(); stIt.hasNext();){ for (int i = 0; i < cloned.size(); i++){ //Object p = stIt.next(); //Clone the pacls cloned.set(i, (PanelArrayListCombined)((PanelArrayListCombined)cloned.get(i)).clone()); //for each pacl we need to clone (and set the values of) each ArrayList } }