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.