It's better to either use a mirror (and have `#[]` also use that), or simply make the statement that if people overwrite `#[]` in a subclass it's their responsibility to also ensure `#to_proc` works. I'd prefer the latter since the former is an endless game of whack-a-mole we can't win. 