moveScope.setUndoMove(undoMove);
move.doMove(workingMemory);
processMove(moveScope);
undoMove.doMove(workingMemory);
if (assertUndoMoveIsUncorrupted) {
Score undoScore = moveScope.getLocalSearchStepScope().getLocalSearchSolverScope().calculateScoreFromWorkingMemory();
Score lastCompletedStepScore = moveScope.getLocalSearchStepScope().getLocalSearchSolverScope()
.getLastCompletedLocalSearchStepScope().getScore();
if (!undoScore.equals(lastCompletedStepScore)) {
throw new IllegalStateException(
"Corrupted undo move (" + undoMove + ") received from move (" + move + ").\n"
+ "Unequal lastCompletedStepScore (" + lastCompletedStepScore + ") and undoScore ("