// CHECK:
//   Mangled name: A
//   Public signature: /A|null[0]
class A : Java1 {
  // CHECK:
  //   Mangled name: A#<init>(){}
  //   Public signature: /A.<init>|-5645683436151566731[0]
  //   Public signature debug description: <init>(){}
  constructor() /* primary */

  // CHECK:
  //   Mangled name: A{}a
  //   Public signature: /A.a|-1200697420457237799[0]
  //   Public signature debug description: {}a
  /* fake */ override val a: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-a>(){}kotlin.Int
    //   Public signature: /A.a.<get-a>|4232747788241509192[0]
    //   Public signature debug description: <get-a>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: A{}b
  //   Public signature: /A.b|772347207915745207[0]
  //   Public signature debug description: {}b
  /* fake */ override var b: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-b>(){}kotlin.Int
    //   Public signature: /A.b.<get-b>|-2902143276921469679[0]
    //   Public signature debug description: <get-b>(){}kotlin.Int
    /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: A#<set-b>(kotlin.Int){}
    //   Public signature: /A.b.<set-b>|393614520529327556[0]
    //   Public signature debug description: <set-b>(kotlin.Int){}
    /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: A{}c
  //   Public signature: /A.c|-4416962153448040627[0]
  //   Public signature debug description: {}c
  /* fake */ override val c: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-c>(){}kotlin.Int
    //   Public signature: /A.c.<get-c>|-2440337234483931882[0]
    //   Public signature debug description: <get-c>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: A{}d
  //   Public signature: /A.d|5174763769109925331[0]
  //   Public signature debug description: {}d
  /* fake */ override var d: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-d>(){}kotlin.Int
    //   Public signature: /A.d.<get-d>|-3703416348690628760[0]
    //   Public signature debug description: <get-d>(){}kotlin.Int
    /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: A#<set-d>(kotlin.Int){}
    //   Public signature: /A.d.<set-d>|4161969082808539024[0]
    //   Public signature debug description: <set-d>(kotlin.Int){}
    /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: A{}e
  //   Public signature: /A.e|-5812214850253973038[0]
  //   Public signature debug description: {}e
  /* fake */ override var e: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-e>(){}kotlin.Int
    //   Public signature: /A.e.<get-e>|7542680625372527774[0]
    //   Public signature debug description: <get-e>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: A{}f
  //   Public signature: /A.f|4026638760133205152[0]
  //   Public signature debug description: {}f
  protected /* fake */ override var f: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-f>(){}kotlin.Int
    //   Public signature: /A.f.<get-f>|-4635639937946815598[0]
    //   Public signature debug description: <get-f>(){}kotlin.Int
    protected /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: A#<set-f>(kotlin.Int){}
    //   Public signature: /A.f.<set-f>|3759249595734875908[0]
    //   Public signature debug description: <set-f>(kotlin.Int){}
    protected /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: A{}h
  //   Public signature: /A.h|1569348114433471852[0]
  //   Public signature debug description: {}h
  internal /* fake */ override var h: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-h>(){}kotlin.Int
    //   Public signature: /A.h.<get-h>|-7966737444545736232[0]
    //   Public signature debug description: <get-h>(){}kotlin.Int
    internal /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: A#<set-h>(kotlin.Int){}
    //   Public signature: /A.h.<set-h>|4870088823312964600[0]
    //   Public signature debug description: <set-h>(kotlin.Int){}
    internal /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: A{}i
  //   Public signature: /A.i|5014384761142332495[0]
  //   Public signature debug description: {}i
  protected /* fake */ override var i: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-i>(){}kotlin.Int
    //   Public signature: /A.i.<get-i>|-8784396159001927527[0]
    //   Public signature debug description: <get-i>(){}kotlin.Int
    protected /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: A{}j
  //   Public signature: /A.j|-6836075379230315579[0]
  //   Public signature debug description: {}j
  /* fake */ override val j: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-j>(){}kotlin.Int
    //   Public signature: /A.j.<get-j>|-3864411980088009037[0]
    //   Public signature debug description: <get-j>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: A{}k
  //   Public signature: /A.k|2162811783424158931[0]
  //   Public signature debug description: {}k
  /* fake */ override var k: Int
    // CHECK JVM_IR:
    //   Mangled name: A#<get-k>(){}kotlin.Int
    //   Public signature: /A.k.<get-k>|3400381018773294676[0]
    //   Public signature debug description: <get-k>(){}kotlin.Int
    /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: A#<set-k>(kotlin.Int){}
    //   Public signature: /A.k.<set-k>|5348632633861416145[0]
    //   Public signature debug description: <set-k>(kotlin.Int){}
    protected /* fake */ override set(value: Int): Unit

