with Array16_Pkg; package Array16 is type T1 (D : Integer) is record case D is when 1 => I : Integer; when others => null; end case; end record; type Arr is array (Integer range <>) of Integer; type My_T1 is new T1 (Array16_Pkg.N); type My_T2 is new Arr (1 .. Integer'Min (2, Array16_Pkg.N)); function F1 (A : access My_T1) return My_T1; pragma Inline (F1); function F2 (A : access My_T2) return My_T2; pragma Inline (F2); procedure Proc (A : access My_T1; B : access My_T2); end Array16;