def _node_type_offset_list(self) -> Optional[list]:
        """Returns the node type offset list if present.

        Returns
        -------
        list or None
            If present, returns a 1D integer list of shape
            `(num_node_types + 1,)`. The list is in ascending order as nodes
            of the same type have continuous IDs, and larger node IDs are
            paired with larger node type IDs. The first value is 0 and last
            value is the number of nodes. And nodes with IDs between
            `node_type_offset_[i]~node_type_offset_[i+1]` are of type id 'i'.

        """
        if (
            not hasattr(self, "_node_type_offset_cached_list")
            or self._node_type_offset_cached_list is None
        ):
            self._node_type_offset_cached_list = self.node_type_offset
            if self._node_type_offset_cached_list is not None:
                self._node_type_offset_cached_list = (
                    self._node_type_offset_cached_list.tolist()
                )
        return self._node_type_offset_cached_list
Returns the node type offset list if present.

        Returns
        -------
        list or None
            If present, returns a 1D integer list of shape
            `(num_node_types + 1,)`. The list is in ascending order as nodes
            of the same type have continuous IDs, and larger node IDs are
            paired with larger node type IDs. The first value is 0 and last
            value is the number of nodes. And nodes with IDs between
            `node_type_offset_[i]~node_type_offset_[i+1]` are of type id 'i'.

        
python/dgl/graphbolt/impl/fused_csc_sampling_graph.py