sub doit { my( $self, $a, $b ) = @_; $self->_validate_self( __PACKAGE__ ); $self->{validators}{'doit_a'}->( $a ); $self->{validators}{'doit_b'}->( $b ); $self->{befores}{'doit'}->( $self, $a, $b ); my( @results ) = $self->{arounds}{'doit'}->( $self->{setters}{doit}, $self, $a, $b ); $self->{afters}{'doit'}->( $self, $a, $b ); return @results; }