static ItIt mapI_nonNulls_if1(Iterable i, IF1 f) { ret mapI_nonNulls_if1(f, i); } static ItIt mapI_nonNulls_if1(IF1 f, Iterable i) { ret i == null ? null : mapI_nonNulls_if1(f, i.iterator()); } static ItIt mapI_nonNulls_if1(IF1 f, Iterator i) { if (i == null) null; class I extends ItIt { B a; bool done; public bool hasNext() { getNext(); ret !done; } public B next() { getNext(); if (done) fail(); B _a = a; a = null; ret _a; } void getNext() { if (done || a != null) ret; while ping (true) { if (!i.hasNext()) ret with done = true; B _a = f.get(i.next()); if (_a != null) ret with a = _a; } } }; ret new I; }