sig
  type existence = Must_exist | Must_not_exist | Indifferent
  exception No_file
  exception File_exists
  val normalize :
    ?existence:Filepath.existence -> ?base_name:string -> string -> string
  val relativize : ?base_name:string -> string -> string
  val is_relative : ?base_name:string -> string -> bool
  val pretty : string -> string
  val add_symbolic_dir : string -> string -> unit
  val all_symbolic_dirs : unit -> (string * string) list
  module Normalized :
    sig
      type t = private string
      val of_string :
        ?existence:Filepath.existence ->
        ?base_name:string -> string -> Filepath.Normalized.t
      val concat :
        ?existence:Filepath.existence ->
        Filepath.Normalized.t -> string -> Filepath.Normalized.t
      val to_pretty_string : Filepath.Normalized.t -> string
      val equal : Filepath.Normalized.t -> Filepath.Normalized.t -> bool
      val compare : Filepath.Normalized.t -> Filepath.Normalized.t -> int
      val compare_pretty :
        ?case_sensitive:bool ->
        Filepath.Normalized.t -> Filepath.Normalized.t -> int
      val pretty : Stdlib.Format.formatter -> Filepath.Normalized.t -> unit
      val pp_abs : Stdlib.Format.formatter -> Filepath.Normalized.t -> unit
      val unknown : Filepath.Normalized.t
      val is_unknown : Filepath.Normalized.t -> bool
      val is_file : Filepath.Normalized.t -> bool
      val to_base_uri : Filepath.Normalized.t -> string option * string
    end
  type position = {
    pos_path : Filepath.Normalized.t;
    pos_lnum : int;
    pos_bol : int;
    pos_cnum : int;
  }
  val pp_pos : Stdlib.Format.formatter -> Filepath.position -> unit
end