private void AddToChildren(NiHierarchy item)
{
var current = _children.First;
while (current != null)
{
// Copy to suppress warning CS1690: Accessing a member
// on * may cause a runtime exception because it is a field of
// a marshal-by-reference class.
int? currentSortPriority = current.Value._sortPriority;
int compare = _sortPriority.GetValueOrDefault().CompareTo(
currentSortPriority.GetValueOrDefault()
);
if (compare == 0)
compare = String.Compare(_name, current.Value._name, NameComparison);
if (compare < 0)
break;
current = current.Next;
}
item._position =
current == null
? _children.AddLast(item)
: _children.AddBefore(current, item);
}