  // CHECK:
  //   Mangled name: A{}l
  //   Public signature: /A.l|3307215303229595169[0]
  //   Public signature debug description: {}l
  /* fake */ override var l: Boolean
    // CHECK JVM_IR:
    //   Mangled name: A#<get-l>(){}kotlin.Boolean
    //   Public signature: /A.l.<get-l>|-7394222383159531524[0]
    //   Public signature debug description: <get-l>(){}kotlin.Boolean
    /* fake */ override get(): Boolean
    // CHECK:
    //   Mangled name: A#<set-l>(kotlin.Boolean){}
    //   Public signature: /A.l.<set-l>|179600990731663245[0]
    //   Public signature debug description: <set-l>(kotlin.Boolean){}
    /* fake */ override set(<set-?>: Boolean): Unit

}

// CHECK:
//   Mangled name: B
//   Public signature: /B|null[0]
class B : Java1 {
  // CHECK:
  //   Mangled name: B{}b
  //   Public signature: /B.b|772347207915745207[0]
  //   Public signature debug description: {}b
  override var b: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-b>(){}kotlin.Int
    //   Public signature: /B.b.<get-b>|-2902143276921469679[0]
    //   Public signature debug description: <get-b>(){}kotlin.Int
    override get
    // CHECK:
    //   Mangled name: B#<set-b>(kotlin.Int){}
    //   Public signature: /B.b.<set-b>|393614520529327556[0]
    //   Public signature debug description: <set-b>(kotlin.Int){}
    override set(value: Int): Unit

  // CHECK:
  //   Mangled name: B{}d
  //   Public signature: /B.d|5174763769109925331[0]
  //   Public signature debug description: {}d
  override var d: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-d>(){}kotlin.Int
    //   Public signature: /B.d.<get-d>|-3703416348690628760[0]
    //   Public signature debug description: <get-d>(){}kotlin.Int
    override get
    // CHECK:
    //   Mangled name: B#<set-d>(kotlin.Int){}
    //   Public signature: /B.d.<set-d>|4161969082808539024[0]
    //   Public signature debug description: <set-d>(kotlin.Int){}
    override set(value: Int): Unit

  // CHECK:
  //   Mangled name: B{}j
  //   Public signature: /B.j|-6836075379230315579[0]
  //   Public signature debug description: {}j
  override var j: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-j>(){}kotlin.Int
    //   Public signature: /B.j.<get-j>|-3864411980088009037[0]
    //   Public signature debug description: <get-j>(){}kotlin.Int
    override get
    // CHECK:
    //   Mangled name: B#<set-j>(kotlin.Int){}
    //   Public signature: /B.j.<set-j>|-2552993734713918980[0]
    //   Public signature debug description: <set-j>(kotlin.Int){}
    open set

  // CHECK:
  //   Mangled name: B{}k
  //   Public signature: /B.k|2162811783424158931[0]
  //   Public signature debug description: {}k
  override var k: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-k>(){}kotlin.Int
    //   Public signature: /B.k.<get-k>|3400381018773294676[0]
    //   Public signature debug description: <get-k>(){}kotlin.Int
    override get(): Int
    // CHECK:
    //   Mangled name: B#<set-k>(kotlin.Int){}
    //   Public signature: /B.k.<set-k>|5348632633861416145[0]
    //   Public signature debug description: <set-k>(kotlin.Int){}
    protected override set(value: Int): Unit

