code: def next_page_info(self) -> Optional[PageInfo]:
      data = self.data
      if not data:
          return None
  
      item = cast(Any, data[-1])
      if not isinstance(item, CursorPageItem) or item.id is None:
          # TODO emit warning log
          return None
  
      return PageInfo(params={"after": item.id})
  
imports: from typing import Any, List, Generic, TypeVar, Optional, cast
  from typing_extensions import Protocol, override, runtime_checkable
  from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
label_desc: Use image node_id 2 for calling the SyncCursorPage obj's underlying member method code with example usage: obj.next_page_info() and returns: PageInfo, None, None