code: def _get_decref_chunk_keys(
      self, tileable_keys: List[str], counts: List[int] = None
  ) -> Dict[str, int]:
      decref_chunk_keys = dict()
      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
  
          for chunk_key in self._tileable_key_to_chunk_keys[
              tileable_key
          ]:
              if chunk_key not in decref_chunk_keys:
                  decref_chunk_keys[chunk_key] = count
              else:
                  decref_chunk_keys[chunk_key] += count
      logger.debug(
          "Decref chunks %.500s while decrefing tileables %s",
          decref_chunk_keys,
          tileable_keys,
      )
      return decref_chunk_keys
  
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 10 for calling the LifecycleTrackerActor obj's underlying member method code with example usage: obj._get_decref_chunk_keys(tileable_keys, counts) and returns: decref_chunk_keys