  // CHECK:
  //   Mangled name: B{}l
  //   Public signature: /B.l|3307215303229595169[0]
  //   Public signature debug description: {}l
  override var l: Boolean
    // CHECK JVM_IR:
    //   Mangled name: B#<get-l>(){}kotlin.Boolean
    //   Public signature: /B.l.<get-l>|-7394222383159531524[0]
    //   Public signature debug description: <get-l>(){}kotlin.Boolean
    override get
    // CHECK:
    //   Mangled name: B#<set-l>(kotlin.Boolean){}
    //   Public signature: /B.l.<set-l>|179600990731663245[0]
    //   Public signature debug description: <set-l>(kotlin.Boolean){}
    override set(value: Boolean): Unit

  // CHECK:
  //   Mangled name: B#<init>(){}
  //   Public signature: /B.<init>|-5645683436151566731[0]
  //   Public signature debug description: <init>(){}
  constructor() /* primary */

  // CHECK:
  //   Mangled name: B{}e
  //   Public signature: /B.e|-5812214850253973038[0]
  //   Public signature debug description: {}e
  /* fake */ override var e: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-e>(){}kotlin.Int
    //   Public signature: /B.e.<get-e>|7542680625372527774[0]
    //   Public signature debug description: <get-e>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: B{}f
  //   Public signature: /B.f|4026638760133205152[0]
  //   Public signature debug description: {}f
  protected /* fake */ override var f: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-f>(){}kotlin.Int
    //   Public signature: /B.f.<get-f>|-4635639937946815598[0]
    //   Public signature debug description: <get-f>(){}kotlin.Int
    protected /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: B#<set-f>(kotlin.Int){}
    //   Public signature: /B.f.<set-f>|3759249595734875908[0]
    //   Public signature debug description: <set-f>(kotlin.Int){}
    protected /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: B{}h
  //   Public signature: /B.h|1569348114433471852[0]
  //   Public signature debug description: {}h
  internal /* fake */ override var h: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-h>(){}kotlin.Int
    //   Public signature: /B.h.<get-h>|-7966737444545736232[0]
    //   Public signature debug description: <get-h>(){}kotlin.Int
    internal /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: B#<set-h>(kotlin.Int){}
    //   Public signature: /B.h.<set-h>|4870088823312964600[0]
    //   Public signature debug description: <set-h>(kotlin.Int){}
    internal /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: B{}i
  //   Public signature: /B.i|5014384761142332495[0]
  //   Public signature debug description: {}i
  protected /* fake */ override var i: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-i>(){}kotlin.Int
    //   Public signature: /B.i.<get-i>|-8784396159001927527[0]
    //   Public signature debug description: <get-i>(){}kotlin.Int
    protected /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: B{}a
  //   Public signature: /B.a|-1200697420457237799[0]
  //   Public signature debug description: {}a
  override val a: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-a>(){}kotlin.Int
    //   Public signature: /B.a.<get-a>|4232747788241509192[0]
    //   Public signature debug description: <get-a>(){}kotlin.Int
    override get(): Int

  // CHECK:
  //   Mangled name: B{}c
  //   Public signature: /B.c|-4416962153448040627[0]
  //   Public signature debug description: {}c
  override val c: Int
    // CHECK JVM_IR:
    //   Mangled name: B#<get-c>(){}kotlin.Int
    //   Public signature: /B.c.<get-c>|-2440337234483931882[0]
    //   Public signature debug description: <get-c>(){}kotlin.Int
    override get(): Int

}

// CHECK:
//   Mangled name: C
//   Public signature: /C|null[0]
class C : Java2 {
  // CHECK:
  //   Mangled name: C#<init>(){}
  //   Public signature: /C.<init>|-5645683436151566731[0]
  //   Public signature debug description: <init>(){}
  constructor() /* primary */

