static IterableIterator gMatch(final S pat) { final L log = gLog(); ret new IterableIterator() { int i = l(log); new Matches m; public bool hasNext() { while (--i >= 0 && !match(pat, get(log, i), m)); ret i >= 0; } public Matches next() { ret m; } }; }