I guess my example wasn't the best. My point is that an object's fields are not allowed to be mutated in `=destroy` \- my code example still fails to compile if the 3 lines starting with `var a` are removed.
Explicitly calling the destructor for a field, as your example shows, works fine if said field is not a resource that is shared with other objects. But there would be problems if it _is_ shared.