code: def _wrap_add_nodes(self, add_nodes: Callable):
      @functools.wraps(add_nodes)
      def inner(
          chunk_graph: ChunkGraph,
          chunks: List[ChunkType],
          visited: Set[ChunkType],
          tileable: TileableType,
      ):
          prev_chunks = set(chunk_graph)
          add_nodes(chunk_graph, chunks, visited)
          new_chunks = set(chunk_graph)
          self._tile_context.record_tileable_tile_info(
              tileable, self._curr_iter, list(new_chunks - prev_chunks)
          )
  
      return inner
  
imports: import dataclasses
  import functools
  from typing import Callable, Dict, Generator, Iterable, List, Optional, Set, Type, Union
  from ....core import FUSE_CHUNK_TYPE, CHUNK_TYPE, TILEABLE_TYPE
  from ....typing import EntityType, TileableType, ChunkType
  from ....utils import copy_tileables, build_fetch
  from ...entity.tileables import handler
  from ...mode import enter_mode
  from ..entity import TileableGraph, ChunkGraph
  from .base import AbstractGraphBuilder
label_desc: Use image node_id 2 for calling the Tiler obj's underlying member method code with example usage: obj._wrap_add_nodes(add_nodes) and returns: inner