12.5.5 Formal Interface Types
The category determined for a formal interface type 
is the category of all interface types. 
Syntax
Legality Rules
The actual type shall be a descendant of every progenitor 
of the formal type.
The actual type shall be a limited, task, protected, 
or synchronized interface if and only if the formal type is also, respectively, 
a limited, task, protected, or synchronized interface. 
Examples
type Root_Work_Item is tagged private;
generic
   type Managed_Task is task interface;
   type Work_Item(<>) is new Root_Work_Item with private;
package Server_Manager is
   task type Server is new Managed_Task with
      entry Start(Data : in out Work_Item);
   end Server;
end Server_Manager;
This generic allows an application to establish a 
standard interface that all tasks need to implement so they can be managed 
appropriately by an application-specific scheduler.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe