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")