So what is the refcounted type in the advanced record example ? I see a free at the end, but no reference counting, so big fat exception if you add the object to some global list since that will lead to a double free.
The other two interface based once have reference count somewhere, but non of the demos really demonstrate that by increasing references beyond the one instance used locally in that procedure. All three examples seem to only care about skipping finalization code for the simplest case.
That has its place, certainly, (*) but is it really ARC/Smartpointer?
(*) e.g. in web request processing. Anything that simplifies the endless try-finally blocks is welcome.