AsynchronousAutomaton

inline fun <State, Transition, NoNextStateReason> AsynchronousAutomaton(mutex: Mutex = Mutex(), initialState: State, crossinline checkTransition: suspend AsynchronousAutomaton<State, Transition, NoNextStateReason>.(previousState: State, transition: Transition) -> CheckResult<State, NoNextStateReason>, crossinline onTransition: suspend AsynchronousAutomaton<State, Transition, NoNextStateReason>.(previousState: State, transition: Transition, nextState: State) -> Unit = { _, _, _ -> }): AsynchronousAutomaton<State, Transition, NoNextStateReason>(source)