protected sealed override IEnumerator <IDiagnosticContext> GetEnumeratorCore(IDiagnosticContextFactory factory) { if (assembly == null || Ignore(assembly)) { yield break; } yield return(factory.Create(assembly)); var assemblyTypes = new AssemblyTypes(assembly, IncludeAllTypes(assembly)); foreach (var type in assemblyTypes) { if (type == null || Ignore(type)) { continue; } yield return(factory.Create(type)); var typeMembers = new TypeMembers(type, IncludeAllMembers(type)); foreach (var member in typeMembers) { if (member == null || Ignore(member)) { continue; } yield return(factory.Create(member)); } } }