async def METHOD_NAME(self, event, subscription_id=None):
    if hasattr(event, 'Retain') and hasattr(event, 'NodeId'):
        if event.Retain:
            self._conditions[event.NodeId] = event
        elif event.NodeId in self._conditions:
            del self._conditions[event.NodeId]
    if subscription_id is not None:
        if subscription_id in self.subscriptions:
            await self.subscriptions[subscription_id].monitored_item_srv.METHOD_NAME(event)
    else:
        for sub in self.subscriptions.values():
            await sub.monitored_item_srv.METHOD_NAME(event)