sig
  val register :
    string ->
    'Type.t ->
    ?comment:(Format.formatter -> unit) -> ?is_dyn:bool -> '-> 'a
  val never_write : string -> '-> 'a
  val prevent : ('-> 'b) -> '-> 'b
  module Binding :
    sig
      val add : 'Type.t -> '-> string -> unit
      exception Name_already_exists of string
      val add_once : 'Type.t -> '-> string -> unit
    end
  module Reverse_binding :
    sig
      exception Unbound_value of string
      exception Incompatible_type of string
      val fill : unit -> unit
      val find : string -> 'Type.t -> 'a
      val iter : (string -> 'Type.t -> '-> unit) -> unit
      val pretty : Format.formatter -> unit -> unit
    end
  val get_name : unit -> Datatype.Filepath.t
  val set_name : string -> unit
  val write : unit -> unit
  val save : unit -> unit
  val restore : unit -> unit
  val keep_file : string -> unit
  val get_session_file : (string -> Datatype.Filepath.t) Pervasives.ref
end