  // CHECK:
  //   Mangled name: C{}a
  //   Public signature: /C.a|-1200697420457237799[0]
  //   Public signature debug description: {}a
  /* fake */ override val a: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-a>(){}kotlin.Int
    //   Public signature: /C.a.<get-a>|4232747788241509192[0]
    //   Public signature debug description: <get-a>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: C{}b
  //   Public signature: /C.b|772347207915745207[0]
  //   Public signature debug description: {}b
  /* fake */ override var b: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-b>(){}kotlin.Int
    //   Public signature: /C.b.<get-b>|-2902143276921469679[0]
    //   Public signature debug description: <get-b>(){}kotlin.Int
    /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: C#<set-b>(kotlin.Int){}
    //   Public signature: /C.b.<set-b>|393614520529327556[0]
    //   Public signature debug description: <set-b>(kotlin.Int){}
    /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: C{}c
  //   Public signature: /C.c|-4416962153448040627[0]
  //   Public signature debug description: {}c
  /* fake */ override val c: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-c>(){}kotlin.Int
    //   Public signature: /C.c.<get-c>|-2440337234483931882[0]
    //   Public signature debug description: <get-c>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: C{}d
  //   Public signature: /C.d|5174763769109925331[0]
  //   Public signature debug description: {}d
  /* fake */ override var d: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-d>(){}kotlin.Int
    //   Public signature: /C.d.<get-d>|-3703416348690628760[0]
    //   Public signature debug description: <get-d>(){}kotlin.Int
    /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: C#<set-d>(kotlin.Int){}
    //   Public signature: /C.d.<set-d>|4161969082808539024[0]
    //   Public signature debug description: <set-d>(kotlin.Int){}
    /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: C{}e
  //   Public signature: /C.e|-5812214850253973038[0]
  //   Public signature debug description: {}e
  /* fake */ override var e: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-e>(){}kotlin.Int
    //   Public signature: /C.e.<get-e>|7542680625372527774[0]
    //   Public signature debug description: <get-e>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: C{}f
  //   Public signature: /C.f|4026638760133205152[0]
  //   Public signature debug description: {}f
  protected /* fake */ override var f: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-f>(){}kotlin.Int
    //   Public signature: /C.f.<get-f>|-4635639937946815598[0]
    //   Public signature debug description: <get-f>(){}kotlin.Int
    protected /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: C#<set-f>(kotlin.Int){}
    //   Public signature: /C.f.<set-f>|3759249595734875908[0]
    //   Public signature debug description: <set-f>(kotlin.Int){}
    protected /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: C{}h
  //   Public signature: /C.h|1569348114433471852[0]
  //   Public signature debug description: {}h
  internal /* fake */ override var h: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-h>(){}kotlin.Int
    //   Public signature: /C.h.<get-h>|-7966737444545736232[0]
    //   Public signature debug description: <get-h>(){}kotlin.Int
    internal /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: C#<set-h>(kotlin.Int){}
    //   Public signature: /C.h.<set-h>|4870088823312964600[0]
    //   Public signature debug description: <set-h>(kotlin.Int){}
    internal /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: C{}i
  //   Public signature: /C.i|5014384761142332495[0]
  //   Public signature debug description: {}i
  protected /* fake */ override var i: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-i>(){}kotlin.Int
    //   Public signature: /C.i.<get-i>|-8784396159001927527[0]
    //   Public signature debug description: <get-i>(){}kotlin.Int
    protected /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: C{}j
  //   Public signature: /C.j|-6836075379230315579[0]
  //   Public signature debug description: {}j
  /* fake */ override val j: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-j>(){}kotlin.Int
    //   Public signature: /C.j.<get-j>|-3864411980088009037[0]
    //   Public signature debug description: <get-j>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: C{}k
  //   Public signature: /C.k|2162811783424158931[0]
  //   Public signature debug description: {}k
  /* fake */ override var k: Int
    // CHECK JVM_IR:
    //   Mangled name: C#<get-k>(){}kotlin.Int
    //   Public signature: /C.k.<get-k>|3400381018773294676[0]
    //   Public signature debug description: <get-k>(){}kotlin.Int
    /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: C#<set-k>(kotlin.Int){}
    //   Public signature: /C.k.<set-k>|5348632633861416145[0]
    //   Public signature debug description: <set-k>(kotlin.Int){}
    protected /* fake */ override set(value: Int): Unit

