diff --git a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java index 90f29dccb4d1..55586b5e8b76 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java @@ -184,8 +184,10 @@ class ValueContainerImpl extends UpdatableValueContainer implement }; } else { return new ValueIterator() { - private Map.Entry current; - final Iterator> iterator = ((THashMap)myInputIdMapping).entrySet().iterator(); + private Value current; + private Object currentValue; + private final THashMap myMapping = ((THashMap)myInputIdMapping); + private final Iterator iterator = myMapping.keySet().iterator(); @Override public boolean hasNext() { @@ -194,7 +196,9 @@ class ValueContainerImpl extends UpdatableValueContainer implement @Override public Value next() { - Value next = (current = iterator.next()).getKey(); + current = iterator.next(); + Value next = current; + currentValue = myMapping.get(next); if (next == myNullValue) next = null; return next; } @@ -219,7 +223,7 @@ class ValueContainerImpl extends UpdatableValueContainer implement @Override public Object getFileSetObject() { if (current == null) throw new IllegalStateException(); - return current.getValue(); + return currentValue; } }; }