How to tell if a type is an efficient small type union?

It is the case. Missing and Nothing behave a little differently in those Unions if they are present as missing or nothing in a vector (see below) – but not if they are in the Union type and not present in the vector. That’s why I asked “How is this being determined”?

julia> Base.summarysize(Union{Missing,Int32}[1, 2])
56

julia> Base.summarysize(Union{Missing,Int32}[1, missing])
52

julia> Base.summarysize(Union{Nothing,Int32}[1, nothing])
52