fun foo() { when { true -> { val a = object: Function0 { override fun invoke(): Int = 1 } val b = object: Function0 { override fun invoke(): Int = a() + 1 } println(a() - b()) } true -> { val b = object: Function0 { override fun invoke(): Int = 1 } val a = object: Function0 { override fun invoke(): Int = b() + 1 } println(b() - a()) } true -> { val b = object: Function0 { override fun invoke(): Int = 1 } val a = object: Function0 { override fun invoke(): Int = b() + 1 } println(a() - b()) } } }