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

  }

  open fun funA1() {
  }

  protected open fun funA2() {
  }

  internal open fun funA3() {
  }

}

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

  }

  override fun funA1() {
  }

  protected override fun funA2() {
  }

  internal override fun funA3() {
  }

}

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

  }

}

fun test(c: C) {
  c.funA1()
  c.funA3()
}
