with Taft_Type1_Pkg2; package body Taft_Type1_Pkg1 is type TAMT1 is new Taft_Type1_Pkg2.Priv (X => 1); type TAMT2 is new Taft_Type1_Pkg2.Priv; procedure Check is Ptr1 : TAMT1_Access := new TAMT1; Ptr2 : TAMT2_Access := new TAMT2 (X => 2); begin if Ptr1.all.X /= 1 then raise Program_Error; end if; if Ptr2.all.X /= 2 then raise Program_Error; end if; end; end Taft_Type1_Pkg1;