> > Wouldn't it make more sense to simply use a final class? This gives both the guarantees of finalization and releasing memory.
> 
> Wait, what?

When the GC collects a class, doesn't it both call that class's destructor and collect the memory where it is located? Not in a deterministic manner, no, but it guarantees it *will* happen sooner or later (you are making me doubt).

> > I don't think it would be acceptable to change RefCounted to use GC: That goes against the deterministic memory management, and it would still leak destructors.
>
> Misunderstanding. The GC offers compulsive free as well, and the RC would use it.

Right, but that implies the destructor is called on the RC at all. It is currently not the case if you place it in an array (eg, my first `groupB().array()` comment). Making RC use GC will guarantee the memory gets released (sooner with free, or later with a collect). But if the GC collects a RC whose reference count is *not* 0, then the reference counted object is not destroyed ("Destruction Leak").

It's one of the reasons why using a `File[]` usually leads to suffering...