This recovers the fastness of Static arrays, using Setfield.jl
function Base.copy(bc::Broadcasted{<:MtypeStyle{N,T}}) where {N,T}
# traverse Broadcasted tree to find Mtype instances
name, p = get_name_p(bc)
# This trick works:
# https://discourse.julialang.org/t/constructing-svector-with-a-loop/15372/7
s = SVector{N,T}(1:N)
for (i,v) in enumerate(bc)
@set s[i] = v
end
Mtype{N,T}(s, name, p)
end