メソッドのsender/receiver入れ替え

脳が疲れているとメソッドの呼び出し元を間違えて

1.include?([1,2,3,4,5])

みたいなコードを書いてしまうことがあるので、以下のようなコードを考えた。

当然、sender/receiverどちらにもないメソッドを呼ぶと無限にスタックを積み上げて落ちる。
コールスタックを読んで、過去に自身のmethod_missingが呼ばれていれば例外にすればいい気がしたが、Kernel.#callerでは呼び出し元オブジェクトを特定する情報が無かった。
過去にActiveSupportにBinding.of_callerというものがあったらしいがRubyのバグを利用した黒魔術によって実現されており1.8.5から使えなくなったとか。
Kernel.#set_trace_funcでbindingオブジェクト取れるのでなんとかなりそうな気もしたけど面倒くさすぎるので諦めた。

https://github.com/banister/binding_of_caller
こういうgemもあった(試してない)