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

  }

}

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

  }

  override fun foo() {
  }

}

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

  }

}

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

  }

  override fun foo() {
  }

}

class E : Java3 {
  constructor() /* primary */ {
    super/*Java3*/()
    /* <init>() */

  }

}

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

  }

  override fun foo() {
  }

}

class G : Java4 {
  constructor() /* primary */ {
    super/*Java4*/()
    /* <init>() */

  }

}

class H : Java4 {
  constructor() /* primary */ {
    super/*Java4*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

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

  }

}

fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H) {
  a.foo()
  a.Inner().bar()
  b.foo()
  b.Inner().bar()
  c.foo()
  c.Inner().bar()
  d.foo()
  d.Inner().bar()
  e.foo()
  e.Inner().bar()
  f.foo()
  f.Inner().bar()
  g.foo()
  g.Inner().bar()
  h.foo()
  h.Inner().bar()
}
