private EmitValHLSL EmitExpImpl(MidSwitchExp exp, Span span)
        {
            var value = EmitExp(exp.Value, span);

            span.WriteLine("switch ({0})", value);
            span.WriteLine("{");
            foreach (var c in exp.Cases)
            {
                var cVal = EmitVal(c.Value, span);
                span.WriteLine("case {0}:", cVal);
                var cBody = EmitExp(c.Body, span.IndentSpan());
                span.WriteLine("\tbreak;", cVal);
            }
            span.WriteLine("}");
            return VoidVal;
        }
 private void TransformChildrenImpl(
     MidSwitchExp exp)
 {
     exp.Value = Transform(exp.Value);
     foreach (var c in exp.Cases)
     {
         c.Value = Transform(c.Value);
         c.Body = Transform(c.Body);
     }
 }