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

  open var b: Int
    field = 1
    open get
    open set

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

  }

  open fun bar(o: Int) {
  }

  open fun foo(): Int {
    return 0
  }

}

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

  }

}

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

  }

  override fun bar(o: Int) {
  }

  override fun foo(): Int {
    return 2
  }

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

  override var b: Int
    override get(): Int {
      return 2
    }
    override set(value: Int) {
    }

}

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

  }

  override fun bar(o: Int) {
  }

  override fun foo(): Int {
    return 2
  }

}

interface D : Java2 {
}

interface KotlinInterface : Java3 {
}

fun test(a: A, b: B, c: C, d: D, e: E) {
  val k1: Int = a.<get-a>()
  val k2: Int = a.<get-b>()
  a.<set-b>(<set-?> = 3)
  val k3: Int = a.foo()
  val k4: Unit = a.bar(o = 1)
  val k5: Int = b.<get-a>()
  val k6: Int = b.<get-b>()
  b.<set-b>(<set-?> = 3)
  val k7: Int = b.foo()
  val k8: Unit = b.bar(o = 1)
  val k9: Int = c.<get-a>()
  val k10: Int = c.<get-b>()
  c.<set-b>(value = 3)
  val k11: Int = c.foo()
  val k12: Unit = c.bar(o = 1)
  val k17: Int = d.foo() /*!! Int */
  val k18: Unit = d.bar(o = 1)
  val k19: Int = e.foo()
  val k20: Unit = e.bar(o = 1)
}
