i am aware what the deal is with threads/CME but why is this code throwing an exception:
the method successors, takes the current state and adds all possible moves (making the move and saving the state) to an ArrayList and returns an Iterator. the line thats showing up as the trouble maker is the assignemnt, Node successor = (Node) it.next();. i'm sure i've used this sort of thing in a while loop before and not had these issues.
In a nutshell, the CME is thrown when you try to modify the container, while still iterating through the same container. (You can delete the current item through, requested through the iterator) There might be something within the loop that is calling something that is changing the same container that you are trying to iterate through.