A mutable struct that does not get mutated ? or does it?

I’m not sure exactly why, but since the broadcast call didn’t just entirely error out, I assume that your type UnivariateGammaConvolution must have a broadcasting rule defined implicitly for it by the Distributions.jl package because it is a subtype of Distributions.ContinuousUnivariateDistribution.

It might be worth opening an issue there to see if that is an intended behavior or not. I am also surprised that the Ref trick didn’t work, maybe mention that too.