sclass LevenList { //Set set = ciSet(); LS list; *() {} *(LS *list) {} // returns pair(word, distance) // or null when search step was not successful Iterator> findClosestWordIterator(S word) { if (empty(list)) ret emptyIterator(); ret iff(new O { int limit = Integer.MAX_VALUE-1; int idx; O get() { if (idx >= l(list)) ret endMarker(); S s = list.get(idx++); int dist = leven_limitedIC(word, s, limit); if (dist < limit) { limit = dist; ret s; } null; } }); } }