abstract class A {
  open var a1: Int
    field = 0
    open get
    open set

  protected open var a2: Int
    field = 0
    protected open get
    protected open set

  internal open var a3: Int
    field = 0
    internal open get
    internal open set

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

  }

}

abstract class B : A {
  override var a1: Int
    field = 0
    override get
    override set

  protected override var a2: Int
    field = 0
    protected override get
    protected override set

  internal override var a3: Int
    field = 0
    internal override get
    internal override set

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

  }

}

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

  }

}

fun test(c: C) {
  c.<set-a1>(<set-?> = 1)
  c.<set-a3>(<set-?> = 2)
}
