sig
  exception Compression_error of string * exn option
  module type Decompressor =
    sig
      val uncompress : Extlib.IO.input -> Extlib.IO.input
      val open_in :
        ?mode:Extlib.File.open_in_flag list ->
        ?perm:Extlib.File.permission -> string -> Extlib.IO.input
      val with_in : Extlib.IO.input -> (Extlib.IO.input -> 'a) -> 'a
    end
  module type Compressor =
    sig
      val compress : 'Extlib.IO.output -> unit Extlib.IO.output
      val open_out :
        ?mode:Extlib.File.open_out_flag list ->
        ?perm:Extlib.File.permission -> string -> unit Extlib.IO.output
      val with_out :
        unit Extlib.IO.output -> (unit Extlib.IO.output -> 'a) -> 'a
    end
end