// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt

package test

inline fun linearLayout2(init: X.() -> Unit) {
    return X().init()
}

var result = "fail"
class X {
    fun calc() {
        result = "OK"
    }
}

// FILE: 2.kt
import test.*

class A  {
    fun test() {
        linearLayout2 {
            {
                apply2 {
                    this@linearLayout2::calc
                }()
            }.let { it() }
        }
    }

    public fun <T, Z> T.apply2(block: T.() -> Z): Z {
        return block()
    }

}

fun box(): String {
    A().test()
    return result
}
