sig
  val iter :
    Execution_context.t ->
    block_group:((Execution_context.t, Block_group.t) Fieldslib.Field.t ->
                 Execution_context.t -> Block_group.t -> 'a) ->
    monitor:((Execution_context.t,
              Execution_context.t Execution_context.Monitor.t)
             Fieldslib.Field.t ->
             Execution_context.t ->
             Execution_context.t Execution_context.Monitor.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:'->
    block_group:('->
                 (Execution_context.t, Block_group.t) Fieldslib.Field.t ->
                 Execution_context.t -> Block_group.t -> 'b) ->
    monitor:('->
             (Execution_context.t,
              Execution_context.t Execution_context.Monitor.t)
             Fieldslib.Field.t ->
             Execution_context.t ->
             Execution_context.t Execution_context.Monitor.t -> 'c) ->
    priority:('->
              (Execution_context.t, Priority.t) Fieldslib.Field.t ->
              Execution_context.t -> Priority.t -> 'd) ->
    backtrace_history:('->
                       (Execution_context.t, Core.Std.Backtrace.t list)
                       Fieldslib.Field.t ->
                       Execution_context.t -> Core.Std.Backtrace.t list -> 'e) ->
    'e
end