/// <summary>
        /// Compares two <see cref="AssemblyFamily"/> instances and returns the breaking changes introduced in the newer assemblies if their
        /// associated older versions exist in the <paramref name="oldFamily"/>.
        /// </summary>
        public static List <BreakingChangeBase> CompareAssemblyFamilies(AssemblyFamily oldFamily, AssemblyFamily newFamily)
        {
            var breakingChanges = new List <BreakingChangeBase>();

            foreach (var oldAssembly in oldFamily)
            {
                var newAssembly = newFamily.GetEquivalentAssembly(oldAssembly);
                if (newAssembly == null)
                {
                    breakingChanges.Add(new RemovedAssembly(oldAssembly));
                }
                else
                {
                    breakingChanges.AddRange(MetadataComparer.CompareAssemblies(oldAssembly, newAssembly, newFamily));
                }
            }

            return(breakingChanges);
        }
 /// <summary>
 /// Compares two associated <see cref="AssemblyData"/> instances and returns the breaking changes introduced in the newer version of
 /// the assembly.
 /// </summary>
 public static List <BreakingChangeBase> CompareAssemblies(AssemblyData oldAssembly, AssemblyData newAssembly)
 {
     return(MetadataComparer.CompareAssemblies(oldAssembly, newAssembly, new AssemblyFamily {
         newAssembly
     }));
 }