@Override
    public Solution_ solve(Solution_ problem) {
        solverScope.initializeYielding();
        try {
            solverScope.setBestSolution(problem);
            solvingStarted(solverScope);
            runPhases(solverScope);
            solvingEnded(solverScope);
            return solverScope.getBestSolution();
        } finally {
            solverScope.destroyYielding();
        }
    }
@Override
    public Solution_ solve(Solution_ problem) {
        solverScope.initializeYielding();
        try {
            solverScope.setBestSolution(problem);
            solvingStarted(solverScope);
            runPhases(solverScope);
            solvingEnded(solverScope);
            return solverScope.getBestSolution();
        } finally {
            solverScope.destroyYielding();
        }
    }
@ Override public Solution_ solve ( Solution_ problem ) { solverScope . initializeYielding ( ) ; try { solverScope . setBestSolution ( problem ) ; solvingStarted ( solverScope ) ; runPhases ( solverScope ) ; solvingEnded ( solverScope ) ; return solverScope . getBestSolution ( ) ; } finally { solverScope . destroyYielding ( ) ; } }
************************************************************************
************************************************************************