sig
  type 'a t
  exception Failure
  val create : unit -> 'a Cursor.t
  val before : 'a Cursor.t -> unit
  val after : 'a Cursor.t -> unit
  val insert : 'a Cursor.t -> 'a -> unit
  val insert_last : 'a Cursor.t -> 'a -> unit
  val peek : 'a Cursor.t -> 'a
  val peek_last : 'a Cursor.t -> 'a
  val goto_first : 'a Cursor.t -> unit
  val goto_last : 'a Cursor.t -> unit
  val get_all : 'a Cursor.t -> 'a list
  val is_last_line : 'a Cursor.t -> bool
end