An error was found in rules 3 and 4. The mistake in rule 3 was that it
wasn't inclusive enough. You can cast a variable of type X to type
Y if X and Y are the same, or one is the subclass of the other.
The error in rule 4 is that part of it was backwards. If you draw the
memory model pictures of these classes