@@ -0,0 +1,1395 @@
+package com.github.dieterdepaepe.jsearch.search.statespace.util;%0A%0Aimport com.github.dieterdepaepe.jsearch.search.statespace.Manager;%0Aimport com.github.dieterdepaepe.jsearch.search.statespace.SearchNode;%0Aimport com.github.dieterdepaepe.jsearch.search.statespace.Solution;%0A%0A/**%0A * Basic implementation of %7B@code Manager%7D. It will instruct to continue searching until an optimal solution is found.%0A * Any intermediate solutions found will be passed as a cost bound to the solver in order to speed up the search.%0A * %3Cp/%3E%0A * This implementation is not thread-safe.%0A * @author Dieter De Paepe%0A */%0Apublic class BasicManager%3CT extends SearchNode%3E implements Manager%3CT%3E %7B%0A    private Solution%3C? extends T%3E bestSolutionSoFar;%0A%0A    public Solution%3C? extends T%3E getSolution() %7B%0A        return bestSolutionSoFar;%0A    %7D%0A%0A    @Override%0A    public boolean continueSearch() %7B%0A        return bestSolutionSoFar == null %7C%7C !bestSolutionSoFar.isOptimal();%0A    %7D%0A%0A    @Override%0A    public void registerSolution(Solution%3C? extends T%3E solution) %7B%0A        if (bestSolutionSoFar == null %7C%7C bestSolutionSoFar.getNode().getCost() %3E solution.getNode().getCost())%0A            bestSolutionSoFar = solution;%0A    %7D%0A%0A    @Override%0A    public double getCostBound() %7B%0A        if (bestSolutionSoFar == null)%0A            return Double.POSITIVE_INFINITY;%0A        else%0A            return bestSolutionSoFar.getNode().getCost();%0A    %7D%0A%7D%0A

Add implementation of Manager.