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>() */

  }

  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)
  }

  override val bar: Int
    override get(): Int {
      return <this>.#<$$delegate_0>.<get-bar>()
    }

  local /* final field */ val <$$delegate_0>: IBase<TT> = impl

}
