private static void ReplaceRetInstructions(ILProcessor processor, Instruction methodEpilogueFirstInstruction)
{
// We cannot call ret inside a try/catch block. Replace all ret instructions with
// an unconditional branch to the start of the OnExit epilogue
var retInstructions = (from i in processor.Body.Instructions
where i.OpCode == OpCodes.Ret
select i).ToList();
foreach (var instruction in retInstructions) {
instruction.OpCode = OpCodes.Br_S;
instruction.Operand = methodEpilogueFirstInstruction;
}
}