At some point we will need to walk the expr tree to fold this back where appropriate, i.e. single use for calls.
Uses single static assignment to recover expression trees from straight-line byte code.