ref var r = ref (arr != null ? ref arr[0]: ref otherArr[0]);
```
The difference from Choice is that consequence and alternative expressions are accessed in a _truly_ conditional manner, so we do not see a crash if ```arr == null```
The ternary ref is just a ternary where both alternative and consequence are refs. It will naturally require that consequence/alternative operands are LValues.
It will also require that consequence and alternative have types that are identity convertible to each other.
The type of the expression will be computed similarly to the one for the regular ternary. I.E. in a case if consequence and alternative have identity convertible, but different types, the existing type-merging rules will apply.
Safe-to-return will be assumed conservatively from the conditional operands. If either is unsafe to return the whole thing is unsafe to return.
Ref ternary is an LValue and as such it can be passed/assigned/returned by reference;