abstract class A : Java1, Java2 { constructor() /* primary */ { super/*Java1*/() /* () */ } } class B : Java1, Java2 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun setA(t: Any?) { } } abstract class C : Java1, KotlinInterface { constructor() /* primary */ { super/*Java1*/() /* () */ } } class D : Java1, KotlinInterface { override var a: Any field = a override get override set override val b: Boolean field = b override get constructor(a: Any, b: Boolean) /* primary */ { super/*Java1*/() /* () */ } } interface KotlinInterface { abstract var a: Any abstract get abstract set abstract val b: Boolean abstract get } fun test(a: A, b: B, c: C, d: D) { a.getA() /*~> Unit */ a.setA(t = 3) a.setA(t = "") a.isB() /*~> Unit */ a.setB(t = false) b.getA() /*~> Unit */ b.setA(t = 3) b.setA(t = "") b.isB() /*~> Unit */ b.setB(t = false) c.() /*~> Unit */ c.() /*~> Unit */ c.isB() /*~> Unit */ c.( = 1) c.setB(t = false) d.() /*~> Unit */ d.() /*~> Unit */ d.isB() /*~> Unit */ d.( = 1) d.setB(t = false) }