public IEnumerable <FieldDef> CleanUp() { var removedFields = new List <FieldDef>(); var moduleCctor = DotNetUtils.GetModuleTypeCctor(module); if (moduleCctor == null) { return(removedFields); } var moduleCctorBlocks = new Blocks(moduleCctor); var keep = FindFieldsToKeep(); foreach (var fieldInfo in fieldToInfo.GetValues()) { if (keep.ContainsKey(fieldInfo)) { continue; } if (RemoveInitCode(moduleCctorBlocks, fieldInfo)) { removedFields.Add(fieldInfo.field); removedFields.Add(fieldInfo.arrayInitField); } fieldInfo.arrayInitField.InitialValue = new byte[1]; fieldInfo.arrayInitField.FieldSig.Type = module.CorLibTypes.Byte; fieldInfo.arrayInitField.RVA = 0; } IList <Instruction> allInstructions; IList <ExceptionHandler> allExceptionHandlers; moduleCctorBlocks.GetCode(out allInstructions, out allExceptionHandlers); DotNetUtils.RestoreBody(moduleCctorBlocks.Method, allInstructions, allExceptionHandlers); return(removedFields); }