1. -- 
  2. generic 
  3.  
  4.    type Data_Priority_Type is (<>); 
  5.    -- 
  6.    --  Ordered: High .. low priority 
  7.  
  8.    type Data_Type is tagged private; 
  9.  
  10.    with procedure Handler (D : Data_Type'Class; With_P : Data_Priority_Type); 
  11.  
  12. package Generic_Priority_Controller is 
  13.    pragma Elaborate_Body; 
  14.  
  15.    procedure Start; 
  16.  
  17.    procedure Get (D : Data_Type'Class; With_P : Data_Priority_Type); 
  18.  
  19. end Generic_Priority_Controller;