`matches?` in `BaseMatcher` is very similar to this. You can delete this `matches?` implementation and rename `perform_match` to `match(expected, actual)` and it'll work.