def METHOD_NAME(cls, method: t.Callable[P, R]) -> t.Callable[P, Paginator[R]]:
    """
    This is an alternate method for getting a paginator for a paginated method which
    correctly preserves the type signature of the paginated method.
    It should be used on instances of clients and only passed bound methods of those
    clients. For example, given usage
        >>> tc = TransferClient()
        >>> paginator = tc.paginated.endpoint_search(...)
    a well-typed paginator can be acquired with
        >>> tc = TransferClient()
        >>> paginated_call = Paginator.wrap(tc.endpoint_search)
        >>> paginator = paginated_call(...)
    Although the syntax is slightly more verbose, this allows `mypy` and other type
    checkers to more accurately infer the type of the paginator.
    :param method: The method to convert to a paginator
    :type method: callable
    """
    if not inspect.ismethod(method):
        raise TypeError(f"Paginator.wrap can only be used on methods, not {method}")
    if not getattr(method, "_has_paginator", False):
        raise ValueError(f"'{method}' is not a paginated method")
    as_paginated = t.cast(_PaginatedFunc[PageT], method)
    paginator_class = as_paginated._paginator_class
    paginator_params = as_paginated._paginator_params
    paginator_items_key = as_paginated._paginator_items_key
    @functools.wraps(method)
    def paginated_method(*args: t.Any, **kwargs: t.Any) -> Paginator[PageT]:
        return paginator_class(
            method,
            client_args=list(args),
            client_kwargs=kwargs,
            items_key=paginator_items_key,
            **paginator_params,
        )
    return t.cast(t.Callable[P, Paginator[R]], paginated_method)