If Kotlin disallows multiple inheritance, then why KClass<*>.superclasses return a list? How to find that single superclass?
According to the documentation, superclasses contains immediate superclasses of this class, in the order they are listed in the source code. Includes superclasses and superinterfaces of the class, but does not include the class itself.
A Kotlin class may in fact only inherit from a single super class, but may implement several super interfaces.
Borrowing from a different question / answer on StackOverflow, something like the following might work. However, I did not test this.
val KClass<*>.isInterface: Boolean
get() = java.isInterface
val KClass<*>.superclass: KClass<*>
get() = superclasses.filterNot { it.isInterface }.single()