// f: func -> A | endMarker static IterableIterator filterIterator(final Iterable it, final F1 f) { if (it == null) null; ret iff(func -> O { while (it.hasNext()) { A a = it.next(); if (callF(f, a)) ret a; } ret endMarker(); }); }