static CloseableIterableIterator closeableIterableIterator(Iterator 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)); }