-- { dg-do run }

procedure Timing_Events is
   type Timing_Event_Handler is access protected procedure;
   
   protected PO is
      entry     Test;
      procedure Proc;
   private
      Data : Integer := 99;
   end PO;
   
   protected body PO is
      entry Test when True is
         Handler : Timing_Event_Handler := Proc'Access;
      begin
         Handler.all;
      end Test;
      
      procedure Proc is
      begin
         if Data /= 99 then
            raise Program_Error;
         end if;
      end Proc;
   end PO;
begin
   PO.Test;
end;