// FILE: Test.java public class Test { public interface I1 {} public interface I2 {} public interface I3 {} public interface I123 extends I1, I2, I3 {} public static class Base { public

void foo(P p) {} } public static class Derived extends Base { @Override public

void foo(P p) {} } public static class DerivedRaw extends Base { public void foo(I1 p) {} } } // FILE: main.kt interface KI1 interface KI2 interface KI12 : KI1, KI2 open class KBase { open fun

foo() where P : KI1, P : KI2 {} } class KDerived : KBase() { override fun

foo() where P : KI2, P : KI1 {} } fun callJava(derived: Test.Derived, derivedRaw: Test.DerivedRaw, v: Test.I123) { derived.foo(v) derivedRaw.foo(v) } fun callKotlin(derived: KDerived) { derived.foo() }