  // CHECK:
  //   Mangled name: C{}l
  //   Public signature: /C.l|3307215303229595169[0]
  //   Public signature debug description: {}l
  /* fake */ override var l: Boolean
    // CHECK JVM_IR:
    //   Mangled name: C#<get-l>(){}kotlin.Boolean
    //   Public signature: /C.l.<get-l>|-7394222383159531524[0]
    //   Public signature debug description: <get-l>(){}kotlin.Boolean
    /* fake */ override get(): Boolean
    // CHECK:
    //   Mangled name: C#<set-l>(kotlin.Boolean){}
    //   Public signature: /C.l.<set-l>|179600990731663245[0]
    //   Public signature debug description: <set-l>(kotlin.Boolean){}
    /* fake */ override set(<set-?>: Boolean): Unit

}

// CHECK:
//   Mangled name: D
//   Public signature: /D|null[0]
class D : Java2 {
  // CHECK:
  //   Mangled name: D{}b
  //   Public signature: /D.b|772347207915745207[0]
  //   Public signature debug description: {}b
  override var b: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-b>(){}kotlin.Int
    //   Public signature: /D.b.<get-b>|-2902143276921469679[0]
    //   Public signature debug description: <get-b>(){}kotlin.Int
    override get(): Int
    // CHECK:
    //   Mangled name: D#<set-b>(kotlin.Int){}
    //   Public signature: /D.b.<set-b>|393614520529327556[0]
    //   Public signature debug description: <set-b>(kotlin.Int){}
    override set(value: Int): Unit

  // CHECK:
  //   Mangled name: D{}d
  //   Public signature: /D.d|5174763769109925331[0]
  //   Public signature debug description: {}d
  override var d: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-d>(){}kotlin.Int
    //   Public signature: /D.d.<get-d>|-3703416348690628760[0]
    //   Public signature debug description: <get-d>(){}kotlin.Int
    override get
    // CHECK:
    //   Mangled name: D#<set-d>(kotlin.Int){}
    //   Public signature: /D.d.<set-d>|4161969082808539024[0]
    //   Public signature debug description: <set-d>(kotlin.Int){}
    override set(value: Int): Unit

  // CHECK:
  //   Mangled name: D#<init>(){}
  //   Public signature: /D.<init>|-5645683436151566731[0]
  //   Public signature debug description: <init>(){}
  constructor() /* primary */

  // CHECK:
  //   Mangled name: D{}e
  //   Public signature: /D.e|-5812214850253973038[0]
  //   Public signature debug description: {}e
  /* fake */ override var e: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-e>(){}kotlin.Int
    //   Public signature: /D.e.<get-e>|7542680625372527774[0]
    //   Public signature debug description: <get-e>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: D{}f
  //   Public signature: /D.f|4026638760133205152[0]
  //   Public signature debug description: {}f
  protected /* fake */ override var f: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-f>(){}kotlin.Int
    //   Public signature: /D.f.<get-f>|-4635639937946815598[0]
    //   Public signature debug description: <get-f>(){}kotlin.Int
    protected /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: D#<set-f>(kotlin.Int){}
    //   Public signature: /D.f.<set-f>|3759249595734875908[0]
    //   Public signature debug description: <set-f>(kotlin.Int){}
    protected /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: D{}h
  //   Public signature: /D.h|1569348114433471852[0]
  //   Public signature debug description: {}h
  internal /* fake */ override var h: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-h>(){}kotlin.Int
    //   Public signature: /D.h.<get-h>|-7966737444545736232[0]
    //   Public signature debug description: <get-h>(){}kotlin.Int
    internal /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: D#<set-h>(kotlin.Int){}
    //   Public signature: /D.h.<set-h>|4870088823312964600[0]
    //   Public signature debug description: <set-h>(kotlin.Int){}
    internal /* fake */ override set(<set-?>: Int): Unit

