The C<around> method modifier has neither of these limitations, but is
a little more verbose.
+Alternatively, the L<MooseX::Mangle> extension provides the
+C<mangle_args> function, which does allow you to affect C<@_>.
+
=head3 Can I use C<before> to stop execution of a method?
Yes, but only if you throw an exception. If this is too drastic a
By choosing not to call the C<$next> method, you can stop the
execution of the main method.
+Alternatively, the L<MooseX::Mangle> extension provides the
+C<guard> function, which will conditionally prevent execution
+of the original method.
+
=head3 Why can't I see return values in an C<after> modifier?
As with the C<before> modifier, the C<after> modifier is simply called
return reverse @rv;
};
+Alternatively, the L<MooseX::Mangle> extension provides the
+C<mangle_return> function, which allows modifying the return values
+of the original method.
+
=head2 Type Constraints
=head3 How can I provide a custom error message for a type constraint?