protected internal virtual SyntaxTreeNode Visit(TagNode node) { if (node == null) { return(null); } var modifiedSubNodes = GetModifiedSubNodes(node); if (modifiedSubNodes == null) { return(node); //unmodified } else { return(node.SetSubNodes(modifiedSubNodes)); //subnodes were modified } }