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

  }

}

class B : Java2 {
  val a: Int
    field = 10
    get

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

  }

  fun bar(): Int {
    return 10
  }

  fun foo(t: Int) {
  }

}

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

  }

}

class D : Java3 {
  val a: Int
    field = 10
    get

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

  }

  fun bar(): Int {
    return 10
  }

  fun foo(t: Int) {
  }

}

fun test(b: B, d: D) {
  b.<get-a>() /*~> Unit */
  b.foo(t = 1)
  b.bar() /*~> Unit */
  d.<get-a>() /*~> Unit */
  d.foo(t = 1)
  d.bar() /*~> Unit */
}
