Would it be too much of an edge case for the compiler to consider small union splitting for looping over a heterogenous tuple? In this case, since there are only two types, it seems like it would be possible to say my_sum_struct.ops[i]::Union{MyStruct{Matrix{Float64}, Float64}, MyStruct{Matrix{Float64}, Int64}}.