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