=begin pod

=TITLE role Metamodel::RoleContainer

=SUBTITLE Metaobject that supports holding/containing roles

    role Metamodel::RoleContainer {}

Implements the ability to hold roles to be held for composition.

=for code :skip-test
class A does SomeRole {}

roughly corresponds to

=for code :skip-test
class A {
    BEGIN A.^add_role(SomeRole);
}

=head1 Methods

=head2 method add_role

    method add_role(Metamodel::RoleContainer:D: $obj, Mu $role)

Adds the C<$role> to the list of roles to be composed.

=head2 method roles_to_compose

    method roles_to_compose(Metamodel::RoleContainer:D: $obj --> List:D)

returns a list of roles added with C<add_role>, which are to be composed
at type composition time.

=end pod
