def METHOD_NAME(func):
    # Enforce documentation of all the exceptions
    if func.__doc__ is not None:
        for exc_cls in exc_cls_list:
            if ':raises {}:'.format(exc_cls.__name__) not in func.__doc__:
                raise UndocumentedException(func, exc_cls)
    # Wrap in detector function
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except BaseException as exc:
            if not isinstance(exc, exc_cls_list):
                _bug_logger.error(
                    "Undeclared exception %s raised from %s",
                    exc.__class__.__name__, func.__name__)
            raise exc
    # Annotate the function and the wrapper
    wrapper.__annotations__['raise'] = exc_cls_list
    func.__annotations__['raise'] = exc_cls_list
    return wrapper