use Moops; class Cat :ro { has name => (isa => Str); } class Litter :ro { has cats => (isa => ArrayRef[InstanceOf['Cat']]); } my $cat1 = Cat->new(name=>'Garfield'); my $cat2 = Cat->new(name=>'Felix'); my $litter = Litter->new(cats => [$cat1, $cat2, 1]);