== TO DO list for the MetaModel

=== methods

* Create a Perl6::Method::Params to handle formal parameters, and their binding.
** This should deal with invocant forms of $self: and missing invocants (implicit)

=== attributes

* add Delegation to Attributes, this should be fairly simple to do as well.

=== roles

* Turn Roles into a more formal MetaRole object.
** Store method conflicts so we can still call them when disambiguating.
** Store attribute conflicts as well

=== submethods

* Add a hash of submethods to the Perl6::MetaClass structure.
    (see Perl6::SubMethod documentation for details on that)

* Fix the BUILD functionality, it should:

- BUILD should be defined in Object, and by default it should map 
  all the key/value params into the instance's attributes. This is 
  currently the responsibility of the MetaClass::new_instance, and that 
  is wrong.
- Also add BUILDALL, which initializes the object (calles the local BUILD) 
  in least-derived to most-derived order. (post-order)
  
?? Does BUILDALL allocate the space for attributes in the objects? Or is it just a
  shortcut for calling BUILD on all the objects in the hierarchy? Hmm.
  
* add DESTROY and DESTROYALL too which work in the opposite order as BUILD/BUILDALL

=== misc.

* Think about how to retrieve values like '::?CLASS' 

== DONE

* Try to clean up the cut-n-paste of the Class/Instance methods & attributes in
  the Perl6::MetaClass. (DONE)
* Create a Perl6::SubMethod (DONE)