code: def _create_overflow(self, value: bytes) -> int:
      first_overflow_page = self._mem.next_available_page
      next_overflow_page = first_overflow_page
  
      iterator = utils.iter_slice(
          value, self.OverflowNode().max_payload
      )
      for slice_value, is_last in iterator:
          current_overflow_page = next_overflow_page
  
          if is_last:
              next_overflow_page = None
          else:
              next_overflow_page = self._mem.next_available_page
  
          overflow_node = self.OverflowNode(
              page=current_overflow_page, next_page=next_overflow_page
          )
          overflow_node.insert_entry_at_the_end(
              OpaqueData(data=slice_value)
          )
          self._mem.set_node(overflow_node)
  
      return first_overflow_page
  
imports: from functools import partial
  from logging import getLogger
  from typing import Optional, Union, Iterator, Iterable
  from .None import utils
  from .const import TreeConf
  from .entry import Record, Reference, OpaqueData
  from .memory import FileMemory
  from .node import Node, LonelyRootNode, RootNode, InternalNode, LeafNode, OverflowNode
  from .serializer import Serializer, IntSerializer
label_desc: Use image node_id 28 for calling the BPlusTree obj's underlying member method code with example usage: obj._create_overflow(value) and returns: first_overflow_page