internal void Resume() { var parentTree = new ParserRuleContext(); var lastTree = currentStack.Pop(); var originalParent = lastTree.Parent as ParserRuleContext; parentTree.CopyFrom(originalParent); parentTree.children.Clear(); foreach (var c in originalParent.children) { parentTree.children.Add(c); } if (currentStack != null) { int removeCount = originalParent.children.IndexOf(lastTree); for (int i = 0; i <= removeCount; i++) { parentTree.children.RemoveAt(0); } Visit(parentTree); } }