The problem with multiple dispatch is that by looking at
`fn(a, b, c)`
you really don't know which code it is running unless you know the types of `a`, `b`, and `c` which can't be exhaustively enumerated at the point of the writing the code or reading the code given that someone could use `fn` with totally different types.
This makes Julia readable, but as the code base grows, it can become unwieldly as well.
You really need `@which fn(a,b,c)` with known `a`, `b`, and `c` to see which function it is running.