public override BaseNode VisitChildren([NotNull] IRuleNode node) { if (node.ChildCount > 1) { ITreeNode[] newChildren = new ITreeNode[node.ChildCount]; for (int i = 0; i < node.ChildCount; i++) { newChildren[i] = new BaseNodeVisitor().Visit(node.GetChild(i)); } BaseNode newNode = new BaseNode() { Name = node.GetType().Name, Children = newChildren }; return(newNode); } else { return(base.VisitChildren(node)); } }