protected override void DoEmit (EmitContext ec) { if (Expr != null) { Expr.Emit (ec); if (unwind_protect) ec.Emit (OpCodes.Stloc, ec.TemporaryReturn ()); } if (unwind_protect) ec.Emit (OpCodes.Leave, ec.ReturnLabel); else ec.Emit (OpCodes.Ret); }