fun expectsString(s: String) {
}

fun expectsInt(i: Int) {
}

fun overloaded(s: String): String {
  return s
}

fun overloaded(x: Any): Any {
  return x
}

fun test1(x: Any) {
  when {
    x !is String -> return Unit
  }
  println(message = x /*as String */.<get-length>())
  expectsString(s = x /*as String */)
  expectsInt(i = x /*as String */.<get-length>())
  expectsString(s = overloaded(s = x /*as String */))
}

fun test2(x: Any): String {
  when {
    x !is String -> return ""
  }
  return overloaded(s = x /*as String */)
}

fun test3(x: Any): String {
  when {
    x !is String -> return ""
  }
  return x /*as String */
}
