It's a shortcoming of languages that don't have multiple dispatch.
A follow-up goes into Python: https://eli.thegreenplace.net/2016/a-polyglots-guide-to-mult...
Some of these complains are at best very misguided.
Moreover, multiple dispatch isn't obscure at all.
C++ has it, but only statically, for instance, in the form of overloaded functions. C++ chooses a function overload by looking at the types of all parameters and arguments.
Multiple dispatch is similar, but the run-time types of the arguments are used.
This is broadly applicable in making all sorts of situations nicer.