subtype Foo, as ArrayRef[Str], where { @$_ < 5 }; Foo is now a parameteriz*able* type, not a parameteriz*ed* type; that is, in theory (if the MooseX::Types decorators allow it), you can:
has foo_classes => (isa => Foo[ClassName]); since ClassName is a subtype of Str. This surprised me, and means that Native::Trait::Array/Hash totally don't work with subtypes of parameterized types. I'm poking at this now. Any insight is welcome. hdp.