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

  }

}

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

  }

}

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

  }

}

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

  }

}

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

  }

}

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

  }

}

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

  }

}

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

  }

  override fun foo() {
  }

}

class I : Java6 {
  constructor() /* primary */ {
    super/*Java6*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

class J : Java7 {
  constructor() /* primary */ {
    super/*Java7*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

class K : Java8 {
  constructor() /* primary */ {
    super/*Java8*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

class L : Java9 {
  constructor() /* primary */ {
    super/*Java9*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

class M : Java10 {
  constructor() /* primary */ {
    super/*Java10*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

class N : Java11 {
  constructor() /* primary */ {
    super/*Java11*/()
    /* <init>() */

  }

  internal override fun foo() {
  }

}

fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L, m: M, n: N) {
  a(super<A>).#a /*~> Unit */
  a.foo()
  b(super<B>).#a /*~> Unit */
  b.foo()
  c(super<C>).#a /*~> Unit */
  c.foo()
  d(super<D>).#a /*~> Unit */
  d.foo()
  e(super<E>).#a /*~> Unit */
  e.foo()
  f(super<F>).#a /*~> Unit */
  f.foo()
  g(super<G>).#a /*~> Unit */
  g.foo()
  h(super<H>).#a /*~> Unit */
  h.foo()
  i(super<I>).#a /*~> Unit */
  i.foo()
  j(super<J>).#a /*~> Unit */
  j.foo()
  k(super<K>).#a /*~> Unit */
  k.foo()
  l(super<L>).#a /*~> Unit */
  l.foo()
  m(super<M>).#a /*~> Unit */
  m.foo()
  n(super<N>).#a /*~> Unit */
  n.foo()
}
