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