def METHOD_NAME(
    self, api_key=None, stripe_version=None, stripe_account=None, **params
) -> Self:
    if not self.has_more:
        return self.empty_list(
            api_key=api_key,
            stripe_version=stripe_version,
            stripe_account=stripe_account,
        )
    last_id = getattr(self.data[-1], "id")
    if not last_id:
        raise ValueError(
            "Unexpected: element in .data of list object had no id"
        )
    params_with_filters = self._retrieve_params.copy()
    params_with_filters.update({"starting_after": last_id})
    params_with_filters.update(params)
    result = self.list(
        api_key=api_key,
        stripe_version=stripe_version,
        stripe_account=stripe_account,
        **params_with_filters
    )
    assert isinstance(result, ListObject)
    return result