The mechanics of ConstrainedPropertyDefTrait are causing problems. It turns out that adding ConstrainedPropertyDefTrait to a PropertyDefTrait using the 'as' keyword is super-neat, but also causes problems. See implementing traits at runtime. Keeping the original PropertyDefTrait object, which will be an Enum normally, is desirable.
Having PropertyDefTrait and ConstrainedPropertyDefTrait seemed cleaner, but since it is causing issues and is not really required, will move the functionality of ConstrainedPropertyDefTrait to PropertyDefTrait and call it a day.
The mechanics of ConstrainedPropertyDefTrait are causing problems. It turns out that adding ConstrainedPropertyDefTrait to a PropertyDefTrait using the 'as' keyword is super-neat, but also causes problems. See implementing traits at runtime. Keeping the original PropertyDefTrait object, which will be an Enum normally, is desirable.
Having PropertyDefTrait and ConstrainedPropertyDefTrait seemed cleaner, but since it is causing issues and is not really required, will move the functionality of ConstrainedPropertyDefTrait to PropertyDefTrait and call it a day.