private void LoadReferences(Assembly asm, HashSet <string> inspected, IAssemblyLoader assemblyLoader) { var allReferences = assemblyLoader.AssemblyNames(asm); foreach (var toLoad in allReferences) { if (!inspected.Contains(toLoad.Name)) { inspected.Add(toLoad.Name); LoadReferences(assemblyLoader.LoadAndReturn(toLoad), inspected, assemblyLoader); } } }