=head1 NAME
 
Moose - A postmodern object system for Perl 5
 
=head1 VERSION
 
version 2.1804
 
=head1 SYNOPSIS
 
  package Point;
  use Moose; # automatically turns on strict and warnings
 
  has 'x' => (is => 'rw', isa => 'Int');
  has 'y' => (is => 'rw', isa => 'Int');
 
  sub clear {
      my $self = shift;
      $self->x(0);
      $self->y(0);
  }
 
  package Point3D;
  use Moose;
 
  extends 'Point';
 
  has 'z' => (is => 'rw', isa => 'Int');
 
  after 'clear' => sub {
      my $self = shift;
      $self->z(0);
  };
 
=head1 DESCRIPTION
 
Moose is an extension of the Perl 5 object system.
 
The main goal of Moose is to make Perl 5 Object Oriented programming
easier, more consistent, and less tedious. With Moose you can think
more about what you want to do and less about the mechanics of OOP.
 
Additionally, Moose is built on top of L<Class::MOP>, which is a
metaclass system for Perl 5. This means that Moose not only makes
building normal Perl 5 objects better, but it provides the power of
metaclass programming as well.
 
=head2 New to Moose?
 
If you're new to Moose, the best place to start is the
L<Moose::Manual> docs, followed by the L<Moose::Cookbook>. The intro
will show you what Moose is, and how it makes Perl 5 OO better.
 
The cookbook recipes on Moose basics will get you up to speed with
many of Moose's features quickly. Once you have an idea of what Moose
can do, you can use the API documentation to get more detail on
features which interest you.
 
=head2 Moose Extensions
 
The C<MooseX::> namespace is the official place to find Moose extensions.
These extensions can be found on the CPAN.  The easiest way to find them
is to search for them (L<https://metacpan.org/search?q=MooseX::>),
or to examine L<Task::Moose> which aims to keep an up-to-date, easily
installable list of Moose extensions.
 
=head1 TRANSLATIONS
 
Much of the Moose documentation has been translated into other languages.
 
=over 4
 
=item Japanese
 
Japanese docs can be found at
L<http://perldoc.perlassociation.org/pod/Moose-Doc-JA/index.html>. The
source POD files can be found in GitHub:
L<http://github.com/jpa/Moose-Doc-JA>
 
=back
 
=head1 BUILDING CLASSES WITH MOOSE
 
Moose makes every attempt to provide as much convenience as possible during
class construction/definition, but still stay out of your way if you want it
to. Here are a few items to note when building classes with Moose.
 
When you C<use Moose>, Moose will set the class's parent class to
L<Moose::Object>, I<unless> the class using Moose already has a parent
class. In addition, specifying a parent with C<extends> will change the parent
class.
 
Moose will also manage all attributes (including inherited ones) that are
defined with C<has>. And (assuming you call C<new>, which is inherited from
L<Moose::Object>) this includes properly initializing all instance slots,
setting defaults where appropriate, and performing any type constraint checking
or coercion.
 
=head1 PROVIDED METHODS
