open class A { constructor() /* primary */ { super/*Any*/() /* () */ } open operator fun get(i: Int?): Int { return 2 } open operator fun invoke() { } open operator fun plus(i: Int?): A { return A() } } class B : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } } class C : Java2 { constructor() /* primary */ { super/*Java2*/() /* () */ } } class D : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } override operator fun get(i: Int?): Int { return 3 } override operator fun invoke() { } override operator fun plus(i: Int?): A { return A() } } abstract class E : Java4 { constructor() /* primary */ { super/*Any*/() /* () */ } } class F : Java4 { constructor() /* primary */ { super/*Any*/() /* () */ } override operator fun get(i: Int?): Int { return 4 } override operator fun invoke() { } override operator fun plus(i: Int?): Java3 { return CHECK_NOT_NULL(arg0 = null) } } interface KotlinInterface : Java3 { } fun test(b: B, c: C, d: D, e: E, f: F) { val k: Unit = b.invoke() val k1: A = b.plus(i = 1) val k2: Int = b.get(i = 1) val k3: Unit = c.invoke() val k4: A = c.plus(i = 1) val k5: Int = c.get(i = 1) val k6: Unit = d.invoke() val k7: A = d.plus(i = 1) val k8: Int = d.get(i = 1) val k9: Unit = e.invoke() val k10: Java3 = e.plus(i = 1) /*!! Java3 */ val k11: Int = e.get(i = 1) /*!! Int */ val k12: Unit = f.invoke() val k13: Java3 = f.plus(i = 1) val k14: Int = f.get(i = 1) }