data class A(val a: Foo) {} class Foo(val a: T) { } fun box() : String { val f1 = Foo("a") val f2 = Foo("b") val a = A(f1) val b = a.copy(f2) if (b.a.a == "b") { return "OK" } return "fail" }