sig
  type 'a t
  exception Empty
  val create : unit -> 'Ed_fstack.t
  val push : '-> 'Ed_fstack.t -> unit
  val pop : 'Ed_fstack.t -> 'a
  val forward : 'Ed_fstack.t -> 'a
  val top : 'Ed_fstack.t -> 'a
  val clear : 'Ed_fstack.t -> unit
  val is_empty : 'Ed_fstack.t -> bool
  val can_forward : 'Ed_fstack.t -> bool
  val length : 'Ed_fstack.t -> int
  val forward_length : 'Ed_fstack.t -> int
end