interface A { abstract fun f(x: String = "OK"): String } class B : A { constructor() /* primary */ { super/*Any*/() /* () */ } override fun f(x: String): String { return x } } class C : A { constructor(x: A) /* primary */ { super/*Any*/() /* () */ } val x: A field = x get override fun f(x: String): String { return .#x.f(x = x) } }