sig
  type 'a t = 'a t
  module type S = S
  module type S1 = S1
  module type S2 = S2
  module type S3 = S3
  val invariant :
    string -> '-> ('-> Sexplib.Sexp.t) -> (unit -> unit) -> unit
  val check_field :
    '-> 'Invariant_intf.t -> ('a, 'b) Fieldslib.Field.t -> unit
end