Do not force the user to write boilerplate like
mutable struct TreeActor <: Component
id::ComponentId
children::Vector{ComponentId}
TreeActor() = new(rand(ComponentId), [])
end
The ideal solution would be
mutable struct TreeActor <: Component
children::Vector{ComponentId}
TreeActor() = new([])
end
And also providing the alternative
@component TreeActor
children::Vector{ComponentId}
TreeActor() = new([])
end