protected override object VisitIf(If I)
{
string name = target.LabelName();
LinqExprs.LabelTarget _else = LinqExpr.Label("if_" + name + "_else");
LinqExprs.LabelTarget end = LinqExpr.Label("if_" + name + "_end");
// Check the condition, exit if necessary.
target.Add(LinqExpr.IfThen(LinqExpr.Not(target.Compile(I.Condition)), LinqExpr.Goto(_else)));
// Execute true code.
target.PushScope();
Visit(I.True);
target.PopScope();
target.Add(LinqExpr.Goto(end));
// Execute false code.
target.Add(LinqExpr.Label(_else));
target.PushScope();
Visit(I.False);
target.PopScope();
// Exit point.
target.Add(LinqExpr.Label(end));
return(null);
}