// MODULE: separate
// MODULE: main
// FILE: 1.kt

interface A : Java1, Java2 {
}

interface B : SeparateModuleJava1, SeparateModuleJava2 {
}

interface C : Java1, SeparateModuleJava2 {
}

interface D : Java1, KotlinInterface {
}

interface E : Java1, KotlinInterface, SeparateModuleJava1 {
}

interface F : Java1, KotlinInterface, KotlinInterface2 {
}

interface G : Java1, Java2, Java3 {
}

interface KotlinInterface {
  abstract fun bar(o: Int)

  abstract fun foo(): Int

  abstract var a: Int
    abstract get
    abstract set

}

interface KotlinInterface2 {
  abstract fun bar(o: Any)

  abstract fun foo(): Any

  abstract var a: Int
    abstract get
    abstract set

}

fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G) {
  val k1: Int = a.foo()
  val k2: Unit = a.bar(o = 1)
  val k3: Unit = a.bar(o = "")
  val k4: Unit = a.bar(o = null)
  val k5: Int = b.foo()
  val k6: Unit = b.bar(o = 1)
  val k7: Unit = b.bar(o = "")
  val k8: Unit = b.bar(o = null)
  val k9: Any = super<Java1>.#a /*!! Any */
  val k10: Int = super<Java2>.#a
  val k11: Any = super<SeparateModuleJava1>.#a /*!! Any */
  val k12: Int = super<SeparateModuleJava2>.#a
  val k13: Int = c.foo()
  val k14: Unit = c.bar(o = 1)
  val k15: Unit = c.bar(o = "")
  val k16: Unit = c.bar(o = null)
  val k17: Int = d.foo()
  val k18: Unit = d.bar(o = 1)
  val k19: Unit = d.bar(o = "")
  val k20: Unit = d.bar(o = null)
  val k21: Int = d.<get-a>()
  d.<set-a>(<set-?> = 4)
  val k22: Int = e.foo()
  val k23: Unit = e.bar(o = 1)
  val k24: Unit = e.bar(o = "")
  val k25: Unit = e.bar(o = null)
  val k26: Int = e.<get-a>()
  e.<set-a>(<set-?> = 4)
  val k27: Int = f.foo()
  val k28: Unit = f.bar(o = 1)
  val k29: Unit = f.bar(o = "")
  val k30: Unit = f.bar(o = null)
  val k31: Int = f.<get-a>()
  f.<set-a>(<set-?> = 4)
  val k32: Int = g.foo()
  val k33: Unit = g.bar(o = 1)
  val k34: Unit = g.bar(o = 1.2)
  val k35: Unit = g.bar(o = "")
  val k36: Unit = g.bar(o = null)
  val k37: Number = super<Java3>.#a /*!! Number */
}
