in reply to Object::InsideOut and LIST of objects

First of all, in Objects::Status, the correct type for @statuses would be 'Array'. Yes, it's an array of objects, but the generated accessors can only check at the top level. If you need something more sophisticated, you can add a custom type checker.

For the :Init routine in Objects::Status, you could use:

sub init :Init { my ($self, $args) = @_; my @objs = map { Objects::StatusElement->new('Name' => $_); } keys(@$args->{'STATUSES'}); $self->set(\@statuses, \@objs); }

Remember: There's always one more bug.