def METHOD_NAME(self, _name, *args, **kwargs):
    bucket = self._get_signal_bucket(_name)
    for robj, methods in bucket.items():
        for callback in methods:
            # Need to clone any iterable args, otherwise the first usage will drain it.
            # If the generator isn't available on `self`, give up and return it anyway.
            new_args = (
                (arg if not isgenerator(arg) else getattr(self, arg.__name__, arg))
                for arg in args
            )
            callback(robj(), *new_args, **kwargs)
    # The include_source flag indicates to prepend the source of the event in
    # the callback signature. This is set on forward_events_from/to
    items = tuple(self._forwards.items())
    for sink, include_source in items:
        if include_source:
            sink.METHOD_NAME(_name, self, *args, **kwargs)
        else:
            sink.METHOD_NAME(_name, *args, **kwargs)