package body Limited1_Inner is overriding procedure Finalize (X : in out Limited_Type) is begin if X.Self /= X'Unrestricted_Access then raise Program_Error with "Copied!"; end if; end; function Make_Inner return Inner_Type is begin return Inner : Inner_Type (True) do null; end return; end; end;