package Ġde . k state . example Ċ Ċ import Ġde . k state . state machine . def . StateMachine Ċ import Ġde . k state . state machine . impl . Standard StateMachine Ċ import Ġkotlinx . coroutines .* Ċ Ċ enum Ġclass ĠOn Off { ĠON , ĠOFF } Ċ Ċ class ĠTest StateMachine Ġ: ĠState Machine < On Off > Ġby ĠStandard StateMachine ( On Off . ON ) Ġ{ ĊĊĠĠĠ Ġval Ġincrement Ġby Ġmessage () ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ( On Off . ON Ġto ĠOn Off . ON Ġon Ġincrement ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl counter Ġ= Ġcounter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl counter ++ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl counter ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ= Ġl counter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġtest StateMachine Ġ= ĠTest StateMachine () ĊĠĠĠ Ġval Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest StateMachine . increment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhile ( test StateMachine . counter Ġ/ Ġ 2 Ġ< Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprintln ("${ test StateMachine . counter Ġ/ Ġ 2 } Ġ/ Ġ 1 0 0 0 ") ĊĠĠĠ Ġprintln ( System . currentTimeMillis () Ġ- Ġstart ) Ċ }