private void LoadAssemblyTypes(Assembly ass, int namespaceLevels, Predicate <Type> filter) { Type[] types = UTAssembly.GetTypesFromAssemblies(ass); if (filter != null) { types = types.Where(e => filter(e)).ToArray(); } string[] nsps = UTType.NamespacesFromTypes(types, namespaceLevels); List <NamespaceMap> maps = new List <NamespaceMap>(); foreach (string s in nsps) { NamespaceMap map = new NamespaceMap( s, types.Where(t => t.Namespace == null ? s == "_NoNamespace" : t.Namespace.SeparatorLevelPrune('.', namespaceLevels) == s).ToArray() ); maps.Add(map); } _assemblyMap[ass] = new AssemblyContents(maps.ToArray()); }