The Perl 5 module Class::MOP is a fully functioning meta object
protocol for the Perl 5 object system. It makes no attempt to change
the behavior or characteristics of the Perl 5 object system, only
to create a protocol for its manipulation and introspection.  It
does attempt to create the tools for building a rich set of extensions
to the Perl 5 object system
