static L gazelle_reason_repeat(S input, O... _) { new L out; int steps = 0, max = 10; while (steps++ < max) { L l = gazelle_reasonWithPreAndPost(input, _); // commit to one entry if (empty(l)) ret l; GazelleTree t = first(l); LS lines = tok_splitAtPlusAtBeginningOfLine(t.line); if (l(lines) == 2 && t.rule() != null && contains(t.rule().comments, "out 2 = process")) { print("splitting!"); t.line = first(lines); out.add(t); input = second(lines); continue; } out.addAll(l); break; } ret out; }