def METHOD_NAME(
    self,
    sync_mode: SyncMode,
    cursor_field: List[str] = None,
    stream_slice: Mapping[str, Any] = None,
    stream_state: Mapping[str, Any] = None,
) -> Iterable[Mapping[str, Any]]:
    stream_state = stream_state or {}
    pagination_complete = False
    next_page_token = None
    if self.is_read_limit_reached():
        return iter(())
    while not pagination_complete:
        params = self.request_params(stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token)
        response = self.send_request(**params)
        next_page_token = self.next_page_token(response)
        if not next_page_token:
            pagination_complete = True
        for record in self.parse_response(response):
            yield record
            self.records_left -= 1
            if self.is_read_limit_reached():
                return iter(())
    yield from []