R38 - modelint/types GitHub Wiki
Bank Level is a Top Bank Level, Middle Bank Level or Bottom Bank Level
The constraint that a Bottom Floor can only call Cabins going up and that a Top Floor can only call Cabins going down while Middle Floors can call either direction is enforced by this specialization of Bank Level.
For a given Floor, the top, middle, bottom status is determined for each Bank membership. The highest Floor included in a Bank will be a Top Bank Level, the lowest a Bottom Bank Level and all others will be Middle Bank Levels.
We can imagine a case, for example, where the 20th floor is simultaneously the Top Bank Level in Bank 1
and the Bottom Bank Level of Bank 2
.
<subclass>.(Bank, Floor) -> Bank Level.(Bank, Floor)