i worked on a JVM programming language back in the day, and that damned feature screwed up everything: method resolution was obviously a pain, but it got involved in generics, class compatibility, it even ends up worming its way into bytecode, since methods names are really the name plus the fully qualified type name of every argument (even if there isn't any method overloading for a given method, just awful)
i wrote an old blog post on this:
https://guidewiredevelopment.wordpress.com/2009/05/22/i-am-h...
in conclusion: things should have unique names