bah. move has <Option> which for C/C++ will be familiar in the form `union` it is an abomination, and has contaminated most multi-language RPC API frameworks with this idiotic trash at least move also has go-like tuples but i'm never going to willingly use this abomination in my Move code. not negotiable, the thing should not exist. instead it should have FUCKING INTERFACES
also it's really simple to write a static analyser on the ASTs of parsed code to identify when there is a path where a vector or interface type (they are related in the way they are dual indirections) may have a zero value and demand a nil guard somewhere between the declaration and usage where it would be panic condition