diff --git a/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java b/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java index 8708107450d3..054e16b17460 100644 --- a/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java +++ b/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java @@ -66,6 +66,7 @@ public class LightStubBuilder implements StubBuilder { protected void buildStubTree(final LighterAST tree, final LighterASTNode root, final StubElement rootStub) { final Stack parents = new Stack(); final TIntStack childNumbers = new TIntStack(); + final Stack> kinderGarden = new Stack>(); final Stack parentStubs = new Stack(); LighterASTNode parent = null; @@ -83,6 +84,7 @@ public class LightStubBuilder implements StubBuilder { if (parent != null) { parents.push(parent); childNumbers.push(childNumber); + kinderGarden.push(children); parentStubs.push(parentStub); } parent = element; @@ -98,8 +100,9 @@ public class LightStubBuilder implements StubBuilder { element = null; while (parents.size() > 0) { - children = tree.getChildren((parent = parents.pop())); + parent = parents.pop(); childNumber = childNumbers.pop(); + children = kinderGarden.pop(); parentStub = parentStubs.pop(); while (++childNumber < children.size()) { element = children.get(childNumber);