Types in Julia are invariant wrt their parameters, more on that in the docs. That means, Sub <: Super does not imply T{Sub} <: T{Super}. If you need the concept of “Super and all it subtypes as a type parameter”, use T{<:Super} or T{S where S<:Super}
In your case, it seems that it’s better to work the other way: initialize your res_input and output with Dict{BluePrint, Int64}() or, if you use a comprehension, Dict{BluePrint, Int64}(k => v for (k, v) in itr).