sig
  val with_interprocess_protect : (((unit -> 'a) -> 'a) -> 'b) -> 'b
  val with_interprocess_raise_and_okay :
    ((exn -> unit) -> (unit -> unit) -> 'a) -> 'a
  type 'a read_end
  type 'a write_end
  exception Dead
  val create : unit -> 'a IVar.read_end * 'a IVar.write_end
  val read : 'a IVar.read_end -> 'a option
  val write : 'a IVar.write_end -> 'a -> unit
  val close : 'a IVar.write_end -> unit
end