* </ol>
*
* @return
*/
private Machine getFourTimesADayMachine() {
State startState = new NamedState("START_4TDM");
State endState = new NamedState("END_4TDM");
State ntEndState = new NonTerminalEndState("NON TERMINAL END");
ntEndState.setEndStateFlag(true);
endState.setEndStateFlag(true);
State leftAbbreviateQState = new NamedState("LEFT_Q_FTD");
State middleAbbreviateQtoIState = new NamedState("MID_Q2I");
State middleAbbreviateQtoDState = new NamedState("MID_Q2D");
State rightAbbreviateQDSState = new NamedState("RIGHT_QDS");
State rightAbbreviateQIDState = new NamedState("RIGHT_QID");
State handleRangeState = new NamedState("HANDLERANGE");
State sixHourState = new NamedState("SIXHOUR");
State rangeHourState = new NamedState("RANGEHOUR");
State eightSuffixState = new NamedState("EIGHTSUFFIX");
State firstDotQState = new NamedState("FIRSTDOTQ");
State secondDotQtoDState = new NamedState("SECONDDOTQ2D");
State secondDotQtoIState = new NamedState("SECONDDOTQ2I");
Machine m = new Machine(startState);
startState.addTransition(new TextValueCondition("q", false),
leftAbbreviateQState);
startState.addTransition(new TextSetCondition(
iv_fourTimesPerDayWordSet, false) , endState);
startState.addTransition(new IntegerValueCondition(6), sixHourState);
startState.addTransition(new DisjoinCondition(new CombineCondition(new NegateCondition(new IntegerRangeCondition(1,5)), new IntegerCondition()), new IntegerValueCondition(6)), handleRangeState);
startState.addTransition(new DisjoinCondition(new TextSetCondition(iv_postSixWordSet, false), new TextValueCondition("six", false)), sixHourState);
startState.addTransition(new AnyCondition(), startState);
handleRangeState.addTransition(new PunctuationValueCondition('-'), rangeHourState);
handleRangeState.addTransition(new AnyCondition(), startState);
leftAbbreviateQState.addTransition(new PunctuationValueCondition('.'), firstDotQState);
leftAbbreviateQState.addTransition(new TextValueCondition("six", false), sixHourState);
leftAbbreviateQState.addTransition(new IntegerValueCondition(6), sixHourState);
leftAbbreviateQState.addTransition(new TextSetCondition(
iv_fourTimesPerDayWordSet, false) , sixHourState);
leftAbbreviateQState.addTransition(new AnyCondition(), startState);
rangeHourState.addTransition(new IntegerRangeCondition(7,10), eightSuffixState);
rangeHourState.addTransition(new TextValueCondition("seven", false), eightSuffixState);
rangeHourState.addTransition(new TextValueCondition("eight", false), eightSuffixState);
rangeHourState.addTransition(new TextValueCondition("nine", false), eightSuffixState);
rangeHourState.addTransition(new TextValueCondition("ten", false), eightSuffixState);
rangeHourState.addTransition(new AnyCondition(), startState);
eightSuffixState.addTransition(new TextSetCondition(iv_hourlySuffixSet, false), endState);
eightSuffixState.addTransition(new AnyCondition(), startState);
sixHourState.addTransition(new PunctuationValueCondition('-'), rangeHourState);
sixHourState.addTransition(new TextValueCondition("to", false), rangeHourState);
sixHourState.addTransition(new TextSetCondition(iv_hourlySuffixSet, false), endState);
sixHourState.addTransition(new TextSetCondition(iv_fourTimesPerDayWordSet, false), endState);
sixHourState.addTransition(new AnyCondition(), startState);
firstDotQState.addTransition(new TextValueCondition("d", false),
middleAbbreviateQtoDState);
firstDotQState.addTransition(new TextValueCondition("i", false),
middleAbbreviateQtoIState);
firstDotQState.addTransition(new AnyCondition(), startState);
middleAbbreviateQtoDState.addTransition(new PunctuationValueCondition('.'),
secondDotQtoDState);
middleAbbreviateQtoDState.addTransition(new AnyCondition(), startState);
secondDotQtoDState.addTransition(new TextValueCondition("s", false),
rightAbbreviateQDSState);
secondDotQtoDState.addTransition(new AnyCondition(), startState);
secondDotQtoIState.addTransition(new TextValueCondition("d", false),
rightAbbreviateQIDState);
secondDotQtoIState.addTransition(new AnyCondition(), startState);
middleAbbreviateQtoIState.addTransition(new PunctuationValueCondition('.'),
secondDotQtoIState);
middleAbbreviateQtoIState.addTransition(new AnyCondition(), startState);