sig
  type kind = Kind.Make.t
  type graph
  type t = Kind.Make.Dynamic.graph Pervasives.ref
  val create : unit -> Kind.Make.Dynamic.t
  val create_graph : unit -> Kind.Make.Dynamic.graph
  val clear_graph : Kind.Make.Dynamic.graph -> unit
  val add_kind :
    Kind.Make.Dynamic.t ->
    T.t -> Kind.Make.Dynamic.kind list -> Kind.Make.Dynamic.kind
  val remove_kind : Kind.Make.Dynamic.t -> Kind.Make.Dynamic.kind -> unit
  val add_dependency :
    Kind.Make.Dynamic.t ->
    Kind.Make.Dynamic.kind -> Kind.Make.Dynamic.kind -> unit
  type marshalled_graph
  val marshal : Kind.Make.Dynamic.graph -> Kind.Make.Dynamic.marshalled_graph
  val unmarshal :
    (string -> T.t) ->
    (Kind.Make.Dynamic.kind -> unit) ->
    Kind.Make.Dynamic.marshalled_graph -> Kind.Make.Dynamic.graph
  val before_load : unit -> unit
  val after_load : unit -> unit
end