sig
  type t
  val pp : Format.formatter -> Ident.t -> unit
  val to_string : Ident.t -> string
  val from_id : Ast.id -> Ident.t
  val from_name : Name.lskips_t -> Ident.t
  val get_name : Ident.t -> Name.lskips_t
  val mk_ident : Ast.lex_skips -> Name.t list -> Name.t -> Ident.t
  val mk_ident_ast :
    (Name.lskips_t * Ast.lex_skips) list -> Name.lskips_t -> Ast.l -> Ident.t
  val mk_ident_strings : string list -> string -> Ident.t
  val to_output_format :
    (Output.id_annot -> Ulib.Text.t -> Output.t) ->
    Output.id_annot -> Ulib.Text.t -> Ident.t -> Output.t
  val to_output : Output.id_annot -> Ulib.Text.t -> Ident.t -> Output.t
  val get_lskip : Ident.t -> Ast.lex_skips
  val replace_lskip : Ident.t -> Ast.lex_skips -> Ident.t
  val to_name_list : Ident.t -> Name.t list * Name.t
  val has_empty_path_prefix : Ident.t -> bool
  val strip_path : Name.t -> Ident.t -> Ident.t
  val rename : Ident.t -> Name.t -> Ident.t
  val drop_path : Ident.t -> Ident.t
end