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

=TITLE class Metamodel::PackageHOW

=SUBTITLE Metaobject representing a Raku package.

    class Metamodel::PackageHOW
      does Metamodel::Naming
      does Metamodel::Documenting
      does Metamodel::Stashing
      does Metamodel::TypePretense
      does Metamodel::MethodDelegation { }

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

C<Metamodel::PackageHOW> is the metaclass behind the C<package> keyword.

    package P {};
    say P.HOW; # OUTPUT: «Perl6::Metamodel::PackageHOW.new␤»

=head1 Methods

=head2 method archetypes

Defined as:

     method archetypes()

Returns the archetypes for this model, that is, the properties a metatype can
implement.

=head2 method new

Defined as:

     method new(*%named)

Creates a new C<PackageHOW>.

=head2 method new_type

Defined as:

    method new_type(:$name = '<anon>', :$repr, :$ver, :$auth)

Creates a new package, with optional representation, version and auth field.

=head2 compose

Defined as:

    method compose($obj, :$compiler_services)

Sets the metapackage as composed.

=head2 is_composed

Defined as:

    method is_composed($obj)

Returns the composed status of the metapackage.

=end pod
