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

  }

}

class AA : Java15 {
  constructor() /* primary */ {
    super/*Java15*/()
    /* <init>() */

  }

  protected override fun foo() {
  }

}

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

  }

  override fun foo() {
  }

}

class BB : Java16 {
  constructor() /* primary */ {
    super/*Java16*/()
    /* <init>() */

  }

}

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

  }

}

class CC : Java17 {
  constructor() /* primary */ {
    super/*Java17*/()
    /* <init>() */

  }

}

class D : Java2 {
  val a: Int
    field = 55
    get

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

  }

  fun foo() {
  }

}

class DD : Java17 {
  constructor() /* primary */ {
    super/*Java17*/()
    /* <init>() */

  }

  internal override fun foo() {
  }

}

open class DefaultVisibility {
  open val a: Int
    field = 4
    open get

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

  }

  open fun foo() {
  }

}

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

  }

}

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

  }

  override fun foo() {
  }

  override val a: Int
    override get(): Int {
      return 55
    }

}

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

  }

}

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

  }

  override fun foo() {
  }

  override val a: Int
    override get(): Int {
      return 55
    }

}

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

  }

}

open class InternalVisibility {
  internal open val a: Int
    field = 4
    internal open get

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

  }

  internal open fun foo() {
  }

}

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

  }

}

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

  }

  override fun foo() {
  }

  override val a: Int
    override get(): Int {
      return 55
    }

}

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

  }

}

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

  }

}

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

  }

  override fun foo() {
  }

  protected override val a: Int
    protected override get(): Int {
      return 55
    }

}

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

  }

}

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

  }

  override fun foo() {
  }

}

open class PrivateVisibility {
  private val a: Int
    field = 2
    private get

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

  }

  private fun foo() {
  }

}

open class ProtectedVisibility {
  protected open val a: Int
    field = 3
    protected open get

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

  }

  protected open fun foo() {
  }

}

open class PublicVisibility {
  open val a: Int
    field = 1
    open get

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

  }

  open fun foo() {
  }

}

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

  }

}

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

  }

  override fun foo() {
  }

  override val a: Int
    override get(): Int {
      return 55
    }

}

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

  }

}

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

  }

  override fun foo() {
  }

  protected override val a: Int
    protected override get(): Int {
      return 55
    }

}

class U : Java12 {
  constructor() /* primary */ {
    super/*Java12*/()
    /* <init>() */

  }

}

class V : Java12 {
  constructor() /* primary */ {
    super/*Java12*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

class W : Java13 {
  constructor() /* primary */ {
    super/*Java13*/()
    /* <init>() */

  }

}

class X : Java13 {
  constructor() /* primary */ {
    super/*Java13*/()
    /* <init>() */

  }

  override fun foo() {
  }

}

class Y : Java14 {
  constructor() /* primary */ {
    super/*Java14*/()
    /* <init>() */

  }

}

class Z : Java15 {
  constructor() /* primary */ {
    super/*Java15*/()
    /* <init>() */

  }

}

fun test(a: A, b: B, d: D, f: F, g: G, h: H, j: J, k: K, l: L, m: M, n: N, o: O, p: P, q: Q, r: R, s: S, t: T, u: U, v: V, w: W, x: X, aa: AA, cc: CC, dd: DD) {
  a.<get-a>() /*~> Unit */
  a.foo()
  b.<get-a>() /*~> Unit */
  b.foo()
  d.<get-a>() /*~> Unit */
  d.foo()
  f.<get-a>() /*~> Unit */
  f.foo()
  g.<get-a>() /*~> Unit */
  g.foo()
  h.<get-a>() /*~> Unit */
  h.foo()
  j.#a /*~> Unit */
  j.foo()
  k.<get-a>() /*~> Unit */
  k.foo()
  l.#a /*~> Unit */
  l.foo()
  m.#a /*~> Unit */
  m.foo()
  n.#a /*~> Unit */
  n.foo()
  o.#a /*~> Unit */
  o.foo()
  p.#a /*~> Unit */
  p.foo()
  q.#a /*~> Unit */
  q.foo()
  r.<get-a>() /*~> Unit */
  r.foo()
  s.#a /*~> Unit */
  s.foo()
  t.#a /*~> Unit */
  t.foo()
  u.#a /*~> Unit */
  u.foo()
  v.#a /*~> Unit */
  v.foo()
  w.#a /*~> Unit */
  w.foo()
  x.#a /*~> Unit */
  x.foo()
  aa.#a /*~> Unit */
  cc.#a /*~> Unit */
  cc.foo()
  dd.#a /*~> Unit */
  dd.foo()
}
