public override void OnWhileStatement(WhileStatement node)
{
Label endLabel = _il.DefineLabel();
Label bodyLabel = _il.DefineLabel();
Label conditionLabel = _il.DefineLabel();
_il.Emit(OpCodes.Br, conditionLabel);
_il.MarkLabel(bodyLabel);
EnterLoop(endLabel, conditionLabel);
node.Block.Accept(this);
LeaveLoop();
_il.MarkLabel(conditionLabel);
EmitDebugInfo(node);
EmitBranchTrue(node.Condition, bodyLabel);
Visit(node.OrBlock);
Visit(node.ThenBlock);
_il.MarkLabel(endLabel);
}