@Override
public Iterator<AbstractResumedStatement<?, ?, ?>> iterator() {
- return new AbstractIterator<>() {
- private int nextOffset = 0;
-
- @Override
- protected AbstractResumedStatement<?, ?, ?> computeNext() {
- while (nextOffset < elements.length) {
- final AbstractResumedStatement<?, ?, ?> ret = elements[nextOffset++];
- if (ret != null) {
- return ret;
- }
- }
+ return new Iter(this);
+ }
+
+ private static final class Iter extends AbstractIterator<AbstractResumedStatement<?, ?, ?>> {
+ private int nextOffset = 0;
+ private Regular map;
+
+ Iter(final Regular map) {
+ this.map = requireNonNull(map);
+ }
- return endOfData();
+ @Override
+ protected AbstractResumedStatement<?, ?, ?> computeNext() {
+ while (nextOffset < map.elements.length) {
+ final AbstractResumedStatement<?, ?, ?> ret = map.elements[nextOffset++];
+ if (ret != null) {
+ return ret;
+ }
}
- };
+
+ map = null;
+ return endOfData();
+ }
}
}