private void AddUnsortedNodes(ref SortedTreeNode <IdType, DataType> parent)
        {
            // Add nodes without preferences
            foreach (IdType id in NodesToSort.Keys)
            {
                if (NodesToSort.TryGetValue(id, out SortedTreeNode <IdType, DataType> node))
                {
                    if (node.IsLinked)
                    {
                        continue;
                    }

                    if (!node.HasOrdering)
                    {
                        parent.SetNodeBefore(node);
                        continue;
                    }
                    else if (node.Dependencies.Count == 0)
                    {
                        bool noPreferences = true;
                        foreach (IdType before in node.LoadBefore)
                        {
                            if (NodesToSort.ContainsKey(before))
                            {
                                noPreferences = false;
                                break;
                            }
                        }

                        foreach (IdType after in node.LoadAfter)
                        {
                            if (NodesToSort.ContainsKey(after))
                            {
                                noPreferences = false;
                                break;
                            }
                        }

                        if (noPreferences)
                        {
                            parent.SetNodeAfter(node);
                            continue;
                        }
                    }
                }
            }
        }
 private void LinkRemaining(ref SortedTreeNode <IdType, DataType> root)
 {
     foreach (SortedTreeNode <IdType, DataType> node in NodesToSort.Values)
     {
         if (!node.IsLinked)
         {
             if (root == null)
             {
                 root = node;
             }
             else
             {
                 root.SetNodeBefore(node);
             }
         }
     }
 }