interface A : Java1<Nothing?>, KotlinInterface<Nothing?> {
}

interface B : Java2, KotlinInterface2 {
}

interface KotlinInterface<T : Any?> {
  abstract fun bar(): T

  abstract fun foo(o: T)

  abstract var a: T
    abstract get
    abstract set

}

interface KotlinInterface2 {
  abstract fun bar(): Nothing?

  abstract fun foo(o: Nothing?)

  abstract var a: Nothing?
    abstract get
    abstract set

}

fun test(a: A, b: B) {
  val k: Nothing? = a.<get-a>()
  val k2: Unit = a.foo(o = k)
  val k3: Nothing? = a.bar()
  a.foo(o = null)
  val k4: Nothing? = b.<get-a>()
  val k5: Unit = b.foo(o = k)
  val k6: Nothing? = b.bar()
  b.foo(o = null)
}
