class_docstr: KeyBindings class that can dynamically returns any KeyBindings.
  
  :param get_key_bindings: Callable that returns a :class:`.KeyBindings` instance.
code: def _update_cache(self) -> None:
      key_bindings = self.get_key_bindings() or self._dummy
      assert isinstance(key_bindings, KeyBindingsBase)
      version = id(key_bindings), key_bindings._version
  
      self._bindings2 = key_bindings
      self._last_version = version
  
imports: from __future__ import annotations
  from abc import ABCMeta, abstractmethod, abstractproperty
  from inspect import isawaitable
  from typing import TYPE_CHECKING, Any, Callable, Coroutine, Hashable, Sequence, Tuple, TypeVar, Union, cast
  from prompt_toolkit.cache import SimpleCache
  from prompt_toolkit.filters import FilterOrBool, Never, to_filter
  from prompt_toolkit.keys import KEY_ALIASES, Keys
label_desc: Use image node_id 2 for calling the DynamicKeyBindings obj's underlying member method code with example usage: obj._update_cache() without return types