CustomStepScope customStepScope = createNextStepScope(customSolverPhaseScope, null);
Iterator<CustomSolverPhaseCommand> commandIterator = customSolverPhaseCommandList.iterator();
while (!termination.isPhaseTerminated(customSolverPhaseScope) && commandIterator.hasNext()) {
CustomSolverPhaseCommand customSolverPhaseCommand = commandIterator.next();
customSolverPhaseCommand.changeWorkingSolution(solverScope.getScoreDirector());
Score score = customSolverPhaseScope.calculateScore();
customStepScope.setScore(score);
stepTaken(customStepScope);
customStepScope = createNextStepScope(customSolverPhaseScope, customStepScope);
}
phaseEnded(customSolverPhaseScope);