interface I { fun foo(): String = "foo" fun bar(x: String = "default") = "bar:$x" } interface J : I interface K : J class A : I, J class B : K, I fun box(): String { val foo = A().foo() if (foo != "foo") return "fail1: $foo" val bar1 = A().bar() if (bar1 != "bar:default") return "fail2: $bar1" val bar2 = A().bar("q") if (bar2 != "bar:q") return "fail3: $bar2" val foo2 = B().foo() if (foo2 != "foo") return "fail4: $foo2" return "OK" }