private static void ReadingTypes( IlReader ilReader, string[] filter, out IList <IType> usedTypes, out IDictionary <IType, IEnumerable <IMethod> > genericMethodSpecializationsSorted) { // clean it as you are using IlReader IlReader.GenericMethodSpecializations = null; // types in current assembly var readingTypesContext = ReadingTypesContext.New(); var types = ilReader.Types().Where(t => !t.IsGenericTypeDefinition); if (filter != null) { types = types.Where(t => CheckFilter(filter, t)); } var allTypes = ilReader.AllTypes().ToList(); // TODO: temp hack to initialize ThisType for TypeResolver _codeWriter.Initialize(allTypes.First()); usedTypes = FindUsedTypes(types.ToList(), allTypes, readingTypesContext); genericMethodSpecializationsSorted = GroupGenericMethodsByType(readingTypesContext.GenericMethodSpecializations); Debug.Assert(usedTypes.All(t => !t.IsByRef), "Type is used with flag IsByRef"); }