automaton.addTransition(q0, q1, new CharTransitionLabel('a'));
automaton.addTransition(q1, q2, new CharTransitionLabel('a'));
automaton.addTransition(q0, q3, new CharTransitionLabel('a'));
automaton.addTransition(q3, q2, new CharTransitionLabel('c'));
automaton.addTransition(q2, q4, new CharTransitionLabel('b'));
automaton.addLoop(q1, new CharTransitionLabel('b'));
automaton.addLoop(q2, new CharTransitionLabel('d'));
automaton.addLoop(q3, new CharTransitionLabel('a'));
automaton.markAsInitial(q0);