// OPTIONS: true, false, false, false, true, false // PARAM_DESCRIPTOR: local final fun kotlin.Int.bar1(m: kotlin.Int): kotlin.Int defined in foo // PARAM_DESCRIPTOR: local final fun kotlin.Int.bar2(m: kotlin.Int): kotlin.Int defined in foo // PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo // PARAM_TYPES: kotlin.Int.(kotlin.Int) -> kotlin.Int // PARAM_TYPES: kotlin.Int.(kotlin.Int) -> kotlin.Int // PARAM_TYPES: kotlin.Int fun foo(n: Int): Int { fun Int.bar1(m: Int) = this + m + n fun Int.bar2(m: Int) = this * m * n return i(Int::bar1, Int::bar2, n) } private fun i(bar1: Int.(Int) -> Int, bar2: Int.(Int) -> Int, n: Int) = n.bar1(n + 1).bar2(n + 2)