@Override
public void stepEnded(AbstractStepScope stepScope) {
long timeMillisSpend = stepScope.getPhaseScope().calculateSolverTimeMillisSpend();
if (timeMillisSpend >= nextTimeMillisThreshold) {
DefaultSolverScope solverScope = stepScope.getPhaseScope().getSolverScope();
long calculateCount = solverScope.getCalculateCount();
long calculateCountInterval = calculateCount - lastCalculateCount;
long timeMillisSpendInterval = timeMillisSpend - lastTimeMillisSpend;
if (timeMillisSpendInterval == 0L) {
// Avoid divide by zero exception on a fast CPU
timeMillisSpendInterval = 1L;