+ MethodBody newBody;
+ if (methods.TryGetValue (method.FullName, out newBody)) {
+ var mbody = method.Body;
+ mbody.Instructions.Clear ();
+ foreach (var instr in newBody.Instructions) {
+ switch (instr.OpCode.OperandType) {
+ case OperandType.InlineType:
+ var tr = (TypeReference)instr.Operand;
+ foreach (var t in method.GenericParameters) {
+ if (tr.FullName == t.FullName) {
+ instr.Operand = t;
+ break;
+ }
+ }
+
+ break;
+ }
+
+ mbody.Instructions.Add (instr);
+ }
+
+ method.Body.Variables.Clear ();
+ foreach (var variable in newBody.Variables) {
+ mbody.Variables.Add (variable);
+ }
+ }
+