}
@Test
public void testMultipleEvents() {
System.out.println("Test run on thread "+Thread.currentThread().getName());
UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(StateMachineSample.class);
builder.externalTransition().from("D").to("A").on(FSMEvent.ToA);
builder.externalTransition().from("A").to("B").on(FSMEvent.ToB);
builder.externalTransition().from("B").to("C").on(FSMEvent.ToC);
builder.externalTransition().from("C").to("D").on(FSMEvent.ToD);
final StateMachineSample fsm = builder.newUntypedStateMachine("D");
fsm.addDeclarativeListener(new TestListener());
String expected1 = (String) fsm.test(FSMEvent.ToA, 5);
System.out.println("expected1: "+expected1);
assertThat(expected1, equalTo("A"));
String expected2 = (String) fsm.test(FSMEvent.ToA, 11);