public override void EndNode(AstNode node) { System.Diagnostics.Debug.Assert(currentList != null); foreach (var removable in node.Children.Where(n => n is AlTokenNode)) { removable.Remove(); } foreach (var child in currentList) { System.Diagnostics.Debug.Assert(child.Parent == null || node == child.Parent); child.Remove(); node.AddChildWithExistingRole(child); } currentList = nodes.Pop(); base.EndNode(node); }