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 : Core_unix.Open_flags.t
  val wronly : Core_unix.Open_flags.t
  val rdwr : Core_unix.Open_flags.t
  val creat : Core_unix.Open_flags.t
  val excl : Core_unix.Open_flags.t
  val noctty : Core_unix.Open_flags.t
  val trunc : Core_unix.Open_flags.t
  val append : Core_unix.Open_flags.t
  val nonblock : Core_unix.Open_flags.t
  val dsync : Core_unix.Open_flags.t
  val sync : Core_unix.Open_flags.t
  val rsync : Core_unix.Open_flags.t
  val can_read : Core_unix.Open_flags.t -> bool
  val can_write : Core_unix.Open_flags.t -> bool
  val sexp_of_t : Core_unix.Open_flags.t -> Sexplib.Sexp.t
end