I see now, thanks again. This helped convince me:
julia> struct Foo{Ta,Tb,Tc}
a::Ta
b::Tb
c::Tc
end
julia> f(T::Type{<:Foo}) = println("hello from f1")
f (generic function with 1 method)
julia> f(T::Type{Foo{Ta,Tb,Tc}}) where {Ta,Tb,Tc} = println("hello from f2")
f (generic function with 2 methods)
julia> foo = Foo(1,2,3)
Foo{Int64, Int64, Int64}(1, 2, 3)
julia> f(typeof(foo))
hello from f2
julia> f(Union{})
hello from f1
julia>