in reply to Moose, arrayref, and does?
You could use Types::Standard, where it's fairly easy...
use Types::Standard qw( ArrayRef ConsumerOf ); ..., isa => ArrayRef[ ConsumerOf["SomeRole"] ], ...
Or you can use Moose::Meta::TypeConstraint and Moose::Util::TypeConstraints something like (untested):
isa => find_type_constraint("ArrayRef")->parameterize(role_type "MyRol +e")
|
|---|