This is a dump of a simple class which is valid in structure but is overall
invalid. That being said, the system should still have no trouble parsing and
dumping it.

The salient bit of parsing tested here is that the class has a single
simple field with no attributes and with every access flag turned on
(so that the names can be verified in debugging output).
