It’s just a method you call on the object, so .value.initialize.
To be honest this all sounds very YAGNI :D So I’m not sure about any better ways. FWIW Array is completely implemented in Crystal, there’s no compiler special casing for it beyond the literal syntax, so for example here’s the method to allocate a new array all pointing to the same value: https://github.com/crystal-lang/crystal/blob/master/src/array.cr#L105-L118
For the finalizer there’s GC.add_finalizer, though you probably want some kind of wrapper struct where you can iterate through the childrens to call finalize on them when the entire object goes out of scope.