sig
  type t
  val of_int : int -> t
  val to_int_exn : t -> int
  val equal : t -> t -> bool
  val empty : t
  val ( + ) : t -> t -> t
  val ( - ) : t -> t -> t
  val intersect : t -> t -> t
  val complement : t -> t
  val is_empty : t -> bool
  val do_intersect : t -> t -> bool
  val are_disjoint : t -> t -> bool
  val rdonly : Unix.Open_flags.t
  val wronly : Unix.Open_flags.t
  val rdwr : Unix.Open_flags.t
  val creat : Unix.Open_flags.t
  val excl : Unix.Open_flags.t
  val noctty : Unix.Open_flags.t
  val trunc : Unix.Open_flags.t
  val append : Unix.Open_flags.t
  val nonblock : Unix.Open_flags.t
  val dsync : Unix.Open_flags.t
  val sync : Unix.Open_flags.t
  val rsync : Unix.Open_flags.t
  val can_read : Unix.Open_flags.t -> bool
  val can_write : Unix.Open_flags.t -> bool
  val sexp_of_t : Unix.Open_flags.t -> Sexplib.Sexp.t
end