We can support nullable union arrays by providing an ArrayType implementation for Option (and we can do the same for Result). The only big change this requires is wrapping the type index in a new type (can't we use i8 directly - because we can't implement that conversion for foreign types).