Maybe I’m overlooking something, but what’s the meaning of being able to define a Destructor as Public, Protected or Private?
I mean, even when a Destructor is private, I can destroy the object…

If it’s public you can call it directly Instance.Destructor

Same as any other method, it determines if it can be accessed from outside the class. I always make mine private.

One note: unlike Constructors that must specifically call super.Constructor, if any, Destructors automatically cascade. You don’t need to call super.Destructor, nor is there a way to prevent the Super’s Destructor from executing other than flags in your code.

True, if it’s public it can be called from outside, which is generally bad. So why not making it always private?