def METHOD_NAME(self) -> dict[str, Any]:
    options = self._options.copy()
    if hasattr(self, "_OPTIONS"):
        # all _OPTIONS should be keys in self._options, but add a failsafe here
        attributes = [
            option
            for option in self._OPTIONS  # pylint: disable=no-member
            if option in options.keys()
        ]
        METHOD_NAME = {attr: options.pop(attr) for attr in attributes}
    else:
        METHOD_NAME = {}
    METHOD_NAME["max_evals_grouped"] = self._max_evals_grouped
    METHOD_NAME["options"] = options
    METHOD_NAME.update(self._kwargs)
    # the subclasses don't need the "method" key as the class type specifies the method
    if self.__class__ == SciPyOptimizer:
        METHOD_NAME["method"] = self._method
    return METHOD_NAME