with Ada.Tags.Generic_Dispatching_Constructor;
package generic_dispatch_p is
   type Iface is interface;
   function Constructor (I : not null access Integer) return Iface is abstract;
   function Dispatching_Constructor
      is new Ada.Tags.Generic_Dispatching_Constructor
               (T           => Iface,
                Parameters  => Integer,
                Constructor => Constructor);
   type DT is new Iface with null record; 
   overriding
   function Constructor (I : not null access Integer) return DT;
end;