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