sig   module type StringType =     sig       type t       val length : BatPathGen.StringType.t -> int       type tchar       val get : BatPathGen.StringType.t -> int -> BatPathGen.StringType.tchar       val lift_char : char -> BatPathGen.StringType.tchar       val lift : string -> BatPathGen.StringType.t       val to_string : BatPathGen.StringType.t -> string       val concat_with_separators :         BatPathGen.StringType.t ->         BatPathGen.StringType.t list -> BatPathGen.StringType.t       val compare : BatPathGen.StringType.t -> BatPathGen.StringType.t -> int       val iter :         (BatPathGen.StringType.tchar -> unit) ->         BatPathGen.StringType.t -> unit       val iteri :         (int -> BatPathGen.StringType.tchar -> unit) ->         BatPathGen.StringType.t -> unit       val sub :         BatPathGen.StringType.t -> int -> int -> BatPathGen.StringType.t       val rindex : BatPathGen.StringType.t -> char -> int       module Parse :         sig           val source :             BatPathGen.StringType.t ->             (BatPathGen.StringType.tchar, BatCharParser.position)             BatParserCo.Source.t           val letter :             (BatPathGen.StringType.tchar, BatPathGen.StringType.tchar,              BatCharParser.position)             BatParserCo.t         end     end   module type PathType =     sig       type ustring       type uchar       module OperatorLift :         sig val ( !! ) : string -> BatPathGen.PathType.ustring end       type t = BatPathGen.PathType.ustring list       val is_relative : BatPathGen.PathType.t -> bool       val is_absolute : BatPathGen.PathType.t -> bool       val root : BatPathGen.PathType.t       val append :         BatPathGen.PathType.t ->         BatPathGen.PathType.ustring -> BatPathGen.PathType.t       val concat :         BatPathGen.PathType.t ->         BatPathGen.PathType.t -> BatPathGen.PathType.t       module Operators :         sig           val ( /: ) :             BatPathGen.PathType.t ->             BatPathGen.PathType.ustring -> BatPathGen.PathType.t           val ( //@ ) :             BatPathGen.PathType.t ->             BatPathGen.PathType.t -> BatPathGen.PathType.t         end       module Infix :         sig           val ( /: ) :             BatPathGen.PathType.t ->             BatPathGen.PathType.ustring -> BatPathGen.PathType.t           val ( //@ ) :             BatPathGen.PathType.t ->             BatPathGen.PathType.t -> BatPathGen.PathType.t         end       exception Malformed_path       val normalize_filepath : BatPathGen.PathType.t -> BatPathGen.PathType.t       val normalize_in_graph : BatPathGen.PathType.t -> BatPathGen.PathType.t       val normalize_in_tree : BatPathGen.PathType.t -> BatPathGen.PathType.t       val normalize : BatPathGen.PathType.t -> BatPathGen.PathType.t       val parent : BatPathGen.PathType.t -> BatPathGen.PathType.t       val belongs : BatPathGen.PathType.t -> BatPathGen.PathType.t -> bool       val relative_to_any :         BatPathGen.PathType.t ->         BatPathGen.PathType.t -> BatPathGen.PathType.t       exception Not_parent       val relative_to_parent :         BatPathGen.PathType.t ->         BatPathGen.PathType.t -> BatPathGen.PathType.t       exception Illegal_char       type validator = BatPathGen.PathType.ustring -> bool       val default_validator : BatPathGen.PathType.validator Pervasives.ref       val to_ustring : BatPathGen.PathType.t -> BatPathGen.PathType.ustring       val to_string : BatPathGen.PathType.t -> string       val of_string : BatPathGen.PathType.ustring -> BatPathGen.PathType.t       val s : BatPathGen.PathType.t -> string       val p : BatPathGen.PathType.ustring -> BatPathGen.PathType.t       val name : BatPathGen.PathType.t -> BatPathGen.PathType.ustring       val map_name :         (BatPathGen.PathType.ustring -> BatPathGen.PathType.ustring) ->         BatPathGen.PathType.t -> BatPathGen.PathType.t       val ext : BatPathGen.PathType.t -> BatPathGen.PathType.ustring option       val map_ext :         (BatPathGen.PathType.ustring option ->          BatPathGen.PathType.ustring option) ->         BatPathGen.PathType.t -> BatPathGen.PathType.t       val name_core : BatPathGen.PathType.t -> BatPathGen.PathType.ustring       type components =           BatPathGen.PathType.t * BatPathGen.PathType.ustring *           BatPathGen.PathType.ustring option       val split : BatPathGen.PathType.t -> BatPathGen.PathType.components       val join : BatPathGen.PathType.components -> BatPathGen.PathType.t       val map :         (BatPathGen.PathType.components -> BatPathGen.PathType.components) ->         BatPathGen.PathType.t -> BatPathGen.PathType.t       val drive_letter :         BatPathGen.PathType.t -> BatPathGen.PathType.uchar option     end   module Make :     functor (S : StringType->       sig         type ustring = S.t         type uchar = S.tchar         module OperatorLift : sig val ( !! ) : string -> ustring end         type t = ustring list         val is_relative : t -> bool         val is_absolute : t -> bool         val root : t         val append : t -> ustring -> t         val concat : t -> t -> t         module Operators :           sig val ( /: ) : t -> ustring -> t val ( //@ ) : t -> t -> t end         module Infix :           sig val ( /: ) : t -> ustring -> t val ( //@ ) : t -> t -> t end         exception Malformed_path         val normalize_filepath : t -> t         val normalize_in_graph : t -> t         val normalize_in_tree : t -> t         val normalize : t -> t         val parent : t -> t         val belongs : t -> t -> bool         val relative_to_any : t -> t -> t         exception Not_parent         val relative_to_parent : t -> t -> t         exception Illegal_char         type validator = ustring -> bool         val default_validator : validator ref         val to_ustring : t -> ustring         val to_string : t -> string         val of_string : ustring -> t         val s : t -> string         val p : ustring -> t         val name : t -> ustring         val map_name : (ustring -> ustring) -> t -> t         val ext : t -> ustring option         val map_ext : (ustring option -> ustring option) -> t -> t         val name_core : t -> ustring         type components = t * ustring * ustring option         val split : t -> components         val join : components -> t         val map : (components -> components) -> t -> t         val drive_letter : t -> uchar option       end   module OfString :     sig       type ustring = string       type uchar = char       module OperatorLift : sig val ( !! ) : string -> ustring end       type t = ustring list       val is_relative : t -> bool       val is_absolute : t -> bool       val root : t       val append : t -> ustring -> t       val concat : t -> t -> t       module Operators :         sig val ( /: ) : t -> ustring -> t val ( //@ ) : t -> t -> t end       module Infix :         sig val ( /: ) : t -> ustring -> t val ( //@ ) : t -> t -> t end       exception Malformed_path       val normalize_filepath : t -> t       val normalize_in_graph : t -> t       val normalize_in_tree : t -> t       val normalize : t -> t       val parent : t -> t       val belongs : t -> t -> bool       val relative_to_any : t -> t -> t       exception Not_parent       val relative_to_parent : t -> t -> t       exception Illegal_char       type validator = ustring -> bool       val default_validator : validator ref       val to_ustring : t -> ustring       val to_string : t -> string       val of_string : ustring -> t       val s : t -> string       val p : ustring -> t       val name : t -> ustring       val map_name : (ustring -> ustring) -> t -> t       val ext : t -> ustring option       val map_ext : (ustring option -> ustring option) -> t -> t       val name_core : t -> ustring       type components = t * ustring * ustring option       val split : t -> components       val join : components -> t       val map : (components -> components) -> t -> t       val drive_letter : t -> uchar option     end end