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