Code.Switch currently deal with both immediate and block/tagged values.
I feel we could simplify things a bit by adding an explicit condition on is_int and have Switch just dispatch on a variable immediate value
In other words, I means turning
Into
B1: Cond(isInt x, B2, B3)
B2: Switch(x, A1)
B3: let x' = tag x; Switch (x', A2)