static CloseableIterableIterator closeableIterableIterator(Iterator it) {
if (it cast CloseableIterableIterator) ret it;
ret it == null ? null : new CloseableIterableIterator {
public bool hasNext() { ret it.hasNext(); }
public A next() { ret it.next(); }
public void remove() { it.remove(); }
close { closeOpt(it); }
};
}
static CloseableIterableIterator closeableIterableIterator(Cl it) {
ret closeableIterableIterator(iterator(it));
}