open class A {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  inline fun foo() {
  }

  open external fun foo2()

  open suspend fun foo3() {
  }

  inline fun <reified T : Any?> foo4(t: T) {
  }

}

class B : Java1 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

}

class C : Java1 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

  override fun foo2() {
  }

  override suspend fun foo3() {
  }

}

suspend fun test(b: B, c: C) {
  b.foo()
  b.foo2()
  b.foo3()
  b.foo4<Int>(t = 1)
  c.foo()
  c.foo2()
  c.foo3()
  c.foo4<String>(t = "")
}
