> JVM can't do dynamic dispatch on multiple arguments
It can since Java 7, the instruction invokedynamic was added for this kind of stuff.
The implementation for Pattern Matching (the project Amber) [1] will use the very same instruction.
[1] https://cr.openjdk.java.net/~briangoetz/amber/pattern-match-...