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 -> 'BatEnum.t
  val of_enum : 'BatEnum.t -> 'a option
  exception No_value
  module Monad :
    sig
      type 'a m = 'a option
      val return : '-> 'BatOption.Monad.m
      val bind :
        'BatOption.Monad.m ->
        ('-> 'BatOption.Monad.m) -> 'BatOption.Monad.m
    end
  val print :
    ('BatInnerIO.output -> '-> unit) ->
    'BatInnerIO.output -> 'BatOption.t -> unit
  val t_printer : 'BatValue_printer.t -> 'BatOption.t BatValue_printer.t
  val maybe_printer :
    'BatValue_printer.t -> 'BatOption.t BatValue_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