with Tamdt_Aux; package body TAMDT is type TAMT1 is new Tamdt_Aux.Priv (X => 1); type TAMT2 is new Tamdt_Aux.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;