AssertionFailure is a RuntimeException and so does not need to be
listed in the "throws" clauses of method definitions. One reason
for that is to avoid discouraging the use of assertions. If
AssertionFailure had to be declared, then adding an assertion
in a method that had none before would require nonlocal changes
in the code.