ふむ、では val= というインスタンスメソッドを val= という書き方で呼ぶことはできない?
常に val というローカル変数への代入とみなされて、アクセサ経由で代入をすることはできない?
っていうかそうなってるな

irb> def val=(a); p "Woo!"; end
irb> val=(1)
1
irb> self.val=(1)
"Woo!"
1