  // CHECK:
  //   Mangled name: D{}i
  //   Public signature: /D.i|5014384761142332495[0]
  //   Public signature debug description: {}i
  protected /* fake */ override var i: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-i>(){}kotlin.Int
    //   Public signature: /D.i.<get-i>|-8784396159001927527[0]
    //   Public signature debug description: <get-i>(){}kotlin.Int
    protected /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: D{}j
  //   Public signature: /D.j|-6836075379230315579[0]
  //   Public signature debug description: {}j
  /* fake */ override val j: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-j>(){}kotlin.Int
    //   Public signature: /D.j.<get-j>|-3864411980088009037[0]
    //   Public signature debug description: <get-j>(){}kotlin.Int
    /* fake */ override get(): Int

  // CHECK:
  //   Mangled name: D{}k
  //   Public signature: /D.k|2162811783424158931[0]
  //   Public signature debug description: {}k
  /* fake */ override var k: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-k>(){}kotlin.Int
    //   Public signature: /D.k.<get-k>|3400381018773294676[0]
    //   Public signature debug description: <get-k>(){}kotlin.Int
    /* fake */ override get(): Int
    // CHECK:
    //   Mangled name: D#<set-k>(kotlin.Int){}
    //   Public signature: /D.k.<set-k>|5348632633861416145[0]
    //   Public signature debug description: <set-k>(kotlin.Int){}
    protected /* fake */ override set(value: Int): Unit

  // CHECK:
  //   Mangled name: D{}l
  //   Public signature: /D.l|3307215303229595169[0]
  //   Public signature debug description: {}l
  /* fake */ override var l: Boolean
    // CHECK JVM_IR:
    //   Mangled name: D#<get-l>(){}kotlin.Boolean
    //   Public signature: /D.l.<get-l>|-7394222383159531524[0]
    //   Public signature debug description: <get-l>(){}kotlin.Boolean
    /* fake */ override get(): Boolean
    // CHECK:
    //   Mangled name: D#<set-l>(kotlin.Boolean){}
    //   Public signature: /D.l.<set-l>|179600990731663245[0]
    //   Public signature debug description: <set-l>(kotlin.Boolean){}
    /* fake */ override set(<set-?>: Boolean): Unit

  // CHECK:
  //   Mangled name: D{}a
  //   Public signature: /D.a|-1200697420457237799[0]
  //   Public signature debug description: {}a
  override val a: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-a>(){}kotlin.Int
    //   Public signature: /D.a.<get-a>|4232747788241509192[0]
    //   Public signature debug description: <get-a>(){}kotlin.Int
    override get(): Int

  // CHECK:
  //   Mangled name: D{}c
  //   Public signature: /D.c|-4416962153448040627[0]
  //   Public signature debug description: {}c
  override val c: Int
    // CHECK JVM_IR:
    //   Mangled name: D#<get-c>(){}kotlin.Int
    //   Public signature: /D.c.<get-c>|-2440337234483931882[0]
    //   Public signature debug description: <get-c>(){}kotlin.Int
    override get(): Int

}

// CHECK:
//   Mangled name: KotlinClass
//   Public signature: /KotlinClass|null[0]
open class KotlinClass {
  // CHECK:
  //   Mangled name: KotlinClass{}a
  //   Public signature: /KotlinClass.a|-1200697420457237799[0]
  //   Public signature debug description: {}a
  open val a: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-a>(){}kotlin.Int
    //   Public signature: /KotlinClass.a.<get-a>|4232747788241509192[0]
    //   Public signature debug description: <get-a>(){}kotlin.Int
    open get

