With the following simple benchmark:

    puts(Benchmark.measure do
      1_000_000.times do
        Topic.where(title: 'something')
      end
    end)

I saw an increase of 10% on my implementation on 2.0.0p195. I will spend a bit of time tinkering, and see what can be done to improve it.

On the subject of adding a class with a `.handles?` method, I'm not sure what you're saying with adding an `append_handler` or `prepend_handler` method, given that only one handler can ever respond for a value. I chose === because it is virtually identical to what the method was doing previously. Technically it's not strictly class mapping, as any method that responds to === would work here (for example, regexp).