fun test() {
  val nullStr: @FlexibleNullability String? = nullString()
  val nonnullStr: @FlexibleNullability String? = nonnullString()
  foo<@FlexibleNullability String?>($receiver = nullStr) /*~> Unit */
  foo<@FlexibleNullability String?>($receiver = nonnullStr) /*~> Unit */
  fooN<@FlexibleNullability String?>($receiver = nullStr) /*~> Unit */
  fooN<@FlexibleNullability String?>($receiver = nonnullStr) /*~> Unit */
}

inline fun <reified T : Any?> T.foo(): T {
  return <this> as T
}

inline fun <reified T : Any?> T.fooN(): T? {
  return <this> as T?
}

