Intent
Use dynamic properties and achieve flexibility of untyped languages while keeping type-safety.
Explanation
The Abstract Document pattern enables handling additional, non-static properties. This pattern uses concept of traits to enable type safety and separate properties of different classes into set of interfaces.