=begin pod

=head1 Mu

    class Mu { ... }

The root of the Perl 6 type hierarchy. For the origin of the name, see
L<http://en.wikipedia.org/wiki/Mu_%28negative%29>. One can also says that
there are many undefined values in Perl 6, and C<Mu> is the I<most undefined>
value.

Note that most classes do not derive from C<Mu> directly, but rather from
L<Any>.

=head2 Methods

=head3 defined

    multi sub    defined(Mu) returns Bool:D
    multi method defined()   returns Bool:D

Returns C<False> on the type object, and C<True> otherwise

=head3 Bool

    multi sub    Bool(Mu) returns Bool:D
    multi method Bool()   returns Bool:D

Returns C<False> on the type object, and C<True> otherwise

=head3 clone

    method clone(*%twiddles)

Creates a shallow clone of the invocant. If named arguments are passed
to it, their values are used in every place where an attribute name matches
the name of a named argument.

=head3 new

    multi method new(*%attrinit)

Default method for constructing (create + initialize) new objects 
of a class.  This method expects only named arguments which are then
used to initialize attributes with accessors of the same name.

Classes may provide
their own C<new> method to override this default.

=head3 ACCEPTS

    multi method ACCEPTS(Mu:U: $other)

Performs a type check. Returns C<True> if C<$other> conforms to the invocant
(which is always a type object or failure).

This is the method that is triggered on smart-matching against type objects,
for example in C<if $var ~~ Int { ... }>.

=end pod
