interface A {
  abstract fun f(x: String = "OK"): String

}

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

  }

  override fun f(x: String): String {
    return x
  }

}

class C : A {
  constructor(x: A) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val x: A
    field = x
    get

  override fun f(x: String): String {
    return <this>.#x.f(x = x)
  }

}
