Just wanted to add a few things.
1) If we get local instance methods, it might lessen the necessity,
since they are not visible to the hierarchy chain, and thus can't be
overridden. Granted it's not the same but it should alleviate some use
cases.
2) Kernel methods are also module_function. So they can be called that
way even if the instance version is overridden. Again, this may help
alleviate some use cases.
3) In general, it makes sense for __xxx__ methods to not be
redefinable / overridable. In common practice that's the very thing
intended. (Along with hope and prayer that we manage to avoid name
clash.)
4) I haven't thought this last idea through, but perhaps private
methods of the form __xxx__ can be local instance methods?
T.