code: def add_callback(self, instance, func, echo_old=False, priority=0):
          
  
          if echo_old:
              self._2arg_callbacks.setdefault(instance, CallbackContainer()).append(func, priority=priority)
          else:
              self._callbacks.setdefault(instance, CallbackContainer()).append(func, priority=priority)
docs: Add a callback to a specific instance that manages this property
  
          Parameters
          ----------
          instance
              The instance to add the callback to
          func : func
              The callback function to add
          echo_old : bool, optional
              If `True`, the callback function will be invoked with both the old
              and new values of the property, as ``func(old, new)``. If `False`
              (the default), will be invoked as ``func(new)``
          priority : int, optional
              This can optionally be used to force a certain order of execution of
              callbacks (larger values indicate a higher priority).