code: def test_common_decode_json() -> None:
      for (
          event_name,
          event_cls,
      ) in events._CONCRETE_EVENT_CLASSES.items():
          if event_name is None:
              continue  # Skip abstract base class
  
          if issubclass(event_cls, events.ButtonClick):
              model = Button()
          elif issubclass(event_cls, events.ValueSubmit):
              model = TextInput()
          else:
              model = Plot()
  
          entries = []
          if issubclass(event_cls, events.ModelEvent):
              entries.append(["model", dict(id=model.id)])
          if issubclass(event_cls, events.ValueSubmit):
              entries.append(["value", ""])
  
          decoder = Deserializer(references=[model])
          event = decoder.decode(
              dict(
                  type="event",
                  name=event_cls.event_name,
                  values=dict(type="map", entries=entries),
              )
          )
  
          assert isinstance(event, events.Event)
          if isinstance(event, events.ModelEvent):
              assert event.model == model
  
imports: from __future__ import annotations
  import pytest
  from bokeh.core.serialization import Deserializer
  from bokeh.models import Button, Div, Plot, TextInput
  from bokeh import events
label_desc: Use image node_id 2 for calling a global function with example usage: test_common_decode_json() without return types