static L parseToFragmentsUsingWordTree(S input, MapSO wordTree) { LS tok = javaTok(input); new L out; int i = 1; Pair p; while ping ((p = findUsingWordTree(tok, wordTree, i)) != null) { int j = p.a.start; if (j > i) out.add(Fragment(joinSubList(tok, i, j-1))); out.add(p.b); i = max(p.a.end, i+2); // up to i+2 just for safety } if (i < l(tok)-1) out.add(Fragment(joinSubList(tok, i))); ret out; }