public void Append(GenericNode node)
        {
            var head = Head;

            GenericNodeTree.AddChild(ref head, ref node);
            Size++;
        }
        public void Prepend(GenericNode node, Level level)
        {
            var head = Head;

            if (level == Level.Sibling)
            {
                node.Next = head;
                Head      = node;
            }
            else
            {
                GenericNodeTree.PrependChild(ref head, ref node);
            }

            Size++;
        }
        private GenericNode BuildGenericTree(CSharpNode head)
        {
            GenericNode node = CreateGenericNode(head);

            _size++;

            ProcessLinking(head);

            foreach (var cSharpNode in head.Children)
            {
                GenericNode child = BuildGenericTree(cSharpNode);
                GenericNodeTree.AddChild(ref node, ref child);
                _size++;
            }
            return(node);
        }