package Test_1 is

   Max : constant := 100;
   Min : constant Natural := Natural'First;
   Mix : Positive := Max - Min;

   type A;
   type B is mod Max-1;
   type A is new Integer;
   type C is digits 18;
   type D is abstract tagged limited null record;
   type E is array (Min..Max) of Float;
   type F is access constant E;
   type G is access all F;
   type H is access protected procedure (X,Y : access A);
   type I is access  function (X : in D) return E;

   task type J (Disc : F) is
         entry A (X : out Float);
      private
         entry B (Y : in Integer);
   end J;

   task Ja is
         entry A (X : out Float);
      private
         entry B (Y : in Integer);
   end Ja;

   protected type K (Disc : G) is
         procedure A;
      private
         entry B;
   end K;

   protected Ka is
         procedure A;
      private
         entry B;
   end Ka;

   L : aliased constant A := Max;

   package M renames Test_1;

   procedure N (X,Y,Z : A; V : access A; W : out B);
   function O (X,Y,Z : G) return B;

end Test_1;