sub roles { $_[0]->{roles} }
+sub calculate_all_roles {
+ my $self = shift;
+ my %seen;
+ return grep { !$seen{ $_->name }++ }
+ map { $_->calculate_all_roles } @{ $self->roles };
+}
+
sub superclasses {
my $self = shift;
sub get_roles { $_[0]->{roles} }
+sub calculate_all_roles {
+ my $self = shift;
+ my %seen;
+ return grep { !$seen{ $_->name }++ }
+ ($self, map { $_->calculate_all_roles } @{ $self->get_roles });
+}
+
sub get_required_method_list{
return @{ $_[0]->{required_methods} };
}