private static List<TransitionDef> linkState(StateMachineDef machineDef, Node transitionsNode) {
List<Node> transitions = getValidChildNodes(transitionsNode);
Map<String, EventDef> events = new HashMap<String, EventDef>();
for(EventDef event: machineDef.getEventDefs()) {
events.put(event.getId(), event);
}
List<TransitionDef> transitionDefs = new ArrayList<TransitionDef>();
for(int i = 0; i < transitions.size(); i++) {
Node node = transitions.get(i);
String sourceId = getAttribute(node, SOURCE_ID);
String targetId = getAttribute(node, TARGET_ID);
EventDef event = events.get(getAttribute(node, EVENT_ID));
TransitionDef transition = new TransitionDef(sourceId, targetId);
transition.setEventDef(event);
transition.setTransitActionDef(new ActionDef(getAttribute(node, TRANSIT_ACTION)));
transitionDefs.add(transition);
}
return transitionDefs;
}