https://github.com/IvanRublev/Domo
https://hex.pm/packages/domo
## Variants of using Domo library ##
Compile-time (via `use Domo` in struct)
* Validate defaults given within `defstruct [filed: default_value]` to conform to the struct’s type t()
* Validate and maintain invariants for struct constants in @attributes, function calls, and other struct defaults that are built with `new/1`
Run-time (via calls to `new/1`, `ensure_type!/1`)
* Validate and maintain invariants for any struct value on build with `new/1` or after modification with `ensure_type/1`