sig
  type ('a, 'b) t = {
    assertion : 'a -> bool;
    fail_alert : 'a -> 'b;
    final_fail_alert : 'a -> 'b;
    success_alert : 'a -> 'b;
    max_fail_alerts : int;
    mutable num_fail_alerts : int;
  }
  val create :
    assertion:('a -> bool) ->
    fail_alert:('a -> 'b) ->
    final_fail_alert:('a -> 'b) ->
    success_alert:('a -> 'b) ->
    max_fail_alerts:int -> ('a, 'b) Error_check.ToggleN.t
  val check : ('a, 'b) Error_check.ToggleN.t -> 'a -> 'b option
  val state : ('a, 'b) Error_check.ToggleN.t -> bool
  val sexp_of_t :
    'a -> 'b -> ('c, 'd) Error_check.ToggleN.t -> Sexplib.Sexp.t
end