}
public void fireBestSolutionChanged(Solution newBestSolution, int newUninitializedVariableCount) {
final Iterator<SolverEventListener> it = getEventListenersIterator();
if (it.hasNext()) {
final BestSolutionChangedEvent event = new BestSolutionChangedEvent(solver,
solver.getSolverScope().calculateTimeMillisSpent(), newBestSolution, newUninitializedVariableCount);
do {
it.next().bestSolutionChanged(event);
} while (it.hasNext());
}