package Ġcom . github . v ansp o . state machine Ċ Ċ import Ġjava . util . LinkedList Ċ import Ġjava . util . Queue Ċ Ċ class ĠMessage Queue Ġ{ ĊĠĠĠ Ġprivate Ġval Ġqueue : ĠQueue < () Ġ-> ĠUnit > Ġ= ĠLinkedList () ĊĠĠĠ Ġprivate Ġvar Ġis Stopped : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġfun Ġpost ( message : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġqueue . add ( message ) ĊĠĠĠĠĠĠĠ Ġrun Next () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġstop () Ġ{ Ġis Stopped Ġ= Ġtrue Ġ} ĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Stopped Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! queue . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Next () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Next () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Stopped ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġqueue . poll (). invoke () ĊĠĠĠ Ġ} Ċ } Ċ