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