// FIR_DUMP // explicit types class A(t: T) { private val t: T = t // PRIVATE_TO_THIS private val i: B = B() fun test() { val x: T = t // Ok val y: T = this.t // Ok } fun foo(a: A) { val x: String = a.t // Invisible! } fun bar(a: A<*>) { a.t // Invisible! } inner class B { fun baz(a: A<*>) { a.i } } } // implicit types class C(t: T) { private val t: T = t private val tt = t fun foo(a: C) { val x: String = a.tt } }