var subjectEvaluated = 0

fun String.foo() = length.also { ++subjectEvaluated }

fun test(s: String?) =
    when (s?.foo()) {
        0 -> "zero"
        1 -> "one"
        2 -> "two"
        else -> "other"
    }

fun box(): String {
    val t = test("12")
    if (t != "two") return "Fail: $t"
    if (subjectEvaluated != 1) return "Fail: subjectEvaluated=$subjectEvaluated"

    return "OK"
}