code: def bfs_base_table(
      root: BaseTable,
      root_accessor: Optional[str] = None,
      skip_root: bool = False,
      predicate: Optional[Callable[[SubTablePath], bool]] = None,
      iter_subtables_fn: Optional[
          Callable[[BaseTable], Iterable[BaseTable.SubTableEntry]]
      ] = None,
  ) -> Iterable[SubTablePath]:
      """Breadth-first search tree of BaseTables.
  
      Args:
      the root of the tree.
          root_accessor (Optional[str]): attribute name for the root table, if any (mostly
              useful for debugging).
          skip_root (Optional[bool]): if True, the root itself is not visited, only its
              children.
          predicate (Optional[Callable[[SubTablePath], bool]]): function to filter out
              paths. If True, the path is yielded and its subtables are added to the
              queue. If False, the path is skipped and its subtables are not traversed.
          iter_subtables_fn (Optional[Callable[[BaseTable], Iterable[BaseTable.SubTableEntry]]]):
              function to iterate over subtables of a table. If None, the default
              BaseTable.iterSubTables() is used.
  
      Yields:
          SubTablePath: tuples of BaseTable.SubTableEntry(name, table, index) namedtuples
          for each of the nodes in the tree. The last entry in a path is the current
          subtable, whereas preceding ones refer to its parent tables all the way up to
          the root.
      """
      yield from _traverse_ot_data(
          root,
          root_accessor,
          skip_root,
          predicate,
          lambda frontier, new: frontier.extend(new),
          iter_subtables_fn,
      )
  
file_path: catboost/contrib/python/fonttools/fontTools/ttLib/tables/otTraverse.py
imports: from collections import deque
  from typing import Callable, Deque, Iterable, List, Optional, Tuple
  from .otBase import BaseTable
label_desc: Use image node_id 2 for calling a global function with example usage: bfs_base_table(root, root_accessor, skip_root, predicate, iter_subtables_fn) without return types