class C { val t: T field = t get constructor(t: T) /* primary */ { super/*Any*/() /* () */ } override fun hashCode(): Int { return .() as Int } } value class IC { val c: C field = c get constructor(c: C) /* primary */ { super/*Any*/() /* () */ } override operator fun equals(other: Any?): Boolean { when { other !is IC -> return false } val tmp_0: IC = other as IC when { EQEQ(arg0 = .#c, arg1 = tmp_0.#c).not() -> return false } return true } override fun hashCode(): Int { return .#c.hashCode() } override fun toString(): String { return "IC(" + "c=" + .#c + ")" } fun foo(): Int { return .().hashCode() } } fun box(): String { val ic: IC = IC(c = C(t = 42)) when { EQEQ(arg0 = ic.foo(), arg1 = 42).not() -> return "FAIL" } return "OK" }