- We need a Role for Moose::Meta::TypeConstraint to define the interface we are decorating - we need a Role or some way to detect when there are parameters attached to the type ??Do we need some sort of Factory for controlling the creation of types? Moose::TypeConstraint->create_base(%opt); Moose::TypeConstraint->create_structured(%opt, %signature_opts); Moose::TypeConstraint->create_parameterized(%opt, %); Or some sort of pattern for type constraints that accept args? then a ...->create(%opt) that chooses one of the above????