| with System; |
| package Self is |
| type Lim is limited private; |
| type Lim_Ref is access all Lim; |
| function G (X : Integer) return lim; |
| |
| procedure Change (X : in out Lim; Incr : Integer); |
| function Get (X : Lim) return Integer; |
| private |
| type Lim is limited record |
| Comp : Integer; |
| Self_Default : Lim_Ref := Lim'Unchecked_Access; |
| Self_Unrestricted_Default : Lim_Ref := Lim'Unrestricted_Access; |
| Self_Anon_Default : access Lim := Lim'Unchecked_Access; |
| Self_Anon_Unrestricted_Default : access Lim := Lim'Unrestricted_Access; |
| end record; |
| end Self; |