code: def _compare_dict_to_model_class_defaults(self, props, model_class):
      model = model_class()
      for name, value in props.items():
          property = model.lookup(name)
          if property is None:
              raise RuntimeError(
                  f"Model {model!r} has no property {name!r}"
              )
          default = property.class_default(model_class)
          if default != value:
              print(
                  f"{model_class.__name__}.{name} differs default {default!r} theme {value!r}"
              )
          else:
              print(
                  f"{model_class.__name__}.{name} default {default!r} is identical in the theme"
              )
  
imports: from __future__ import annotations
  import pytest
  import os
  import tempfile
  from bokeh.core.properties import Int, String
  from bokeh.core.property_mixins import FillProps, LineProps, TextProps
  from bokeh.document import Document
  from bokeh.model import Model
  from bokeh.plotting import figure
  from bokeh.util.deprecation import BokehDeprecationWarning
  from bokeh.themes import Theme, built_in_themes, DARK_MINIMAL, LIGHT_MINIMAL
label_desc: Use image node_id 15 for calling the TestThemes obj's underlying member method code with example usage: obj._compare_dict_to_model_class_defaults(props, model_class) without return types