- # Use subclass::METHODS if it exists [use constants METHODS => qw(foo)]
- $self->_addmethods($subclass,&{"${subclass}::_methods"}($self,$options));
- &{"${subclass}::_init"}($self);
+ my @methods = ();
+ if (UNIVERSAL::can($subclass,'METHODS')) {
+ push @methods,&{"${subclass}::METHODS"};
+ }
+ elsif (UNIVERSAL::can($subclass,'METHODS')) {
+ push @methods,&{"${subclass}::_methods"};
+ }
+ $self->_addmethods($subclass,@methods);
+ my $initref = UNIVERSAL::can($subclass,'_init');
+ &$initref($self,$options) if defined $initref;