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

  }

}

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

  }

  override fun getA(): Int {
    return 2
  }

  override fun isB(): Boolean {
    return false
  }

  override fun setA(t: Int) {
  }

  override fun setB(t: Boolean) {
  }

}

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

  }

}

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

  }

}

open class KotlinClass2 : Java2 {
  val b: Boolean
    field = true
    get

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

  }

}

fun test(a: A, b: B, c: C) {
  val k1: Int = a.getA()
  val k2: Boolean = a.isB()
  a.setA(t = 2)
  a.setB(t = true)
  val k3: Int = b.getA()
  val k4: Boolean = b.isB()
  b.setA(t = 2)
  b.setB(t = false)
  val k5: Boolean = c.<get-b>()
  val k6: Boolean = c.isB()
  c.setB(t = true)
  val k7: Int = c.getA()
  c.setA(t = 2)
}
