NGramAutomaton { public Expression<String> expression() { return Or.fromExpressionSources(acceptStates); } NGramAutomaton(Automaton source, int gramSize, int maxExpand, int maxStatesTraced, int maxTransitions, Analyzer ngramAnalyzer); String toDot(); Expression<String> expression();  }
@Test @Repeat(iterations = 100) public void randomAutomaton() { Automaton automaton = AutomatonTestUtil.randomAutomaton(getRandom()); NGramAutomaton ngramAutomaton; try { ngramAutomaton = new NGramAutomaton(automaton, between(2, 7), 4, 10000, 500, new KeywordAnalyzer()); } catch (AutomatonTooComplexException e) { return; } Expression<String> expression = ngramAutomaton.expression(); expression = expression.simplify(); }