apply

abstract fun apply(state: State, move: Move): Outcome<State>

Validate move against state and produce the next state, or reject it.