def METHOD_NAME(*exc_cls_list: BaseException):
    """
    Declare possible exceptions from a callable
    :param exc_cls_list:
        A list of exceptions that may be raised
    :returns:
        A decorator that applies the following transformations
    :raises TypeError:
        If any of the exceptions listed aren't subclasses of ``Exception``
    :raises UndocumentedException:
        If the decorated function has a docstring but doesn't document all the
        exceptions listed in ``exc_cls_list``. Note that for undocumented
        functions this will simply do nothing at all.
    1) The original function is wrapped with a helper that detects
       undeclared exceptions and issues an appropriate message on the
       "plainbox.bug" logger. The intent is to fix documentation and/or
       error handling so that cases like that don't happen.
    2) The wrapper function is modified so that __annotations__ gains the
       'raise' annotation (mimicking the 'return' annotation for returned
       valued) which contains the list of exceptions that may be raised.
    """
    for exc_cls in exc_cls_list:
        if not isinstance(exc_cls, type) or not issubclass(exc_cls, BaseException):
            raise TypeError("All arguments must be exceptions")
    def decorator(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
    return decorator