public SiteMapBuilderNode AddNode(SiteMapBuilderNode entry)
 {
     // go up
     if (entry.Depth <= Depth)
     {
         return(Parent.AddNode(entry));
     }
     else
     {
         // current child
         foreach (SiteMapBuilderNode child in Children)
         {
             if (child.Title == entry.Title)
             {
                 if (!(String.IsNullOrWhiteSpace(entry.Text.Replace(entry.Title, String.Empty).Replace("+", String.Empty))))
                 {
                     child.Text = entry.Text;
                 }
                 return(child);
             }
         }
         Children.Add(entry);
         entry.Parent = this;
         return(entry);
     }
 }
        public void Insert(string title, int depth, string text)
        {
            if (_last == null)
            {
                _last = _root;
            }
            SiteMapBuilderNode entry = new SiteMapBuilderNode(title, depth, text);

            _last = _last.AddNode(entry);
        }