class_docstr: A collection of callbacks added to a Tornado IOLoop that can be removed
  as a group.
class_docstr_tok: ["A","collection","of","callbacks","added","to","a","Tornado","IOLoop","that","can","be","removed","as","a","group","."]
code: def _assign_remover(
      self,
      callback: Callback,
      callback_id: ID,
      removers: Removers,
      remover: Remover,
  ) -> None:
      with self._removers_lock:
          if callback_id in removers:
              raise ValueError(
                  "A callback of the same type has already been added with this ID"
              )
          removers[callback_id] = remover
  
imports: from __future__ import annotations
  import logging
  import sys
  import threading
  from collections import defaultdict
  from traceback import format_exception
  from typing import TYPE_CHECKING, Any, Awaitable, Callable, Union
  import tornado
  from tornado import gen
  from ..core.types import ID
label_desc: Use image node_id 4 for calling the _CallbackGroup obj's underlying member method code with example usage: obj._assign_remover(callback, callback_id, removers, remover) without return types