sig
  type 'a t = 'a option
  val may : ('-> unit) -> 'a option -> unit
  val map : ('-> 'b) -> 'a option -> 'b option
  val bind : ('-> 'b option) -> 'a option -> 'b option
  val default : '-> 'a option -> 'a
  val map_default : ('-> 'b) -> '-> 'a option -> 'b
  val is_none : 'a option -> bool
  val is_some : 'a option -> bool
  val get : 'a option -> 'a
  val get_exn : 'a option -> exn -> 'a
  val enum : 'a option -> 'Extlib.Enum.t
  val of_enum : 'Extlib.Enum.t -> 'a option
  exception No_value
  val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
  val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
  val print :
    ('Extlib.InnerIO.output -> '-> unit) ->
    'Extlib.InnerIO.output -> 'b t -> unit
  val t_printer : 'Extlib.Value_printer.t -> 'a t Extlib.Value_printer.t
  val maybe_printer :
    'Extlib.Value_printer.t -> 'a t Extlib.Value_printer.t
  module Labels :
    sig
      val may : f:('-> unit) -> 'a option -> unit
      val map : f:('-> 'b) -> 'a option -> 'b option
      val map_default : f:('-> 'b) -> '-> 'a option -> 'b
    end
end