package Primitive is

   type T is tagged null record;
   procedure Prim (P : T);
   procedure Non_Dispatch (P : T);
   procedure Dispatch (P : T'Class);

   type T2 is new T with null record;
   procedure Prim (P : T2);

   type T3 is new T2 with null record;
   procedure Prim (P : T3);

   type T4 is tagged null record;
   procedure Prim (P : T4);

end Primitive;
