1. package Events.Listeners is 
  2.  
  3.     type Event_Listener is limited interface; 
  4.     type A_Event_Listener is access all Event_Listener'Class; 
  5.  
  6.     -- If 'evt' is returned null then the event was consumed. 
  7.     procedure Handle_Event( this : access Event_Listener; 
  8.                             evt  : in out A_Event; 
  9.                             resp : out Response_Type ) is abstract; 
  10.  
  11.     -- Returns a string that identifies the event listener object. 
  12.     function To_String( this : access Event_Listener ) return String is abstract; 
  13.  
  14. end Events.Listeners;