somehow DataFrame calls promote_type(:Type{Union{}}, ::Type{T}) indirectly for T = String.
promote_type(::Type{Union{}}, ::Type{T}) where T in Base at promotion.jl:224
But WeakRefString.jl defined the below, causing an ambiguity cos Union{} <: InlineString is true.
promote_type(::Type{T}, ::Type{String}) where T<:InlineString in WeakRefStrings at c:\git\WeakRefStrings\src\inlinestrings.jl:44