Hi Tom
You can either estimate it in Nlogit using a Nested Logit structure or you can use non-linear utility commands to do precisely what Michiel suggested.
If you use the Nested Logit model, you can place the different alternatives in whatever branch structure you like, so you could place the full choice in one branch and the restricted choice in the second, or you could place the hypothetical alternatives of both the full and unrestricted choices in one branch and the opt out in its own degenerative branch. This should be fairly straight forward to do, but then you cannot use other things such as random parameters.
If you use the non-linear command structure, it is a bit clunky, but it allows you to write out complex non-linear utility functions. An example I used to teach 100 years ago looked like this for 5 alternatives. It allows you to write out whatever utility function in the fn commands.
Nlrplogit
;lhs=choice,cset,Altij
;choices = pet,die,HEV,PEV,BEV
;start = 0,0,0,0,0,0,0,0,0,0,0
;labels = Income1,ASC1,ASC2,ASC3,ASC4,pr1,pr2,pr3,opcp,rge,emp
;fn1 = V1 = ASC1 + pr1*price + OPCp*OPC + RGE*RANGE + Emp*emiss1
;fn2 = V2 = ASC2 + pr1*price + OPCp*OPC + RGE*RANGE + Emp*emiss1
;fn3 = V3 = ASC3 + pr2*price + OPCp*OPC + exp(income1)*(RGE*RANGE + Emp*emiss1)
;fn4 = V4 = ASC4 + pr2*price + OPCp*OPC + exp(income1)*(RGE*RANGE + Emp*emiss1)
;fn5 = V5 = pr3*price + OPCp*OPC + RGE*RANGE + Emp*emiss1
;model:
U(pet) = V1 /
U(die) = V2 /
U(hev) = V3 /
U(pev) = V4 /
U(bev) = V5 $
Assuming the first two alternatives relate to the restricted choice and the last three to the full choice, you could have something like this
;fn1 = V1 = exp(scale)*(ASC1 + pr1*price + OPCp*OPC + RGE*RANGE + Emp*emiss1)
;fn2 = V2 = exp(scale)*(ASC2 + pr1*price + OPCp*OPC + RGE*RANGE + Emp*emiss1)
;fn3 = V3 = ASC3 + pr2*price + OPCp*OPC + RGE*RANGE + Emp*emiss1
;fn4 = V4 = ASC4 + pr2*price + OPCp*OPC + RGE*RANGE + Emp*emiss1
;fn5 = V5 = 0
As I said, a bit clunky, and it slows estimation time down considerably, but certainly can be done.