private TransitionGraph<Role> mirror(final TransitionGraph<Role> tg) { final Map<State<Role>, State<Role>> newStates = new HashMap<>(); final TransitionGraph<Role> mirror = new TransitionGraph<>(); final State<Role> oldInitialState = tg.getInitialState(); final State<Role> newFinalState = copyState(oldInitialState, mirror, newStates); mirror.addFinalState(newFinalState); final Set<State<Role>> oldFinalStates = tg.getFinalStates(); State<Role> newInitialState = null; if (oldFinalStates.size() == 1) { final State<Role> oldFinalState = oldFinalStates.iterator().next(); newInitialState = newStates.get(oldFinalState); } else { newInitialState = mirror.newState(); for (final State<Role> oldFinalState : oldFinalStates) mirror.addTransition(newInitialState, newStates.get(oldFinalState)); } mirror.setInitialState(newInitialState); return mirror; }
private TransitionGraph<Role> mirror(final TransitionGraph<Role> tg) { final Map<State<Role>, State<Role>> newStates = new HashMap<>(); final TransitionGraph<Role> mirror = new TransitionGraph<>(); final State<Role> oldInitialState = tg.getInitialState(); final State<Role> newFinalState = copyState(oldInitialState, mirror, newStates); mirror.addFinalState(newFinalState); final Set<State<Role>> oldFinalStates = tg.getFinalStates(); State<Role> newInitialState = null; if (oldFinalStates.size() == 1) { final State<Role> oldFinalState = oldFinalStates.iterator().next(); newInitialState = newStates.get(oldFinalState); } else { newInitialState = mirror.newState(); for (final State<Role> oldFinalState : oldFinalStates) mirror.addTransition(newInitialState, newStates.get(oldFinalState)); } mirror.setInitialState(newInitialState); return mirror; }
final State<Role> f = tg.newState(); tg.setInitialState(i); tg.addFinalState(f);
final State<Role> f = tg.newState(); tg.setInitialState(i); tg.addFinalState(f);