Arrows:
• Solid arrow <|-- = extends (inheritance)
• Dashed arrow <|.. = implements (interface)
• Dashed arrow <|.. = with (mixin)
• Composition arrow --> = uses (field type)
Annotations:
• <<abstract>> = Abstract class
• <<interface>> = Interface class
• <<sealed>> = Sealed class
• <<mixin>> = Mixin
• <<enumeration>> = Enum