sig
  type el = Pos of int | Match of string * int | Rec of string
  type t = Path.el list
  val parse : string -> Path.t
  val get : ?path:Path.t -> ?str:string -> Sexp.t -> Sexp.t
  val replace :
    ?path:Path.t -> ?str:string -> Sexp.t -> subst:Sexp.t -> Sexp.t
  val replace_no_path : str:string -> Sexp.t -> subst:Sexp.t -> Sexp.t
  val subst_path : Sexp.t -> Path.t -> (Sexp.t -> Sexp.t) * Sexp.t
  val extract_pos : int -> Sexp.t -> (Sexp.t option -> Sexp.t) * Sexp.t
  val extract_match :
    string -> int -> Sexp.t -> (Sexp.t option -> Sexp.t) * Sexp.t
  val extract_rec : string -> Sexp.t -> (Sexp.t -> Sexp.t) * Sexp.t
end