code: def set_metadata(
      self, root_node_page: Optional[int], tree_conf: Optional[TreeConf]
  ):
      if root_node_page is None:
          root_node_page = self._root_node_page
  
      if tree_conf is None:
          tree_conf = self._tree_conf
  
      length = 2 * PAGE_REFERENCE_BYTES + 4 * OTHERS_BYTES
      data = (
          root_node_page.to_bytes(PAGE_REFERENCE_BYTES, ENDIAN)
          + tree_conf.page_size.to_bytes(OTHERS_BYTES, ENDIAN)
          + tree_conf.order.to_bytes(OTHERS_BYTES, ENDIAN)
          + tree_conf.key_size.to_bytes(OTHERS_BYTES, ENDIAN)
          + tree_conf.value_size.to_bytes(OTHERS_BYTES, ENDIAN)
          + self._freelist_start_page.to_bytes(
              PAGE_REFERENCE_BYTES, ENDIAN
          )
          + bytes(tree_conf.page_size - length)
      )
      self._write_page_in_tree(0, data, fsync=True)
  
      self._tree_conf = tree_conf
      self._root_node_page = root_node_page
  
imports: import enum
  import io
  from logging import getLogger
  import os
  import platform
  from typing import Union, Tuple, Optional
  import cachetools
  import rwlock
  from .node import Node, FreelistNode
  from .const import ENDIAN, PAGE_REFERENCE_BYTES, OTHERS_BYTES, TreeConf, FRAME_TYPE_BYTES
label_desc: Use image node_id 13 for calling the FileMemory obj's underlying member method code with example usage: obj.set_metadata(root_node_page, tree_conf) without return types