trait G class A { class object A { } } trait B { class object : G { } } class C { default class object } fun main() { A A.A g(B.Default) g(B) A.ext() A.A.ext() } fun g(g: G) { g } fun A.A.ext() { }