What you are looking for is multiple dispatch which is the ability to choose a method at run time based on the type of more than one argument. Kotlin like most languages only supports single dispatch which lets you choose at runtime based only on a single argument (the receiver of the method call).
There are some ways to try to emulate multiple dispatch using multiple single dispatches (see double dispatch). An example of this is the classic Visitor pattern. Other alternatives are switch statements or map data structures.
Multiple dispatch would definitely provide more power but would be a lot of work to implement and probably very expensive at run time. Since the JVM does not support it, it is unlikely Kotlin will any time soon.
There once was a project to support multiple dispatch on Java but that is dead now for over 11 years and only worked up through JDK1.4.