fun produceFun(): Function0<String> {
  return local fun <anonymous>(): String {
    return ""
  }

}

fun testCombinedSuspendUnit(fn: Function0<Int>) {
  useSuspendUnit(fn = { // BLOCK
    local suspend fun Function0<Int>.suspendConversion0() {
      $callee.invoke()
    }

    ::suspendConversion0/*($callee = fn) */
  })
}

fun testNonVal() {
  useUnit(fn = { // BLOCK
    local fun Function0<String>.suspendConversion0() {
      $callee.invoke()
    }

    ::suspendConversion0/*($callee = produceFun()) */
  })
}

fun testSimple(fn: Function0<String>) {
  useUnit(fn = { // BLOCK
    local fun Function0<String>.suspendConversion0() {
      $callee.invoke()
    }

    ::suspendConversion0/*($callee = fn) */
  })
}

fun useSuspendUnit(fn: SuspendFunction0<Unit>) {
}

fun useUnit(fn: Function0<Unit>) {
}

