public QilNode Choice(QilNode expr, QilList branches) { if (!_debug) { switch (branches.Count) { case 1: // If expr has no side effects, it will be eliminated by optimizer return(_f.Loop(_f.Let(expr), branches[0])); case 2: return(_f.Conditional(_f.Eq(expr, _f.LiteralInt32(0)), branches[0], branches[1])); } } return(_f.Choice(expr, branches)); }