Right, that solves my problem, thanks. But I still think this behaviour is unintuitive, especially in the following completely artificial example.
julia> t = Array{Array{Dict{String, Array{Array{Float64,2}}},2},2}
Array{Array{Dict{String,Array{Array{Float64,2},N} where N},2},2}
julia> t.parameters[1]
Array{Dict{String,Array{Array{Float64,2},N} where N},2}
julia> t.parameters[1].parameters[1]
Dict{String,Array{Array{Float64,2},N} where N}
julia> t.parameters[1].parameters[1].parameters[2]
Array{Array{Float64,2},N} where N
julia> typeof(t.parameters[1].parameters[1])
DataType
julia> t.parameters[1].parameters[1].parameters[2].parameters[1]
ERROR: type UnionAll has no field parameters
julia> typeof(t.parameters[1].parameters[1].parameters[2])
UnionAll
Seems like when we get to an array of floating numbers or an array of arrays, it treats it a a UnionAll as opposed to DataType. If this is normal, I hope someone explains the rationale.