static IterableIterator scanLog_iterator(S progID, S fileName) { ret scanLog_iterator(getProgramFile(progID, fileName)); } static IterableIterator scanLog_iterator(S fileName) { ret scanLog_iterator(getProgramFile(fileName)); } static IterableIterator scanLog_iterator(File file) { final Iterator it = linesFromFile(file); ret iteratorFromFunction(func -> S { while (it.hasNext()) { S = it.next(); if (isProperlyQuoted(s)) ret unquote(s); } null; }); }