sig
  type 'a t = 'a option
  val compare : ('-> '-> int) -> 'a option -> 'b option -> int
  val equal : 'a option -> 'a option -> bool
  val gen :
    (?size:int -> Random.State.t -> 'a) ->
    ?size:int -> Random.State.t -> 'a option
  val to_string : ('-> string) -> 'a option -> string
end