fun builder(c: suspend () -> Unit) {} private val lock = Any() suspend fun suspensionPoint() {} fun test() { builder { inlineMe { suspensionPoint() } } builder { monitorInFinally( {}, { suspensionPoint() } ) } builder { withCrossinline {} withCrossinline { suspensionPoint() } } synchronized(lock) { builder { suspensionPoint() } } synchronized(lock) { object : SuspendRunnable { override suspend fun run() { suspensionPoint() } } } } interface SuspendRunnable { suspend fun run() } inline fun withCrossinline(crossinline a: suspend () -> Unit): suspend () -> Unit { val c : suspend () -> Unit = { inlineMe { a() } } return c }