1The documentation lists exceptional conditions and the exceptions that
2should be thrown, but doesn't say which exception previals when two or
3more exceptional conditions exist at the same time.  For example,
4attempting to set a protected field from an unrelated class causes an
5IllegalAccessException, while passing in a data type that doesn't match
6the field causes an IllegalArgumentException.  If code does both at the
7same time, we can only throw one or the other.
8
9This exercises the various failure modes to ensure that behavior is
10equivalent, and not merely spec-compliant.
11