void assemblyList_Assemblies_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     if (e.Action == NotifyCollectionChangedAction.Reset)
     {
         history.RemoveAll(_ => true);
     }
     if (e.OldItems != null)
     {
         var oldAssemblies = new HashSet <LoadedAssembly>(e.OldItems.Cast <LoadedAssembly>());
         history.RemoveAll(n => n.TreeNodes.Any(
                               nd => nd.AncestorsAndSelf().OfType <AssemblyTreeNode>().Any(
                                   a => oldAssemblies.Contains(a.LoadedAssembly))));
     }
     if (CurrentAssemblyListChanged != null)
     {
         CurrentAssemblyListChanged(this, e);
     }
 }