void AddChildrenRecursive(AkWwiseTreeViewItem parent, IList <AkWwiseTreeViewItem> newRows) { if (parent == null) { return; } foreach (AkWwiseTreeViewItem child in parent.children) { var item = new AkWwiseTreeViewItem(child); item.parent = parent; item.children = child.children; newRows.Add(item); if (child.children.Count > 0) { if (TestExpanded(child)) { AddChildrenRecursive(child, newRows); } else { item.children = AkWwiseTreeDataSource.CreateCollapsedChild(); } } } }