private automata.fsa.FiniteStateAutomaton readFA(BufferedReader reader)
			throws IOException {
		automata.fsa.FiniteStateAutomaton fa = new automata.fsa.FiniteStateAutomaton();
		// Generic states.
		State[] states = readStateCreate(fa, reader);
		String[][][] groups = readTransitionGroups(2, 1, states.length, reader);
		for (int s = 0; s < groups.length; s++) {
			for (int g = 0; g < groups[s].length; g++) {
				String[] group = groups[s][g];
				State to = states[Integer.parseInt(group[1]) - 1], from = states[s];
				if (group[0].equals("null"))
					group[0] = "";
				Transition t = new automata.fsa.FSATransition(from, to,
						group[0]);
				fa.addTransition(t);
			}
		}
		readStateMove(states, reader);
		return fa;
	}