This introduces an intermediate `Select` struct, which hopefully makes the codegen a bit simpler by transforming the complext AST to something more straight-forward.
cargo fmt