@property
def registered_hooks(cls):
    """
        A generator of all registered hooks.
        """
    if not cls.abstract:
        raise TypeError(
            'registered_hooks property accessed on a non-abstract hook')
    for hook in cls._registered_hooks.values():
        yield hook
