type Parts_Enum is (<>);
type Action_Part_Time_Scope is record Start_Delay_Min : Time_Span := Time_Span_Zero; Start_Delay_Max : Time_Span := Time_Span_Last; Max_Elapse : Time_Span := Time_Span_Last; Deadline : Time := Time_Last; end record;
type Action_Part_Proc is access procedure;
type Action_Part_Procs is record Action, Cleanup : Action_Part_Proc; Scope : Action_Part_Time_Scope; end record;
type Action_Parts is array (Parts_Enum) of Action_Part_Procs;