1with Ada.Containers.Vectors;
2with Ada.Containers;
3with Ada.Finalization;
4
5package Tagged1 is
6
7   generic
8      type Target_Type (<>) is limited private;
9   package A is
10      type Smart_Pointer_Type is private;
11   private
12      type Smart_Pointer_Type
13        is new Ada.Finalization.Controlled with null record;
14   end;
15
16   generic
17      type Target_Type (<>) is limited private;
18   package SP is
19      type Smart_Pointer_Type is private;
20   private
21      package S is new A (Integer);
22      type Smart_Pointer_Type is new S.Smart_Pointer_Type;
23   end;
24
25   type Root_Type is tagged record
26      Orders : Integer;
27   end record;
28   package Smarts is new SP
29     (Target_Type => Root_Type'Class);
30
31   type Fat_Reference_Type is new Smarts.Smart_Pointer_Type;
32   type EST is record
33      Orders : Fat_Reference_Type;
34   end record;
35
36   package V is new Ada.Containers.Vectors (Positive, EST);
37
38   procedure Dummy;
39end;
40