functor
  (Tree : sig
            type t
            module V :
              sig
                type t
                type label = DGraphModel.DotG.V.t
                val create : label -> t
                val label : t -> label
                val hash : t -> int
                val equal : t -> t -> bool
              end
            module E :
              sig
                type t
                val compare : t -> t -> int
                type vertex = V.t
                val src : t -> vertex
                val dst : t -> vertex
                type label = unit
                val create : vertex -> label -> vertex -> t
                val label : t -> label
              end
            val create : ?size:int -> unit -> t
            val add_vertex : t -> V.t -> unit
            val add_edge_e : t -> E.t -> unit
          end->
  sig
    module Tree :
      sig
        type t = Tree.t
        module V :
          sig
            type t = Tree.V.t
            type label = DGraphModel.DotG.V.t
            val create : label -> t
            val label : t -> label
            val hash : t -> int
            val equal : t -> t -> bool
          end
        module E :
          sig
            type t = Tree.E.t
            val compare : t -> t -> int
            type vertex = V.t
            val src : t -> vertex
            val dst : t -> vertex
            type label = unit
            val create : vertex -> label -> vertex -> t
            val label : t -> label
          end
        val create : ?size:int -> unit -> t
        val add_vertex : t -> V.t -> unit
        val add_edge_e : t -> E.t -> unit
      end
    type t
    val get_structure : t -> Tree.t
    val get_root : t -> Tree.V.t
    val get_tree_vertices : Tree.V.label -> t -> Tree.V.t list
    val is_ghost_node : Tree.V.t -> t -> bool
    val is_ghost_edge : Tree.E.t -> t -> bool
    exception Ghost_node
    val get_graph_vertex : Tree.V.t -> t -> Tree.V.label
    val make :
      (DGraphSubTree.Tree.V.label, DGraphModel.DotG.E.t, string)
      DGraphModel.abstract_model ->
      DGraphSubTree.Tree.V.label -> int -> int -> t
  end