static <A> CloseableIterableIterator<A> iteratorFromFunction_withEndMarker_f0_autoCloseable(final F0<A> f, final AutoCloseable closeable) {
  class IFF2 extends CloseableIterableIterator<A> {
    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 == endMarker();
    }
    
    public void close() tex {
      if (closeable != null) closeable.close();
    }
  };
  ret new IFF2;
}