private bool IsMatchingSpec(PrefixSpecs specs, ElementNode node)
 {
     if (base.Context.Namespaces == NamespacesType.Unqualified)
     {
         return(specs.Prefix == NameUtility.GetPrefix(node.Name));
     }
     return(specs.Namespace == node.Namespace);
 }
        protected override void Visit(ElementNode node)
        {
            var prefix = NameUtility.GetPrefix(node.Name);

            if (!string.IsNullOrEmpty(prefix))
            {
                var specs = _prefixes.FirstOrDefault(spec => IsMatchingSpec(spec, node));
                if (specs != null)
                {
                    PushReconstructedNode(node, specs);
                    return;
                }
            }

            base.Visit(node);
        }
        protected override void Visit(ElementNode node)
        {
            Func <PrefixSpecs, bool> predicate = null;

            if (!string.IsNullOrEmpty(NameUtility.GetPrefix(node.Name)))
            {
                if (predicate == null)
                {
                    predicate = spec => this.IsMatchingSpec(spec, node);
                }
                PrefixSpecs specs = this._prefixes.FirstOrDefault <PrefixSpecs>(predicate);
                if (specs != null)
                {
                    this.PushReconstructedNode(node, specs);
                    return;
                }
            }
            base.Visit(node);
        }