class_docstr: A base class for Bokeh properties with simple get/set and serialization
  behavior.
class_docstr_tok: ["A","base","class","for","Bokeh","properties","with","simple","get\/set","and","serialization","behavior","."]
docstr: Internal implementation of instance attribute access for default
  values.
  
  Handles bookeeping around ``PropertyContainer`` value, etc.
code: def _get_default(self, obj: HasProps) -> T:
      """Internal implementation of instance attribute access for default
      values.
  
      Handles bookeeping around ``PropertyContainer`` value, etc.
  
      """
      if self.name in obj._property_values:
          # this shouldn't happen because we should have checked before _get_default()
          raise RuntimeError(
              "Bokeh internal error, does not handle the case of self.name already in _property_values"
          )
  
      themed_values = obj.themed_values()
      is_themed = (
          themed_values is not None and self.name in themed_values
      )
  
      unstable_dict = (
          obj._unstable_themed_values
          if is_themed
          else obj._unstable_default_values
      )
  
      if self.name in unstable_dict:
          return unstable_dict[self.name]
  
      # Ensure we do not look up the default until after we check if it already present
      # in the unstable_dict because it is a very expensive operation
      # Ref: https://github.com/bokeh/bokeh/pull/13174
      default = self.instance_default(obj)
  
      if self.has_unstable_default(obj):
          if isinstance(default, PropertyValueContainer):
              default._register_owner(obj, self)
          unstable_dict[self.name] = default
  
      return default
  
imports: from __future__ import annotations
  import logging
  from copy import copy
  from types import FunctionType
  from typing import TYPE_CHECKING, Any, Callable, Generic, TypeVar
  from ...util.deprecation import deprecated
  from .singletons import Undefined
  from .wrappers import PropertyValueColumnData, PropertyValueContainer
label_desc: Use image node_id 17 for calling the PropertyDescriptor obj's underlying member method code with example usage: obj._get_default(obj) and returns: default, unstable_dict