// See also KT-4285 open class A { open fun foo(x: Int = 0) {} open fun gav(y: Int = 1, z: Int = 2) {} } class B: A() { tailrec override fun foo(x: Int) { foo() } tailrec override fun gav(y: Int, z: Int) { gav(y) } tailrec fun bar(y: Double): Double = bar(y * 2.0) } class C: A() { tailrec override fun foo(x: Int) { foo(0) } tailrec override fun gav(y: Int, z: Int) { gav(y - 1, z - 1) } tailrec fun bar(y: Int = 1, z: Int = 2) { bar(z) } }