To ensure that the cursor is closed in all cases for any applications using Iterator#forEachRemaining:
@Override default void forEachRemaining(final Consumer<? super TResult> action) { try { Iterator.super.forEachRemaining(action); } finally { close(); } }