static IterableIterator iteratorFromFunction_if0(final IF0 f) { class IFF2 extends IterableIterator { 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; a = f.get(); done = a == null; } }; ret new IFF2; }