private void ModifyField(MemberActionAttribute fieldActionAttr, FieldDefinition yourField, FieldDefinition targetField) { Log_modifying_member("field", yourField); (fieldActionAttr != null).AssertTrue(); ModificationScope scope = fieldActionAttr.Scope; if ((scope & ModificationScope.Accessibility) != 0) { targetField.SetAccessibility(yourField.GetAccessbility()); } var attrFilter = AttrFilter(scope); CopyCustomAttributes(targetField, yourField, attrFilter); if ((scope & ModificationScope.Body) != 0) { targetField.InitialValue = yourField.InitialValue; //dunno what this is used for targetField.Constant = yourField.Constant; targetField.HasConstant = yourField.HasConstant; } var toggleAttributesAttr = yourField.GetCustomAttribute<ToggleFieldAttributes>(); var toggleValue = toggleAttributesAttr?.Attributes ?? 0; targetField.Attributes ^= (FieldAttributes) toggleValue; }