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

  }

}

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

  }

  override fun foo(vararg a: String?) {
  }

}

abstract class C : Java2 {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

class D : Java2 {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  override fun foo(vararg a: Any) {
  }

}

abstract class E : KotlinInterface2 {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

class F : KotlinInterface2 {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  override fun foo(vararg a: Any) {
  }

}

interface KotlinInterface {
  abstract fun foo(vararg a: Any)

}

interface KotlinInterface2 : Java2 {
}

fun test(a: A, b: B, c: C, d: D, e: E, f: F) {
  a.foo(a = ["", "1"])
  a.foo(a = [null])
  b.foo(a = ["", "1"])
  b.foo(a = [null])
  c.foo(a = ["", "1"])
  d.foo(a = ["", "1"])
  e.foo(a = ["", "1"])
  f.foo(a = ["", "1"])
}
