'Notify all listeners of some particular state change by calling their
``_update_<notification>`` method with the given ``*args`` and
``**kwargs``.
The notification does not by default include the object that actually
changed (``self``), but it certainly may if required.'

def _notify(self, notification, *args, **kwargs):

    if (self._listeners is None):
        return
    method_name = '_update_{0}'.format(notification)
    for listener in self._listeners.valuerefs():
        listener = listener()
        if (listener is None):
            continue
        if hasattr(listener, method_name):
            method = getattr(listener, method_name)
            if callable(method):
                method(*args, **kwargs)
