Protogame.TreeView.BackfillParentsForItem C# (CSharp) Method

BackfillParentsForItem() private method

private BackfillParentsForItem ( TreeEntry root, TreeItem item ) : void
root TreeEntry
item TreeItem
return void
        private void BackfillParentsForItem(TreeEntry root, TreeItem item)
        {
            var segments = item.Text.Split('.').Reverse().Where((x, id) => id >= 1).Reverse().ToArray();
            var current = root;
            var i = 1;
            var built = string.Empty;
            foreach (var segment in segments)
            {
                built += "." + segment;
                built = built.Trim('.');
                var next = current.Children.FirstOrDefault(x => x.Name == segment);
                if (next == null)
                {
                    var newItem = new TreeItem { Text = built, Parent = this };
                    _items.Add(newItem);
                    var created = new TreeEntry
                    {
                        Item = newItem, 
                        Layout = null, 
                        Name = segment, 
                        FullName = built, 
                        Children = new List<TreeEntry>(), 
                        SegmentCount = i
                    };
                    current.Children.Add(created);
                    current = created;
                }
                else
                {
                    current = next;
                }

                i++;
            }
        }