sig
  type 'execution_context t = {
    mutable state : 'execution_context Raw_clock_event.T.state;
  }
  and 'execution_context state =
      Uninitialized
    | Aborted
    | Happened
    | Waiting of 'execution_context Raw_clock_event.T.waiting
  and 'execution_context waiting = {
    event :
      'execution_context Raw_clock_event.T.t Core.Std.sexp_opaque
      Events.Event.t;
    ready :
      ([ `Aborted | `Happened ], 'execution_context) Raw_clock_event.Ivar.t;
  }
  val sexp_of_t :
    ('execution_context -> Sexplib.Sexp.t) ->
    'execution_context t -> Sexplib.Sexp.t
  val sexp_of_state :
    ('execution_context -> Sexplib.Sexp.t) ->
    'execution_context state -> Sexplib.Sexp.t
  val sexp_of_waiting :
    ('execution_context -> Sexplib.Sexp.t) ->
    'execution_context waiting -> Sexplib.Sexp.t
end