// ĠWITH _ RUNTIME Ċ // ĠWITH _ COR OUT IN ES Ċ import Ġkotlin . coroutines .* Ċ Ċ suspend Ġfun Ġsuspend Here (): ĠString Ġ= ĠCor outine Intr insics . suspend Coroutine Or Return Ġ{ Ġx Ġ-> ĊĠĠĠ Ġx . resume (" OK ") ĊĠĠĠ ĠCor outine Intr insics . SUS PEN DED Ċ } Ċ Ċ fun Ġbuilder ( c : Ġsuspend Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġvar Ġwas Handle Result Called Ġ= Ġfalse ĊĠĠĠ Ġc . start Coroutine ( handle Result Continuation Ġ{ ĊĠĠĠĠĠĠĠ Ġwas Handle Result Called Ġ= Ġtrue ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġif Ġ(! was Handle Result Called ) Ġthrow ĠRuntimeException (" fail Ġ 1 ") Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĊĠĠĠ Ġbuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġresult ++ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( suspend Here () Ġ!= Ġ" OK ") Ġthrow ĠRuntimeException (" fail Ġ 2 ") ĊĊĠĠĠĠĠĠĠ Ġresult -- ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( result Ġ!= Ġ 0 ) Ġreturn Ġ" fail Ġ 3 " ĊĊĠĠĠ Ġbuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġ-- result ĊĊĠĠĠĠĠĠĠ Ġif Ġ( suspend Here () Ġ!= Ġ" OK ") Ġthrow ĠRuntimeException (" fail Ġ 4 ") ĊĊĠĠĠĠĠĠĠ Ġ++ result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( result Ġ!= Ġ 0 ) Ġreturn Ġ" fail Ġ 5 " ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