[log in to unmask] wrote:
>    procedure Finalize (Item : Needs_Guaranteed_Heap_Cleanup) is
>    -- automatically called when Item exits scope.
>    -- client of Item cannot prevent it (or forget it).
>    begin
>       Free (Item.Pointer);
>       Finalize (Controlled(Item));
>    end Finalize;

According to ARM 7.6(9), "The (default) implementations of Initialize,
Adjust, and Finalize have no effect.", so this call to Finalize seems

Jeff Carter
"If you think you got a nasty taunting this time,
you ain't heard nothing yet!"
Monty Python and the Holy Grail