sig
  type 'a t = 'a list * 'a list
  val empty : 'CCList.Zipper.t
  val is_empty : 'CCList.Zipper.t -> bool
  val to_list : 'CCList.Zipper.t -> 'a list
  val to_rev_list : 'CCList.Zipper.t -> 'a list
  val make : 'a list -> 'CCList.Zipper.t
  val left : 'CCList.Zipper.t -> 'CCList.Zipper.t
  val left_exn : 'CCList.Zipper.t -> 'CCList.Zipper.t
  val right : 'CCList.Zipper.t -> 'CCList.Zipper.t
  val right_exn : 'CCList.Zipper.t -> 'CCList.Zipper.t
  val modify :
    ('a option -> 'a option) -> 'CCList.Zipper.t -> 'CCList.Zipper.t
  val insert : '-> 'CCList.Zipper.t -> 'CCList.Zipper.t
  val remove : 'CCList.Zipper.t -> 'CCList.Zipper.t
  val is_focused : 'CCList.Zipper.t -> bool
  val focused : 'CCList.Zipper.t -> 'a option
  val focused_exn : 'CCList.Zipper.t -> 'a
  val drop_before : 'CCList.Zipper.t -> 'CCList.Zipper.t
  val drop_after : 'CCList.Zipper.t -> 'CCList.Zipper.t
  val drop_after_and_focused : 'CCList.Zipper.t -> 'CCList.Zipper.t
end