open class C(val s: String) { fun test(): String { return s } } class B(var x: String) { fun foo(): String { var s = "OK" class Z : C(s) {} return Z().test() } fun foo2(): String { class Y : C(x) {} return Y().test() } } fun box(): String { val b = B("OK") if (b.foo() != "OK") return "fail: ${b.foo()}" return b.foo2() }