1with System; 2package Self is 3 type Lim is limited private; 4 type Lim_Ref is access all Lim; 5 function G (X : Integer) return lim; 6 7 procedure Change (X : in out Lim; Incr : Integer); 8 function Get (X : Lim) return Integer; 9private 10 type Lim is limited record 11 Comp : Integer; 12 Self_Default : Lim_Ref := Lim'Unchecked_Access; 13 Self_Unrestricted_Default : Lim_Ref := Lim'Unrestricted_Access; 14 Self_Anon_Default : access Lim := Lim'Unchecked_Access; 15 Self_Anon_Unrestricted_Default : access Lim := Lim'Unrestricted_Access; 16 end record; 17end Self; 18