  // CHECK:
  //   Mangled name: KotlinClass{}b
  //   Public signature: /KotlinClass.b|772347207915745207[0]
  //   Public signature debug description: {}b
  open var b: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-b>(){}kotlin.Int
    //   Public signature: /KotlinClass.b.<get-b>|-2902143276921469679[0]
    //   Public signature debug description: <get-b>(){}kotlin.Int
    open get
    // CHECK:
    //   Mangled name: KotlinClass#<set-b>(kotlin.Int){}
    //   Public signature: /KotlinClass.b.<set-b>|393614520529327556[0]
    //   Public signature debug description: <set-b>(kotlin.Int){}
    open set

  // CHECK:
  //   Mangled name: KotlinClass{}d
  //   Public signature: /KotlinClass.d|5174763769109925331[0]
  //   Public signature debug description: {}d
  open var d: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-d>(){}kotlin.Int
    //   Public signature: /KotlinClass.d.<get-d>|-3703416348690628760[0]
    //   Public signature debug description: <get-d>(){}kotlin.Int
    open get
    // CHECK:
    //   Mangled name: KotlinClass#<set-d>(kotlin.Int){}
    //   Public signature: /KotlinClass.d.<set-d>|4161969082808539024[0]
    //   Public signature debug description: <set-d>(kotlin.Int){}
    open set(value: Int): Unit

  // CHECK:
  //   Mangled name: KotlinClass{}e
  //   Public signature: /KotlinClass.e|-5812214850253973038[0]
  //   Public signature debug description: {}e
  var e: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-e>(){}kotlin.Int
    //   Public signature: /KotlinClass.e.<get-e>|7542680625372527774[0]
    //   Public signature debug description: <get-e>(){}kotlin.Int
    get(): Int
    // CHECK:
    //   Mangled name: KotlinClass#<set-e>(kotlin.Int){}
    //   Public signature: /KotlinClass.e.<set-e>|352344213206183027[0]
    //   Public signature debug description: <set-e>(kotlin.Int){}
    private set(value: Int): Unit

  // CHECK:
  //   Mangled name: KotlinClass{}f
  //   Public signature: /KotlinClass.f|4026638760133205152[0]
  //   Public signature debug description: {}f
  protected var f: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-f>(){}kotlin.Int
    //   Public signature: /KotlinClass.f.<get-f>|-4635639937946815598[0]
    //   Public signature debug description: <get-f>(){}kotlin.Int
    protected get(): Int
    // CHECK:
    //   Mangled name: KotlinClass#<set-f>(kotlin.Int){}
    //   Public signature: /KotlinClass.f.<set-f>|3759249595734875908[0]
    //   Public signature debug description: <set-f>(kotlin.Int){}
    protected set(value: Int): Unit

  // CHECK:
  //   Mangled name: KotlinClass{}g
  //   Public signature: /KotlinClass.g|417398068120208694[0]
  //   Public signature debug description: {}g
  private var g: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-g>(){}kotlin.Int
    //   Public signature: /KotlinClass.g.<get-g>|6197503063121438862[0]
    //   Public signature debug description: <get-g>(){}kotlin.Int
    private get(): Int
    // CHECK:
    //   Mangled name: KotlinClass#<set-g>(kotlin.Int){}
    //   Public signature: /KotlinClass.g.<set-g>|-7798283286247038206[0]
    //   Public signature debug description: <set-g>(kotlin.Int){}
    private set(value: Int): Unit

