class_docstr: Store a mapping from keys to multiple values with minimal overhead.
  
  Avoids storing empty collections.
code: def add_value(self, key: K, value: V) -> None:
      """ """
      if key is None:
          raise ValueError("Key is None")
  
      if value is None:
          raise ValueError("Can't put None in this dict")
  
      if isinstance(value, set):
          raise ValueError("Can't put sets in this dict")
  
      existing = self._dict.get(key)
      if existing is None:
          self._dict[key] = value
      elif isinstance(existing, set):
          cast(set[V], existing).add(
              value
          )  # XXX: V does not exclude `set[_]`
      else:
          self._dict[key] = {existing, value}
  
file_path: bokeh/src/bokeh/util/datatypes.py
imports: from __future__ import annotations
  import logging
  from typing import Generic, TypeVar, cast
label_desc: Use image node_id 2 for calling the MultiValuedDict obj's underlying member method code with example usage: obj.add_value(key, value) without return types