@Override public List<SearchNode<RobotPuzzle, RobotMove>> getSuccessors( SearchNode<RobotPuzzle, RobotMove> s) { ArrayList<SearchNode<RobotPuzzle, RobotMove>> successors = new ArrayList<SearchNode<RobotPuzzle, RobotMove>>(); RobotPuzzle current = s.getState(); for (int i = 0; i < 4; i++) { if (isPossibleMove(new RobotMove(i))) { RobotPuzzle successor = new RobotPuzzle(current); successor.performAction(new RobotMove(i)); successors.add(new SearchNode<RobotPuzzle, RobotMove>(s, new RobotMove(i), successor)); } } return successors; }