val p: Any?
  field = null
  get

fun foo(): Any? {
  return null
}

fun test1(a: Any?, b: Any): Any {
  return { // BLOCK
    val tmp_0: Any? = a
    when {
      EQEQ(arg0 = tmp_0, arg1 = null) -> b
      else -> tmp_0
    }
  }
}

fun test2(a: String?, b: Any): Any {
  return { // BLOCK
    val tmp_1: String? = a
    when {
      EQEQ(arg0 = tmp_1, arg1 = null) -> b
      else -> tmp_1
    }
  }
}

fun test3(a: Any?, b: Any?): String {
  when {
    b !is String -> return ""
  }
  when {
    a !is String? -> return ""
  }
  return { // BLOCK
    val tmp_2: String? = a /*as String? */
    when {
      EQEQ(arg0 = tmp_2, arg1 = null) -> b /*as String */
      else -> tmp_2
    }
  }
}

fun test4(x: Any): Any {
  return { // BLOCK
    val tmp_3: Any? = <get-p>()
    when {
      EQEQ(arg0 = tmp_3, arg1 = null) -> x
      else -> tmp_3
    }
  }
}

fun test5(x: Any): Any {
  return { // BLOCK
    val tmp_4: Any? = foo()
    when {
      EQEQ(arg0 = tmp_4, arg1 = null) -> x
      else -> tmp_4
    }
  }
}
