sig
  val __pa_ounit_275876e34cf609db118f3d84b799a790 : string
  module Monitor :
    sig
      val __pa_ounit_275876e34cf609db118f3d84b799a790 : string
      type 'execution_context t_ =
        'execution_context Raw_monitor.t_ = {
        name : Core.Std.Info.t;
        here : Core.Std.Source_code_position.t option;
        id : int;
        parent : 'execution_context t_ option;
        errors : (exn, 'execution_context) Raw_tail.t;
        mutable has_seen_error : bool;
        mutable someone_is_listening : bool;
        mutable kill_index : Kill_index.t;
      }
      val kill_index : 'a t_ -> Kill_index.t
      val set_kill_index : 'a t_ -> Kill_index.t -> unit
      val someone_is_listening : 'a t_ -> bool
      val set_someone_is_listening : 'a t_ -> bool -> unit
      val has_seen_error : 'a t_ -> bool
      val set_has_seen_error : 'a t_ -> bool -> unit
      val errors : 'a t_ -> (exn, 'a) Raw_tail.t
      val parent : 'a t_ -> 'a t_ option
      val id : 'a t_ -> int
      val here : 'a t_ -> Core.Std.Source_code_position.t option
      val name : 'a t_ -> Core.Std.Info.t
      module Fields_of_t_ :
        sig
          val names : string list
          val kill_index :
            ([< `Read | `Set_and_create ], 'a t_, Kill_index.t)
            Fieldslib.Field.t_with_perm
          val someone_is_listening :
            ([< `Read | `Set_and_create ], 'a t_, bool)
            Fieldslib.Field.t_with_perm
          val has_seen_error :
            ([< `Read | `Set_and_create ], 'a t_, bool)
            Fieldslib.Field.t_with_perm
          val errors :
            ([< `Read | `Set_and_create ], 'execution_context t_,
             (exn, 'execution_context) Raw_tail.t)
            Fieldslib.Field.t_with_perm
          val parent :
            ([< `Read | `Set_and_create ], 'execution_context t_,
             'execution_context t_ option)
            Fieldslib.Field.t_with_perm
          val id :
            ([< `Read | `Set_and_create ], 'a t_, int)
            Fieldslib.Field.t_with_perm
          val here :
            ([< `Read | `Set_and_create ], 'a t_,
             Core.Std.Source_code_position.t option)
            Fieldslib.Field.t_with_perm
          val name :
            ([< `Read | `Set_and_create ], 'a t_, Core.Std.Info.t)
            Fieldslib.Field.t_with_perm
          val make_creator :
            name:(([< `Read | `Set_and_create ], 'a t_, Core.Std.Info.t)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Core.Std.Info.t) * 'd) ->
            here:(([< `Read | `Set_and_create ], 'e t_,
                   Core.Std.Source_code_position.t option)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Core.Std.Source_code_position.t option) * 'f) ->
            id:(([< `Read | `Set_and_create ], 'g t_, int)
                Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'h) ->
            parent:(([< `Read | `Set_and_create ], 'i t_, 'i t_ option)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> 'j t_ option) * 'k) ->
            errors:(([< `Read | `Set_and_create ], 'l t_,
                     (exn, 'l) Raw_tail.t)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> (exn, 'j) Raw_tail.t) * 'm) ->
            has_seen_error:(([< `Read | `Set_and_create ], 'n t_, bool)
                            Fieldslib.Field.t_with_perm ->
                            '-> ('-> bool) * 'o) ->
            someone_is_listening:(([< `Read | `Set_and_create ], 'p t_, bool)
                                  Fieldslib.Field.t_with_perm ->
                                  '-> ('-> bool) * 'q) ->
            kill_index:(([< `Read | `Set_and_create ], 'r t_, Kill_index.t)
                        Fieldslib.Field.t_with_perm ->
                        '-> ('-> Kill_index.t) * 's) ->
            '-> ('-> 'j t_) * 's
          val create :
            name:Core.Std.Info.t ->
            here:Core.Std.Source_code_position.t option ->
            id:int ->
            parent:'a t_ option ->
            errors:(exn, 'a) Raw_tail.t ->
            has_seen_error:bool ->
            someone_is_listening:bool -> kill_index:Kill_index.t -> 'a t_
          val map :
            name:(([< `Read | `Set_and_create ], 'a t_, Core.Std.Info.t)
                  Fieldslib.Field.t_with_perm -> Core.Std.Info.t) ->
            here:(([< `Read | `Set_and_create ], 'b t_,
                   Core.Std.Source_code_position.t option)
                  Fieldslib.Field.t_with_perm ->
                  Core.Std.Source_code_position.t option) ->
            id:(([< `Read | `Set_and_create ], 'c t_, int)
                Fieldslib.Field.t_with_perm -> int) ->
            parent:(([< `Read | `Set_and_create ], 'd t_, 'd t_ option)
                    Fieldslib.Field.t_with_perm -> 'e t_ option) ->
            errors:(([< `Read | `Set_and_create ], 'f t_,
                     (exn, 'f) Raw_tail.t)
                    Fieldslib.Field.t_with_perm -> (exn, 'e) Raw_tail.t) ->
            has_seen_error:(([< `Read | `Set_and_create ], 'g t_, bool)
                            Fieldslib.Field.t_with_perm -> bool) ->
            someone_is_listening:(([< `Read | `Set_and_create ], 'h t_, bool)
                                  Fieldslib.Field.t_with_perm -> bool) ->
            kill_index:(([< `Read | `Set_and_create ], 'i t_, Kill_index.t)
                        Fieldslib.Field.t_with_perm -> Kill_index.t) ->
            'e t_
          val iter :
            name:(([< `Read | `Set_and_create ], 'a t_, Core.Std.Info.t)
                  Fieldslib.Field.t_with_perm -> 'b) ->
            here:(([< `Read | `Set_and_create ], 'c t_,
                   Core.Std.Source_code_position.t option)
                  Fieldslib.Field.t_with_perm -> 'd) ->
            id:(([< `Read | `Set_and_create ], 'e t_, int)
                Fieldslib.Field.t_with_perm -> 'f) ->
            parent:(([< `Read | `Set_and_create ], 'g t_, 'g t_ option)
                    Fieldslib.Field.t_with_perm -> 'h) ->
            errors:(([< `Read | `Set_and_create ], 'i t_,
                     (exn, 'i) Raw_tail.t)
                    Fieldslib.Field.t_with_perm -> 'j) ->
            has_seen_error:(([< `Read | `Set_and_create ], 'k t_, bool)
                            Fieldslib.Field.t_with_perm -> 'l) ->
            someone_is_listening:(([< `Read | `Set_and_create ], 'm t_, bool)
                                  Fieldslib.Field.t_with_perm -> 'n) ->
            kill_index:(([< `Read | `Set_and_create ], 'o t_, Kill_index.t)
                        Fieldslib.Field.t_with_perm -> 'p) ->
            'p
          val fold :
            init:'->
            name:('->
                  ([< `Read | `Set_and_create ], 'b t_, Core.Std.Info.t)
                  Fieldslib.Field.t_with_perm -> 'c) ->
            here:('->
                  ([< `Read | `Set_and_create ], 'd t_,
                   Core.Std.Source_code_position.t option)
                  Fieldslib.Field.t_with_perm -> 'e) ->
            id:('->
                ([< `Read | `Set_and_create ], 'f t_, int)
                Fieldslib.Field.t_with_perm -> 'g) ->
            parent:('->
                    ([< `Read | `Set_and_create ], 'h t_, 'h t_ option)
                    Fieldslib.Field.t_with_perm -> 'i) ->
            errors:('->
                    ([< `Read | `Set_and_create ], 'j t_,
                     (exn, 'j) Raw_tail.t)
                    Fieldslib.Field.t_with_perm -> 'k) ->
            has_seen_error:('->
                            ([< `Read | `Set_and_create ], 'l t_, bool)
                            Fieldslib.Field.t_with_perm -> 'm) ->
            someone_is_listening:('->
                                  ([< `Read | `Set_and_create ], 'n t_, bool)
                                  Fieldslib.Field.t_with_perm -> 'o) ->
            kill_index:('->
                        ([< `Read | `Set_and_create ], 'p t_, Kill_index.t)
                        Fieldslib.Field.t_with_perm -> 'q) ->
            'q
          val map_poly :
            ([< `Read | `Set_and_create ], 'a t_, 'b) Fieldslib.Field.user ->
            'b list
          val for_all :
            name:(([< `Read | `Set_and_create ], 'a t_, Core.Std.Info.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
            here:(([< `Read | `Set_and_create ], 'b t_,
                   Core.Std.Source_code_position.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
            id:(([< `Read | `Set_and_create ], 'c t_, int)
                Fieldslib.Field.t_with_perm -> bool) ->
            parent:(([< `Read | `Set_and_create ], 'd t_, 'd t_ option)
                    Fieldslib.Field.t_with_perm -> bool) ->
            errors:(([< `Read | `Set_and_create ], 'e t_,
                     (exn, 'e) Raw_tail.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
            has_seen_error:(([< `Read | `Set_and_create ], 'f t_, bool)
                            Fieldslib.Field.t_with_perm -> bool) ->
            someone_is_listening:(([< `Read | `Set_and_create ], 'g t_, bool)
                                  Fieldslib.Field.t_with_perm -> bool) ->
            kill_index:(([< `Read | `Set_and_create ], 'h t_, Kill_index.t)
                        Fieldslib.Field.t_with_perm -> bool) ->
            bool
          val exists :
            name:(([< `Read | `Set_and_create ], 'a t_, Core.Std.Info.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
            here:(([< `Read | `Set_and_create ], 'b t_,
                   Core.Std.Source_code_position.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
            id:(([< `Read | `Set_and_create ], 'c t_, int)
                Fieldslib.Field.t_with_perm -> bool) ->
            parent:(([< `Read | `Set_and_create ], 'd t_, 'd t_ option)
                    Fieldslib.Field.t_with_perm -> bool) ->
            errors:(([< `Read | `Set_and_create ], 'e t_,
                     (exn, 'e) Raw_tail.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
            has_seen_error:(([< `Read | `Set_and_create ], 'f t_, bool)
                            Fieldslib.Field.t_with_perm -> bool) ->
            someone_is_listening:(([< `Read | `Set_and_create ], 'g t_, bool)
                                  Fieldslib.Field.t_with_perm -> bool) ->
            kill_index:(([< `Read | `Set_and_create ], 'h t_, Kill_index.t)
                        Fieldslib.Field.t_with_perm -> bool) ->
            bool
          val to_list :
            name:(([< `Read | `Set_and_create ], 'a t_, Core.Std.Info.t)
                  Fieldslib.Field.t_with_perm -> 'b) ->
            here:(([< `Read | `Set_and_create ], 'c t_,
                   Core.Std.Source_code_position.t option)
                  Fieldslib.Field.t_with_perm -> 'b) ->
            id:(([< `Read | `Set_and_create ], 'd t_, int)
                Fieldslib.Field.t_with_perm -> 'b) ->
            parent:(([< `Read | `Set_and_create ], 'e t_, 'e t_ option)
                    Fieldslib.Field.t_with_perm -> 'b) ->
            errors:(([< `Read | `Set_and_create ], 'f t_,
                     (exn, 'f) Raw_tail.t)
                    Fieldslib.Field.t_with_perm -> 'b) ->
            has_seen_error:(([< `Read | `Set_and_create ], 'g t_, bool)
                            Fieldslib.Field.t_with_perm -> 'b) ->
            someone_is_listening:(([< `Read | `Set_and_create ], 'h t_, bool)
                                  Fieldslib.Field.t_with_perm -> 'b) ->
            kill_index:(([< `Read | `Set_and_create ], 'i t_, Kill_index.t)
                        Fieldslib.Field.t_with_perm -> 'b) ->
            'b list
          module Direct :
            sig
              val iter :
                'a t_ ->
                name:(([< `Read | `Set_and_create ], 'b t_, Core.Std.Info.t)
                      Fieldslib.Field.t_with_perm ->
                      'a t_ -> Core.Std.Info.t -> 'c) ->
                here:(([< `Read | `Set_and_create ], 'd t_,
                       Core.Std.Source_code_position.t option)
                      Fieldslib.Field.t_with_perm ->
                      'a t_ -> Core.Std.Source_code_position.t option -> 'e) ->
                id:(([< `Read | `Set_and_create ], 'f t_, int)
                    Fieldslib.Field.t_with_perm -> 'a t_ -> int -> 'g) ->
                parent:(([< `Read | `Set_and_create ], 'h t_, 'h t_ option)
                        Fieldslib.Field.t_with_perm ->
                        'a t_ -> 'a t_ option -> 'i) ->
                errors:(([< `Read | `Set_and_create ], 'j t_,
                         (exn, 'j) Raw_tail.t)
                        Fieldslib.Field.t_with_perm ->
                        'a t_ -> (exn, 'a) Raw_tail.t -> 'k) ->
                has_seen_error:(([< `Read | `Set_and_create ], 'l t_, bool)
                                Fieldslib.Field.t_with_perm ->
                                'a t_ -> bool -> 'm) ->
                someone_is_listening:(([< `Read | `Set_and_create ], 
                                       'n t_, bool)
                                      Fieldslib.Field.t_with_perm ->
                                      'a t_ -> bool -> 'o) ->
                kill_index:(([< `Read | `Set_and_create ], 'p t_,
                             Kill_index.t)
                            Fieldslib.Field.t_with_perm ->
                            'a t_ -> Kill_index.t -> 'q) ->
                'q
              val fold :
                'a t_ ->
                init:'->
                name:('->
                      ([< `Read | `Set_and_create ], 'c t_, Core.Std.Info.t)
                      Fieldslib.Field.t_with_perm ->
                      'a t_ -> Core.Std.Info.t -> 'd) ->
                here:('->
                      ([< `Read | `Set_and_create ], 'e t_,
                       Core.Std.Source_code_position.t option)
                      Fieldslib.Field.t_with_perm ->
                      'a t_ -> Core.Std.Source_code_position.t option -> 'f) ->
                id:('->
                    ([< `Read | `Set_and_create ], 'g t_, int)
                    Fieldslib.Field.t_with_perm -> 'a t_ -> int -> 'h) ->
                parent:('->
                        ([< `Read | `Set_and_create ], 'i t_, 'i t_ option)
                        Fieldslib.Field.t_with_perm ->
                        'a t_ -> 'a t_ option -> 'j) ->
                errors:('->
                        ([< `Read | `Set_and_create ], 'k t_,
                         (exn, 'k) Raw_tail.t)
                        Fieldslib.Field.t_with_perm ->
                        'a t_ -> (exn, 'a) Raw_tail.t -> 'l) ->
                has_seen_error:('->
                                ([< `Read | `Set_and_create ], 'm t_, bool)
                                Fieldslib.Field.t_with_perm ->
                                'a t_ -> bool -> 'n) ->
                someone_is_listening:('->
                                      ([< `Read | `Set_and_create ], 
                                       'o t_, bool)
                                      Fieldslib.Field.t_with_perm ->
                                      'a t_ -> bool -> 'p) ->
                kill_index:('->
                            ([< `Read | `Set_and_create ], 'q t_,
                             Kill_index.t)
                            Fieldslib.Field.t_with_perm ->
                            'a t_ -> Kill_index.t -> 'r) ->
                'r
            end
        end
      module Pretty :
        sig
          type one =
            Raw_monitor.Pretty.one = {
            name : Core.Std.Info.t;
            here : Core.Std.Source_code_position.t option;
            id : int;
            has_seen_error : bool;
            someone_is_listening : bool;
            kill_index : Kill_index.t;
          }
          val sexp_of_one : one -> Sexplib.Sexp.t
          type t = one list
          val sexp_of_t : one list -> Sexplib.Sexp.t
        end
      val to_pretty : 'a t_ -> Pretty.one Core.Std.List.t
      val sexp_of_t_ : '-> 'b t_ -> Sexplib.Sexp.t
      exception Shutdown
      val update_kill_index : 'a t_ -> global_kill_index:Kill_index.t -> unit
    end
  type t =
    Execution_context.t = {
    monitor : t Monitor.t_ Backpatched.t;
    priority : Priority.t;
    backtrace_history : Core.Std.Backtrace.t list;
    mutable kill_index : Kill_index.t;
  }
  val sexp_of_t : t -> Sexplib.Sexp.t
  val kill_index : t -> Kill_index.t
  val set_kill_index : t -> Kill_index.t -> unit
  val backtrace_history : t -> Core.Std.Backtrace.t list
  val priority : t -> Priority.t
  module Fields :
    sig
      val names : string list
      val kill_index :
        ([< `Read | `Set_and_create ], t, Kill_index.t)
        Fieldslib.Field.t_with_perm
      val backtrace_history :
        ([< `Read | `Set_and_create ], t, Core.Std.Backtrace.t list)
        Fieldslib.Field.t_with_perm
      val priority :
        ([< `Read | `Set_and_create ], t, Priority.t)
        Fieldslib.Field.t_with_perm
      val monitor :
        ([< `Read | `Set_and_create ], t, t Monitor.t_ Backpatched.t)
        Fieldslib.Field.t_with_perm
      val make_creator :
        monitor:(([< `Read | `Set_and_create ], t,
                  t Monitor.t_ Backpatched.t)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> t Monitor.t_ Backpatched.t) * 'c) ->
        priority:(([< `Read | `Set_and_create ], t, Priority.t)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Priority.t) * 'd) ->
        backtrace_history:(([< `Read | `Set_and_create ], t,
                            Core.Std.Backtrace.t list)
                           Fieldslib.Field.t_with_perm ->
                           '-> ('-> Core.Std.Backtrace.t list) * 'e) ->
        kill_index:(([< `Read | `Set_and_create ], t, Kill_index.t)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> Kill_index.t) * 'f) ->
        '-> ('-> t) * 'f
      val create :
        monitor:t Monitor.t_ Backpatched.t ->
        priority:Priority.t ->
        backtrace_history:Core.Std.Backtrace.t list ->
        kill_index:Kill_index.t -> t
      val map :
        monitor:(([< `Read | `Set_and_create ], t,
                  t Monitor.t_ Backpatched.t)
                 Fieldslib.Field.t_with_perm -> t Monitor.t_ Backpatched.t) ->
        priority:(([< `Read | `Set_and_create ], t, Priority.t)
                  Fieldslib.Field.t_with_perm -> Priority.t) ->
        backtrace_history:(([< `Read | `Set_and_create ], t,
                            Core.Std.Backtrace.t list)
                           Fieldslib.Field.t_with_perm ->
                           Core.Std.Backtrace.t list) ->
        kill_index:(([< `Read | `Set_and_create ], t, Kill_index.t)
                    Fieldslib.Field.t_with_perm -> Kill_index.t) ->
        t
      val iter :
        monitor:(([< `Read | `Set_and_create ], t,
                  t Monitor.t_ Backpatched.t)
                 Fieldslib.Field.t_with_perm -> 'a) ->
        priority:(([< `Read | `Set_and_create ], t, Priority.t)
                  Fieldslib.Field.t_with_perm -> 'b) ->
        backtrace_history:(([< `Read | `Set_and_create ], t,
                            Core.Std.Backtrace.t list)
                           Fieldslib.Field.t_with_perm -> 'c) ->
        kill_index:(([< `Read | `Set_and_create ], t, Kill_index.t)
                    Fieldslib.Field.t_with_perm -> 'd) ->
        'd
      val fold :
        init:'->
        monitor:('->
                 ([< `Read | `Set_and_create ], t,
                  t Monitor.t_ Backpatched.t)
                 Fieldslib.Field.t_with_perm -> 'b) ->
        priority:('->
                  ([< `Read | `Set_and_create ], t, Priority.t)
                  Fieldslib.Field.t_with_perm -> 'c) ->
        backtrace_history:('->
                           ([< `Read | `Set_and_create ], t,
                            Core.Std.Backtrace.t list)
                           Fieldslib.Field.t_with_perm -> 'd) ->
        kill_index:('->
                    ([< `Read | `Set_and_create ], t, Kill_index.t)
                    Fieldslib.Field.t_with_perm -> 'e) ->
        'e
      val map_poly :
        ([< `Read | `Set_and_create ], t, 'a) Fieldslib.Field.user -> 'a list
      val for_all :
        monitor:(([< `Read | `Set_and_create ], t,
                  t Monitor.t_ Backpatched.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
        priority:(([< `Read | `Set_and_create ], t, Priority.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
        backtrace_history:(([< `Read | `Set_and_create ], t,
                            Core.Std.Backtrace.t list)
                           Fieldslib.Field.t_with_perm -> bool) ->
        kill_index:(([< `Read | `Set_and_create ], t, Kill_index.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
        bool
      val exists :
        monitor:(([< `Read | `Set_and_create ], t,
                  t Monitor.t_ Backpatched.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
        priority:(([< `Read | `Set_and_create ], t, Priority.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
        backtrace_history:(([< `Read | `Set_and_create ], t,
                            Core.Std.Backtrace.t list)
                           Fieldslib.Field.t_with_perm -> bool) ->
        kill_index:(([< `Read | `Set_and_create ], t, Kill_index.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
        bool
      val to_list :
        monitor:(([< `Read | `Set_and_create ], t,
                  t Monitor.t_ Backpatched.t)
                 Fieldslib.Field.t_with_perm -> 'a) ->
        priority:(([< `Read | `Set_and_create ], t, Priority.t)
                  Fieldslib.Field.t_with_perm -> 'a) ->
        backtrace_history:(([< `Read | `Set_and_create ], t,
                            Core.Std.Backtrace.t list)
                           Fieldslib.Field.t_with_perm -> 'a) ->
        kill_index:(([< `Read | `Set_and_create ], t, Kill_index.t)
                    Fieldslib.Field.t_with_perm -> 'a) ->
        'a list
      module Direct :
        sig
          val iter :
            t ->
            monitor:(([< `Read | `Set_and_create ], t,
                      t Monitor.t_ Backpatched.t)
                     Fieldslib.Field.t_with_perm ->
                     t -> t Monitor.t_ Backpatched.t -> 'a) ->
            priority:(([< `Read | `Set_and_create ], t, Priority.t)
                      Fieldslib.Field.t_with_perm -> t -> Priority.t -> 'b) ->
            backtrace_history:(([< `Read | `Set_and_create ], t,
                                Core.Std.Backtrace.t list)
                               Fieldslib.Field.t_with_perm ->
                               t -> Core.Std.Backtrace.t list -> 'c) ->
            kill_index:(([< `Read | `Set_and_create ], t, Kill_index.t)
                        Fieldslib.Field.t_with_perm ->
                        t -> Kill_index.t -> 'd) ->
            'd
          val fold :
            t ->
            init:'->
            monitor:('->
                     ([< `Read | `Set_and_create ], t,
                      t Monitor.t_ Backpatched.t)
                     Fieldslib.Field.t_with_perm ->
                     t -> t Monitor.t_ Backpatched.t -> 'b) ->
            priority:('->
                      ([< `Read | `Set_and_create ], t, Priority.t)
                      Fieldslib.Field.t_with_perm -> t -> Priority.t -> 'c) ->
            backtrace_history:('->
                               ([< `Read | `Set_and_create ], t,
                                Core.Std.Backtrace.t list)
                               Fieldslib.Field.t_with_perm ->
                               t -> Core.Std.Backtrace.t list -> 'd) ->
            kill_index:('->
                        ([< `Read | `Set_and_create ], t, Kill_index.t)
                        Fieldslib.Field.t_with_perm ->
                        t -> Kill_index.t -> 'e) ->
            'e
        end
    end
  val invariant : t -> unit
  val main_monitor_hole : t Monitor.t_ Backpatched.Hole.t
  val main : t
  val monitor : t -> t Monitor.t_
  val create_like : ?monitor:t Monitor.t_ -> ?priority:Priority.t -> t -> t
  val record_backtrace : t -> t
end