package Ġit . m sec . k io . runtime Ċ Ċ import Ġit . m sec . k io .* Ċ import Ġit . m sec . k io . result . Failure Ċ import Ġit . m sec . k io . result . Result Ċ import Ġit . m sec . k io . result . get Ċ Ċ object ĠRuntime Ġ: ĠK IOR untime Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< A > Ġunsafe Run Sync AndGet ( k io : ĠU IO < A >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute ( k io , ĠUnit ). get () ĊĊĠĠĠ Ġoverride Ġfun Ġ< E , ĠA > Ġunsafe Run Sync ( k io : ĠIO < E , ĠA >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute ( k io , ĠUnit ) ĊĊĠĠĠ Ġoverride Ġfun Ġ< R , ĠE , ĠA > Ġunsafe Run Sync ( k io : ĠK IO < R , ĠE , ĠA >, Ġr : ĠR ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute ( k io , Ġr ) ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġ< R , ĠE , ĠA > Ġexecute ( k : ĠK IO < R , ĠE , ĠA >, Ġinitial R : ĠR ): ĠResult < E , ĠA > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġstack Ġ= ĠRuntime Stack () ĊĊĠĠĠĠĠĠĠ Ġvar Ġr : ĠAny ? Ġ= Ġinitial R ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent : ĠAny Ġ= Ġk ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġwhen Ġ( current ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠE ager < *, Ġ*, Ġ*> Ġ-> Ġcurrent . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLazy < *, Ġ*, Ġ*> Ġ-> Ġtry Ġ{ Ġcurrent . value F () Ġ} Ġcatch ( t : ĠThrowable ) Ġ{ ĠFailure ( t ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAsk R < *, Ġ*, Ġ*> Ġ-> Ġ( current . access F Ġas Ġ( R ) Ġ-> ĠK IO < R , Ġ*, Ġ*> )( r Ġas ĠR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Map < *, Ġ*, Ġ*, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . push ( success Map To F ( current )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . prev ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFlat Map < *, Ġ*, Ġ*, Ġ*, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . push ( current . flatMap F Ġas ĠRuntime Fn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . prev ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult < *, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfn Ġ= Ġstack . pop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fn Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfn ( current ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Ġas ĠResult < E , ĠA > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAttempt < *, Ġ*> Ġ-> Ġcurrent . ur io ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠProvide R < *, Ġ*, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprev R Ġ= Ġr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . push Ġ{ Ġresult Ġ-> ĠRestore R ( prev R , Ġresult ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġcurrent . r ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . prev ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRestore R < *, Ġ*, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Ġ= Ġcurrent . r ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLazy Sus pended < *, Ġ*, Ġ*> Ġ-> Ġthrow ĠS us pension NotSupported ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFork < *, Ġ*, Ġ*> Ġ-> Ġthrow ĠS us pension NotSupported ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAwait < *, Ġ*, Ġ*> Ġ-> Ġthrow ĠS us pension NotSupported ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCancel < *, Ġ*, Ġ*> Ġ-> Ġthrow ĠS us pension NotSupported ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRace < *, Ġ*, Ġ*, Ġ*, Ġ*, Ġ*, Ġ*> Ġ-> Ġthrow ĠS us pension NotSupported ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠNever Here Exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠNever Here Exception Ġ: ĠRuntimeException () ĊĠĠĠ Ġobject ĠS us pension NotSupported Ġ: ĠRuntimeException (" Please Ġuse Ġthe Ġsus pended Ġruntime Ġversion Ġin Ġorder Ġto Ġmanage Ġcor outines .") Ċ Ċ } ĊĊ