sig
  type file_kind = FK_dir | FK_file | FK_link | FK_other
  type stats = { stat_file_kind : My_unix.file_kind; stat_key : string; }
  val is_degraded : bool Lazy.t
  val is_link : string -> bool
  val run_and_open : string -> (Pervasives.in_channel -> 'a) -> 'a
  val readlink : string -> string
  val run_and_read : string -> string
  val execute_many :
    ?max_jobs:int ->
    ?ticker:(unit -> unit) ->
    ?period:float ->
    ?display:((Pervasives.out_channel -> unit) -> unit) ->
    (unit -> string) list list -> (bool list * exn) option
  val report_error : Format.formatter -> exn -> unit
  val at_exit_once : (unit -> unit) -> unit
  val gettimeofday : unit -> float
  val stdout_isatty : unit -> bool
  val stat : string -> My_unix.stats
  val lstat : string -> My_unix.stats
  type implem = {
    mutable is_degraded : bool;
    mutable is_link : string -> bool;
    mutable run_and_open : 'a. string -> (Pervasives.in_channel -> 'a) -> 'a;
    mutable readlink : string -> string;
    mutable execute_many :
      ?max_jobs:int ->
      ?ticker:(unit -> unit) ->
      ?period:float ->
      ?display:((Pervasives.out_channel -> unit) -> unit) ->
      (unit -> string) list list -> (bool list * exn) option;
    mutable report_error : Format.formatter -> exn -> unit;
    mutable at_exit_once : (unit -> unit) -> unit;
    mutable gettimeofday : unit -> float;
    mutable stdout_isatty : unit -> bool;
    mutable stat : string -> My_unix.stats;
    mutable lstat : string -> My_unix.stats;
  }
  val implem : My_unix.implem
end