  // CHECK:
  //   Mangled name: KotlinClass{}h
  //   Public signature: /KotlinClass.h|1569348114433471852[0]
  //   Public signature debug description: {}h
  internal var h: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-h>(){}kotlin.Int
    //   Public signature: /KotlinClass.h.<get-h>|-7966737444545736232[0]
    //   Public signature debug description: <get-h>(){}kotlin.Int
    internal get(): Int
    // CHECK:
    //   Mangled name: KotlinClass#<set-h>(kotlin.Int){}
    //   Public signature: /KotlinClass.h.<set-h>|4870088823312964600[0]
    //   Public signature debug description: <set-h>(kotlin.Int){}
    internal set(value: Int): Unit

  // CHECK:
  //   Mangled name: KotlinClass{}i
  //   Public signature: /KotlinClass.i|5014384761142332495[0]
  //   Public signature debug description: {}i
  protected var i: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-i>(){}kotlin.Int
    //   Public signature: /KotlinClass.i.<get-i>|-8784396159001927527[0]
    //   Public signature debug description: <get-i>(){}kotlin.Int
    protected get(): Int
    // CHECK:
    //   Mangled name: KotlinClass#<set-i>(kotlin.Int){}
    //   Public signature: /KotlinClass.i.<set-i>|1223530399758590178[0]
    //   Public signature debug description: <set-i>(kotlin.Int){}
    private set(value: Int): Unit

  // CHECK:
  //   Mangled name: KotlinClass{}k
  //   Public signature: /KotlinClass.k|2162811783424158931[0]
  //   Public signature debug description: {}k
  open var k: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-k>(){}kotlin.Int
    //   Public signature: /KotlinClass.k.<get-k>|3400381018773294676[0]
    //   Public signature debug description: <get-k>(){}kotlin.Int
    open get
    // CHECK:
    //   Mangled name: KotlinClass#<set-k>(kotlin.Int){}
    //   Public signature: /KotlinClass.k.<set-k>|5348632633861416145[0]
    //   Public signature debug description: <set-k>(kotlin.Int){}
    protected open set

  // CHECK:
  //   Mangled name: KotlinClass{}l
  //   Public signature: /KotlinClass.l|3307215303229595169[0]
  //   Public signature debug description: {}l
  open var l: Boolean
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-l>(){}kotlin.Boolean
    //   Public signature: /KotlinClass.l.<get-l>|-7394222383159531524[0]
    //   Public signature debug description: <get-l>(){}kotlin.Boolean
    open get
    // CHECK:
    //   Mangled name: KotlinClass#<set-l>(kotlin.Boolean){}
    //   Public signature: /KotlinClass.l.<set-l>|179600990731663245[0]
    //   Public signature debug description: <set-l>(kotlin.Boolean){}
    open set

  // CHECK:
  //   Mangled name: KotlinClass#<init>(){}
  //   Public signature: /KotlinClass.<init>|-5645683436151566731[0]
  //   Public signature debug description: <init>(){}
  constructor() /* primary */

  // CHECK:
  //   Mangled name: KotlinClass{}c
  //   Public signature: /KotlinClass.c|-4416962153448040627[0]
  //   Public signature debug description: {}c
  open val c: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-c>(){}kotlin.Int
    //   Public signature: /KotlinClass.c.<get-c>|-2440337234483931882[0]
    //   Public signature debug description: <get-c>(){}kotlin.Int
    open get(): Int

  // CHECK:
  //   Mangled name: KotlinClass{}j
  //   Public signature: /KotlinClass.j|-6836075379230315579[0]
  //   Public signature debug description: {}j
  open val j: Int
    // CHECK JVM_IR:
    //   Mangled name: KotlinClass#<get-j>(){}kotlin.Int
    //   Public signature: /KotlinClass.j.<get-j>|-3864411980088009037[0]
    //   Public signature debug description: <get-j>(){}kotlin.Int
    open get(): Int

}

// CHECK:
//   Mangled name: #test(A;B;C;D){}
//   Public signature: /test|7656439746344069424[0]
//   Public signature debug description: test(A;B;C;D){}
fun test(a: A, b: B, c: C, d: D): Unit
