Either way is fine, not sure if ```@:allow``` would have issues with override functions, but probably not when the type of the object is known at compile time. I don't really think one way is better than the other, as long as users know not to destroy these objects themselves.