import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.CountDownLatch; import java.util.concurrent.locks.ReentrantLock; fun Int.latch(op: CountDownLatch.() -> T) : T { val cdl = CountDownLatch(this) val res = cdl.op() cdl.await() return res } fun id(op : ()->Unit) = op() fun box() : String { 1.latch{ id { countDown() } } return "OK" }