Member Hoisting
¥In a union hierarchy, the same code may be repeated in every variant.
¥A cardinal rule of software engineering is never duplicate code.  We can eliminate code duplication in a union hierarchy by hoisting duplicated code (code that is invariant within the union) into the abstract class at the route of the hierarchy.