private bool ShouldDeleteOpCode(Instruction instruction)
 {
     if (instruction.OpCode == OpCodes.Newobj) return false;
     if (instruction.OpCode == OpCodes.Nop) return false;
     if (instruction.OpCode == OpCodes.Ret) return false;
     if (instruction.OpCode == OpCodes.Br
         && instruction.Next.Offset == ((Instruction)instruction.Operand).Offset)
     {
         return false;
     }
     if (instruction.OpCode == OpCodes.Endfinally) return false;
     if (instruction.IsNumericConversion()) return false;
     if (IsOpCodeSettingOutputParameterToDefaultValue(instruction)) return false;
     if (IsOpCodeSettingLocalVariableToDefaultValue(instruction)) return false;
     if (IsOpCodeSwitchDefaultThatHasAlreadyBeenCateredFor(instruction)) return false;
     if (instruction.IsPartOfCompilerGeneratedDispose()) return false;
     return true;
 }