def AND(*args, **kwargs):
for arg in args:<EOL><INDENT>try:<EOL><INDENT>arg()<EOL><DEDENT>except CertifierError as e:<EOL><INDENT>exc = kwargs.get('<STR_LIT>', None)<EOL>if exc is not None:<EOL><INDENT>raise exc(e)<EOL><DEDENT>raise<EOL><DEDENT><DEDENT>
ALL args must not raise an exception when called incrementally.
If an exception is specified, raise it, otherwise raise the callable's exception.


:params iterable[Certifier] args:
    The certifiers to call
:param callable kwargs['exc']:
    Callable that excepts the unexpectedly raised exception as argument and return an
    exception to raise.
:raises CertifierError:
    The first certifier error if at least one raises a certifier error.