class GenericTest { class A class B { val memberVal: A = A() fun memberFun(): A = A() } val B.extensionVal: A get() = A() fun B.extensionFun(): A = A() fun test_1() { val memberValRef = B<*>::memberVal val memberFunRef = B<*>::memberFun } fun test_2() { val extensionValRef = B<*>::extensionVal val extensionFunRef = B<*>::extensionFun } } class NoGenericTest { class A class B { val memberVal: A = A() fun memberFun(): A = A() } val B.extensionVal: A get() = A() fun B.extensionFun(): A = A() fun test_1() { val extensionValRef = B::extensionVal val extensionFunRef = B::extensionFun } fun test_2() { val memberValRef = B::memberVal val memberFunRef = B::memberFun } }