Do not retain reference to StatementMap
[yangtools.git] / parser / yang-parser-reactor / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / StatementMap.java
index d837b93ba6e5ad9a6d494a2bf0d0491794f45345..7c3528aced03d215b4ac7939792733e9d4d9d5d8 100644 (file)
@@ -135,21 +135,29 @@ abstract class StatementMap extends AbstractCollection<AbstractResumedStatement<
 
         @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();
+            }
         }
     }