class A(t: T) { fun foo(x: T) {} } abstract class B(e: E) { val myE: E = id(e) val a = A(e) fun id(e: E): E = e } class C : B("") { fun bar() { a.foo("") } }