@startuml abstract class StateMachine { + states: async* S - manager: StateMachineManager - queue: Queue + accept(E event): void => queue.add(event); - dispatch(E event): void => manager.dispatch(event); - emit(S state): void => states.add(state); } @enduml