def METHOD_NAME(self, event, source=None, data=None):
    """@brief Notify subscribers of an event.
    @param self
    @param event Event to send. Must be a hashable object. It is acceptable to notify for an
        event for which there are no subscribers.
    @param source The object sending the notification. If not set, the source defaults to self,
        the object on which the notify() method was called.
    @param data Optional data value to send with the notification.
    """
    # Look up subscribers for this event.
    try:
        event_info = self._subscribers[event]
    except KeyError:
        # Nobody has subscribed to this event, so nothing to do.
        TRACE.debug("Not sending notification because no subscribers: event=%s", event)
        return
    # Look up subscribers for this event + source combo.
    try:
        source_subscribers = event_info[1][source]
    except KeyError:
        # No source-specific subscribers.
        source_subscribers = []
    # Create combined subscribers list. Exit if no subscribers matched.
    subscribers = event_info[0] + source_subscribers
    if not subscribers:
        TRACE.debug("Not sending notification because no matching subscribers: event=%s", event)
        return
    # Create the notification object now that we know there are some subscribers.
    if source is None:
        source = self
    note = Notification(event, source, data)
    TRACE.debug("Sending notification to %d subscribers: %s", len(subscribers), note)
    # Tell everyone!
    for cb in subscribers:
        cb(note)