if (stateMachine.getState() == IDLE) {
stateMachine.transition(WORKING);
statusChanges.add(WORKING);
}
Result result = evaluator.evaluate(actualState);
if (result == Result.SUCCEEDED) {
stateMachine.transition(SUCCEEDED);
statusChanges.add(SUCCEEDED);
} else if (result == Result.FAILED) {
stateMachine.transition(FAILED);
statusChanges.add(FAILED);
}
return new SideEffect(result.getAction(), statusChanges.build());
}