module Direct: sig .. end
val iter : Execution_context.t ->
       work_group:((Execution_context.t, Work_group.t Backpatched.t)
                   Fieldslib.Field.t ->
                   Execution_context.t -> Work_group.t Backpatched.t -> 'a) ->
       monitor:((Execution_context.t,
                 Execution_context.t Execution_context.Monitor.t_ Backpatched.t)
                Fieldslib.Field.t ->
                Execution_context.t ->
                Execution_context.t Execution_context.Monitor.t_ Backpatched.t -> 'b) ->
       priority:((Execution_context.t, Priority.t) Fieldslib.Field.t ->
                 Execution_context.t -> Priority.t -> 'c) ->
       backtrace_history:((Execution_context.t, Core.Std.Backtrace.t list)
                          Fieldslib.Field.t ->
                          Execution_context.t -> Core.Std.Backtrace.t list -> 'd) ->
       'd
val fold : Execution_context.t ->
       init:'a ->
       work_group:('a ->
                   (Execution_context.t, Work_group.t Backpatched.t)
                   Fieldslib.Field.t ->
                   Execution_context.t -> Work_group.t Backpatched.t -> 'b) ->
       monitor:('b ->
                (Execution_context.t,
                 Execution_context.t Execution_context.Monitor.t_ Backpatched.t)
                Fieldslib.Field.t ->
                Execution_context.t ->
                Execution_context.t Execution_context.Monitor.t_ Backpatched.t -> 'c) ->
       priority:('c ->
                 (Execution_context.t, Priority.t) Fieldslib.Field.t ->
                 Execution_context.t -> Priority.t -> 'd) ->
       backtrace_history:('d ->
                          (Execution_context.t, Core.Std.Backtrace.t list)
                          Fieldslib.Field.t ->
                          Execution_context.t -> Core.Std.Backtrace.t list -> 'e) ->
       'e