Which numerical rule should f(2, 3) mean when each argument qualifies it for a different method?
A hypothetical Julia API defines f(x::Integer, y::Number) and f(x::Number, y::Integer). The first uses an algorithm chosen for an integer first argument. The second uses one chosen for an integer second argument. Calls such as f(2, 3.0) and f(2.0, 3) separate those cases, but two integer arguments lie in their intersection. Neither signature is more specific across both arguments, so that call is ambiguous.
An explicit f(x::Integer, y::Integer) method can resolve the overlap. What should its mathematical behavior be? Would you make integer pairs a distinct case, or deliberately choose one existing algorithm? Resolving dispatch seems to expose a design decision that the original two methods left unanswered.