public override void OnIfStatement(IfStatement node)
{
Label endLabel = _il.DefineLabel();
EmitDebugInfo(node);
EmitBranchFalse(node.Condition, endLabel);
node.TrueBlock.Accept(this);
if (null != node.FalseBlock)
{
Label elseEndLabel = _il.DefineLabel();
if (!node.TrueBlock.EndsWith<ReturnStatement>() && !node.TrueBlock.EndsWith<RaiseStatement>())
_il.Emit(OpCodes.Br, elseEndLabel);
_il.MarkLabel(endLabel);
endLabel = elseEndLabel;
node.FalseBlock.Accept(this);
}
_il.MarkLabel(endLabel);
}