in reply to Class capabilities

use Params::Validate;

sub foo { my ($self, $object_or_class) = validate_pos( @_, 1, # or strictly, { isa => __PACKAGE__, type => +OBJECT }, { can => \ @methods } ); .... }