static L pAttractor_allMatches3(Collection attractors, LS tok) { int i = 0; new L out; loop: while (licensed() && i < l(tok)) { for (PartialAttractor a : attractors) { a.tok = subList(tok, i); if (a.find()) { assertTrue("match must not be empty", a.matchedRange.end >= 2); out.add(shallowClone(a)); i += a.matchedRange.end & ~1; // go to next N token continue loop; } } break; // no more matches } ret out; }