fun J.test0(a: Runnable) {
  runStatic(r = a)
  <this>.runIt(r = a)
}

fun test1() {
  runStatic(r = local fun <anonymous>() {
    test1()
  }
 /*-> @FlexibleNullability Runnable? */)
}

fun J.test2() {
  <this>.runIt(r = local fun <anonymous>() {
    test1()
  }
 /*-> @FlexibleNullability Runnable? */)
}

fun J.test3(a: Function0<Unit>) {
  <this>.run2(r1 = a /*-> @FlexibleNullability Runnable? */, r2 = a /*-> @FlexibleNullability Runnable? */)
}

fun J.test4(a: Function0<Unit>, b: Function0<Unit>, flag: Boolean) {
  <this>.runIt(r = when {
    flag -> a
    else -> b
  } /*-> @FlexibleNullability Runnable? */)
}
