1package Prot6 is
2
3   generic
4      type TD is private;
5      type TI is synchronized interface;
6   package Set_Get is
7      type T is synchronized interface and TI;
8
9      procedure Set (E : in out T; D : TD) is abstract;
10      function Get (E : T) return TD is abstract;
11   end Set_Get;
12
13   type My_Type_Interface is synchronized interface;
14
15   package Set_Get_Integer is
16     new Set_Get (TD => Integer,
17                  TI => My_Type_Interface);
18   use Set_Get_Integer;
19
20   protected type My_Type is
21        new Set_Get_Integer.T with
22
23      overriding procedure Set (D : Integer);
24      overriding function Get return Integer;
25   private
26      I : Integer;
27   end My_Type;
28
29   procedure Dummy;
30
31end Prot6;
32