=begin pod :kind("Type") :subkind("role") :category("metamodel")

=TITLE role Metamodel::ParametricRoleGroupHOW

=SUBTITLE Represents a group of roles with different parameterizations

    class Metamodel::ParametricRoleGroupHOW
        does Metamodel::Naming
        does Metamodel::Documenting
        does Metamodel::Stashing
        does Metamodel::TypePretense
        does Metamodel::RolePunning
        does Metamodel::BoolificationProtocol {}

I<Warning>: this role is part of the Rakudo implementation, and is not
a part of the language specification.

A C<ParametricRoleGroupHOW> groups a set of C<ParametricRoleHOW>, every one of them representing a single role declaration with their own parameter sets.

=for code
(role Zape[::T] {}).HOW.say; # OUTPUT: «Perl6::Metamodel::ParametricRoleHOW.new␤»
Zape.HOW.say ; # OUTPUT: «Perl6::Metamodel::ParametricRoleGroupHOW.new␤»

C<ParametricRoleHOW>s need to be added to this kind of group:

=for code
my \zape := Metamodel::ParametricRoleGroupHOW.new_type( name => "zape");
my \zipi := Metamodel::ParametricRoleHOW.new_type( name => "zipi", group => zape);
say zipi.HOW; # OUTPUT: «Perl6::Metamodel::ParametricRoleHOW.new␤»

I<Note>: As most of the C<Metamodel> classes, this class is here mainly for
illustration purposes and it's not intended for the final user to instantiate.

=end pod
