open class A {
  lateinit var b: Number
    get
    set

  companion object Companion {
    private constructor() /* primary */ {
      super/*Any*/()
      /* <init>() */

    }

    const val a: Int
      field = 0
      get

  }

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

  }

}

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

  }

}

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

  }

}

abstract class D : A, Java3 {
  constructor() /* primary */ {
    super/*A*/()
    /* <init>() */

  }

}

interface KotlinInterface {
  abstract var a: Int
    abstract get
    abstract set

  abstract var b: Number
    abstract get
    abstract set

}

fun test(b: B, c: C, d: D) {
  b.<set-b>(<set-?> = 3)
  b.<get-b>() /*~> Unit */
  c.<set-b>(<set-?> = 4)
  c.<get-b>() /*~> Unit */
  d.<set-a>(<set-?> = 2)
  d.<set-b>(<set-?> = 7)
  d.<get-a>() /*~> Unit */
  d.<get-b>() /*~> Unit */
}
