interface IBase<T : Any?> {
  abstract fun foo(x: Int)
  abstract val bar: Int
    abstract get

  abstract fun <X : Any?> qux(t: T, x: X)

}

class Test<TT : Any?> : IBase<TT> {
  constructor(impl: IBase<TT>) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  private /* final field */ val $$delegate_0: IBase<TT> = impl
  override val bar: Int
    override get(): Int {
      return <this>.#$$delegate_0.<get-bar>()
    }

  override fun foo(x: Int) {
    <this>.#$$delegate_0.foo(x = x)
  }

  override fun <X : Any?> qux(t: TT, x: X) {
    <this>.#$$delegate_0.qux<X>(t = t, x = x)
  }

}
