class X(val x : Int) {} class Y(val y : Int) {} class Point(x : Int, y : Int) : X(x) , Y(y) {} class Abstract {} class P1(x : Int, yy : Y) : Abstract, X(x), Y by yy {} class P2(x : Int, yy : Y) : X(x), Abstract, Y by yy {} class P3(x : Int, yy : Y) : X(x), Y by yy, Abstract {} class P4(x : Int, yy : Y) : Y by yy, Abstract, X(x) {} fun box() : String { if (X(239).x != 239) return "FAIL #1" if (Y(239).y != 239) return "FAIL #2" val p = Point(240, -1) if (p.x + p.y != 239) return "FAIL #3" val y = Y(-1) val p1 = P1(240, y) if (p1.x + p1.y != 239) return "FAIL #4" val p2 = P2(240, y) if (p2.x + p2.y != 239) return "FAIL #5" val p3 = P3(240, y) if (p3.x + p3.y != 239) return "FAIL #6" val p4 = P4(240, y) if (p4.x + p4.y != 239) return "FAIL #7" return "OK" }