sig
  type t
  val contents : String_zipper.t -> string
  val left_contents : String_zipper.t -> string
  val right_contents : String_zipper.t -> string
  val insert_before : String_zipper.t -> char -> String_zipper.t
  val insert_after : String_zipper.t -> char -> String_zipper.t
  val drop_before : String_zipper.t -> (char * String_zipper.t) option
  val drop_after : String_zipper.t -> (char * String_zipper.t) option
  val drop_all_before :
    String_zipper.t -> (char list * String_zipper.t) option
  val drop_all_after :
    String_zipper.t -> (char list * String_zipper.t) option
  val previous : String_zipper.t -> String_zipper.t option
  val next : String_zipper.t -> String_zipper.t option
  val first : String_zipper.t -> String_zipper.t
  val last : String_zipper.t -> String_zipper.t
  val replace_left : String_zipper.t -> string -> String_zipper.t
  val replace_right : String_zipper.t -> string -> String_zipper.t
  val create : string -> string -> String_zipper.t
end