It seems a little odd to design the collaboration here so that `match!` raises an error that you then rescue and re-raise.  What do you think about this kind of API instead:

``` ruby
ArityValidator.unless_valid_arity(method_finder.call(message), actual) do |failure_message|
  @failed_fast = true
  raise SomeClass, failure_message
end
```