generic
package Abstract_Private is
   type T1 is abstract tagged private;
   procedure P1 (X : T1) is abstract;
   type T2 is abstract tagged private;
private
   type T1 is abstract tagged null record;
   procedure P2 (X : T1) is abstract; -- { dg-error "must be visible" }
   type T2 is abstract new T1 with null record;
   procedure P1 (X : T2) is abstract;
end Abstract_Private;