code: def _incref_tileables(
      self, tileable_keys: List[str], counts: List[int] = None
  ):
      counts = counts if counts is not None else itertools.repeat(1)
      for tileable_key, count in zip(tileable_keys, counts):
          if tileable_key not in self._tileable_key_to_chunk_keys:
              raise TileableNotTracked(
                  f"tileable {tileable_key} not tracked before"
              )
          self._tileable_ref_counts[tileable_key] += count
          incref_chunk_keys = self._tileable_key_to_chunk_keys[
              tileable_key
          ]
          # incref chunks for this tileable
          logger.debug(
              "Incref chunks %.500s while increfing tileable %s",
              incref_chunk_keys,
              tileable_key,
          )
          chunk_counts = (
              None if count == 1 else [count] * len(incref_chunk_keys)
          )
          self._incref_chunks(incref_chunk_keys, counts=chunk_counts)
  
imports: import asyncio
  import itertools
  import logging
  from collections import defaultdict
  from typing import Dict, List, Optional
  from ....None import oscar
  from ....lib.aio import alru_cache
  from ...meta.api import MetaAPI
  from ...storage.api import StorageAPI
  from ..errors import TileableNotTracked
label_desc: Use image node_id 9 for calling the LifecycleTrackerActor obj's underlying member method code with example usage: obj._incref_tileables(tileable_keys, counts) without return types