// CHECK JVM_IR:
//   Mangled name: #asFoo(0:0){0§<kotlin.Any?>}0:0
//   Public signature: /asFoo|443034924888332617[0]
//   Public signature debug description: asFoo(0:0){0§<kotlin.Any?>}0:0
// CHECK JS_IR NATIVE:
//   Mangled name: #asFoo(0:0){0§<kotlin.Any?>}
//   Public signature: /asFoo|4722089382470966383[0]
//   Public signature debug description: asFoo(0:0){0§<kotlin.Any?>}
fun <T : Any?> asFoo(t: T): (T & Any)

// CHECK JVM_IR:
//   Mangled name: #implicitAsFoo(kotlin.Any){0§<kotlin.CharSequence?>}kotlin.Int
//   Public signature: /implicitAsFoo|4739175697127707782[0]
//   Public signature debug description: implicitAsFoo(kotlin.Any){0§<kotlin.CharSequence?>}kotlin.Int
// CHECK JS_IR NATIVE:
//   Mangled name: #implicitAsFoo(kotlin.Any){0§<kotlin.CharSequence?>}
//   Public signature: /implicitAsFoo|3965996438260583195[0]
//   Public signature debug description: implicitAsFoo(kotlin.Any){0§<kotlin.CharSequence?>}
inline fun <reified T : CharSequence?> implicitAsFoo(x: Any): Int

// CHECK JVM_IR:
//   Mangled name: #safeAsFoo(0:0){0§<kotlin.Any?>}0:0?
//   Public signature: /safeAsFoo|8056934357621197545[0]
//   Public signature debug description: safeAsFoo(0:0){0§<kotlin.Any?>}0:0?
// CHECK JS_IR NATIVE:
//   Mangled name: #safeAsFoo(0:0){0§<kotlin.Any?>}
//   Public signature: /safeAsFoo|5988285743365042743[0]
//   Public signature debug description: safeAsFoo(0:0){0§<kotlin.Any?>}
fun <T : Any?> safeAsFoo(t: T): T?

