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<PanelArrayListCombined> cloned = (ArrayList<PanelArrayListCombined>) starterCopy.clone();
//for (Iterator stIt = cloned.iterator(); stIt.hasNext();){
for (int i = 0; i < cloned.size(); i++){
//Clone the pacls
cloned.set(i, (PanelArrayListCombined)((PanelArrayListCombined)cloned.get(i)).clone());
cloned.get(i).holdingArrayList = (ArrayList) cloned.get(i).holdingArrayList.clone();
//Clone the contents of the ArrayList
for (int j = 0; j < cloned.get(i).holdingArrayList.size(); j++){
cloned.get(i).holdingArrayList.set(j, (Integer)cloned.get(i).holdingArrayList.get(j).clone());
}
}
}
#########################################
clone() has protected access in java.lang.Object
cloned.get(i).holdingArrayList.set(j, (Integer)cloned.get(i).holdingA rrayList.get(j).clone());
^