def get_solver(self, name=None, refresh=False, **filters):
        _LOGGER.debug("Requested a solver that best matches feature filters=%r", filters)
        if name is not None:
            filters.setdefault('name', name)
        if not filters and self.default_solver:
            filters = self.default_solver
        try:
            _LOGGER.debug("Fetching solvers according to filters=%r", filters)
            return self.get_solvers(refresh=refresh, **filters)[0]
        except IndexError:
            raise SolverNotFoundError("Solver with the requested features not available")