in src/ArrowTypes/src/ArrowTypes.jl [404:423]
function ToArrow(x::A) where {A}
S = eltype(A)
T = ArrowType(S)
if S === T && concrete_or_concreteunion(S)
return x
elseif !concrete_or_concreteunion(T)
if isempty(x)
return Missing[]
end
T = typeof(toarrow(x[1]))
for i = 2:length(x)
@inbounds T = promoteunion(T, typeof(toarrow(x[i])))
end
if T === Missing && concrete_or_concreteunion(S)
T = promoteunion(T, typeof(toarrow(default(S))))
end
end
return ToArrow{T,A}(x)
end