=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.

    class A does SomeRole { ... }

roughly corresponds to

    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) returns List:D

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

=end pod
