private void AddChildren(Thing t, TreeViewItem tvi, int depth)
 {
     foreach (Thing child in t.Children)
     {
         string header = child.Label + ":" + child.useCount;
         if (child.References.Count > 0)
         {
             header += " (";
             ModuleUKSN parent = (ModuleUKSN)base.ParentModule;
             Thing      best   = parent.FindBestReference(child);
             foreach (Link L in child.References)
             {
                 if (L.T == best)
                 {
                     header += "*";
                 }
                 if (L.weight < 0)
                 {
                     header += "-";
                 }
                 header += L.T.Label + ", ";
             }
             header  = header.Substring(0, header.Length - 2);
             header += ")";
         }
         if (child.V != null)
         {
             if (child.V is int i)
             {
                 header += " : " + i.ToString("X");
             }
             else
             {
                 header += " : " + child.V.ToString();
             }
         }
         TreeViewItem tviChild = new TreeViewItem {
             Header = header
         };
         if (expandedItems.Contains(LeftOfColon(header)))
         {
             tviChild.IsExpanded = true;
         }
         tvi.Items.Add(tviChild);
         tviChild.MouseRightButtonDown += Tvi_MouseRightButtonDown;
         if (depth < maxDepth)
         {
             AddChildren(child, tviChild, depth + 1);
             AddReferences(child, tviChild);
             AddReferencedBy(child, tviChild);
         }
     }
 }