docs: def execute(self, **minimizer_kwargs):
          """
          Execute the chained-minimization. In order to pass options to the
          seperate minimizers, they can  be passed by using the
          names of the minimizers as keywords. For example::
  
              fit = Fit(self.model, self.xx, self.yy, self.ydata,
                        minimizer=[DifferentialEvolution, BFGS])
              fit_result = fit.execute(
                  DifferentialEvolution={'seed': 0, 'tol': 1e-4, 'maxiter': 10},
                  BFGS={'tol': 1e-4}
              )
  
          In case of multiple identical minimizers an index is added to each
          keyword argument to make them identifiable. For example, if::
  
              minimizer=[BFGS, DifferentialEvolution, BFGS])
  
          then the keyword arguments will be 'BFGS', 'DifferentialEvolution',
          and 'BFGS_2'.
  
          :param minimizer_kwargs: Minimizer options to be passed to the
              minimzers by name
          :return:  an instance of :class:`~symfit.core.fit_results.FitResults`.
          """
          bound_arguments = self.__signature__.bind(**minimizer_kwargs)
          # Include default values in bound_argument object.
          # Start from a new OrderedDict to guarantee ordering.
          arguments = OrderedDict()
          for param in self.__signature__.parameters.values():
              if param.name in bound_arguments.arguments:
                  arguments[param.name] = bound_arguments.arguments[param.name]
              else:
                  arguments[param.name] = param.default
          bound_arguments.arguments = arguments
  
          answers = []
          next_guess = self.initial_guesses
          for minimizer, kwargs in zip(self.minimizers, bound_arguments.arguments.values()):
              minimizer.initial_guesses = next_guess
              ans = minimizer.execute(**kwargs)
              next_guess = list(ans.params.values())
              answers.append(ans)
          final = answers[-1]
          # TODO: Compile all previous results in one, instead of just the
          # number of function evaluations. But there's some code down the
          # line that expects scalars.
          final.infodict['nfev'] = sum(ans.infodict['nfev'] for ans in answers)
          return final