def METHOD_NAME(self, specs, pkg_cache_path=None):
    """Solve given a set of specs.
    Parameters
    ----------
    specs : list of str
        A list of package specs. You can use `conda.models.match_spec.MatchSpec`
        to get them to the right form by calling
        `MatchSpec(mypec).conda_build_form()`
    Returns
    -------
    transaction : libmambapy.Transaction
        The mamba transaction.
    Raises
    ------
    RuntimeError :
        If the solver did not find a solution.
    """
    solver_options = [(libmambapy.SOLVER_FLAG_ALLOW_DOWNGRADE, 1)]
    api_solver = libmambapy.Solver(self.pool, solver_options)
    _specs = specs
    api_solver.add_jobs(_specs, libmambapy.SOLVER_INSTALL)
    success = api_solver.try_solve()
    if not success:
        error_string = "Mamba failed to solve:\n"
        for s in _specs:
            error_string += f" - {s}\n"
        error_string += "\nwith channels:\n"
        for c in self.channels:
            error_string += f" - {c}\n"
        error_string += api_solver.explain_problems()
        print(error_string)
        raise RuntimeError("Solver could not find solution." + error_string)
    if pkg_cache_path is None:
        # use values from conda
        pkg_cache_path = self.context.pkgs_dirs
    package_cache = libmambapy.MultiPackageCache(pkg_cache_path)
    return libmambapy.Transaction(api_solver, package_cache)