builder.transitions().fromAmong(DecisionState.B, DecisionState.C, DecisionState.D).
to(DecisionState.A).on(DecisionEvent.ANY2A);
// use local transition avoid invoking state A exit functions when entering its decision state
builder.localTransitions().between(DecisionState.A).and(DecisionState._A).
onMutual(DecisionEvent.A2ANY, DecisionEvent.ANY2A).
perform(Lists.newArrayList(decisionMaker, null));
fsm = builder.newUntypedStateMachine(DecisionState.A);
return fsm;