functor   (G : sig          type t          module V :            sig              type t              val compare : t -> t -> int              val hash : t -> int              val equal : t -> t -> bool              val id : Service_graph.Make.t -> int              val name : Service_graph.Make.t -> string              val attributes :                Service_graph.Make.t ->                Graph.Graphviz.DotAttributes.vertex list              val entry_point : unit -> Service_graph.Make.t option            end          val iter_vertex :            (Service_graph.Make.V.t -> unit) -> Service_graph.Make.t -> unit          val iter_succ :            (Service_graph.Make.V.t -> unit) ->            Service_graph.Make.t -> Service_graph.Make.V.t -> unit          val iter_pred :            (Service_graph.Make.V.t -> unit) ->            Service_graph.Make.t -> Service_graph.Make.V.t -> unit          val fold_pred :            (Service_graph.Make.V.t -> '-> 'a) ->            Service_graph.Make.t -> Service_graph.Make.V.t -> '-> 'a          val datatype_name : string        end->   sig     type node = G.V.t     type graph = G.t     module Service_graph :       sig         type t         module V :           sig             type t = node vertex             val compare : t -> t -> int             val hash : t -> int             val equal : t -> t -> bool             type label             val create : label -> t             val label : t -> label           end         type vertex = V.t         module E :           sig             type t             val compare : t -> t -> int             type vertex = vertex             val src : t -> vertex             val dst : t -> vertex             type label = edge             val create : vertex -> label -> vertex -> t             val label : t -> label           end         type edge = E.t         val is_directed : bool         val is_empty : t -> bool         val nb_vertex : t -> int         val nb_edges : t -> int         val out_degree : t -> vertex -> int         val in_degree : t -> vertex -> int         val mem_vertex : t -> vertex -> bool         val mem_edge : t -> vertex -> vertex -> bool         val mem_edge_e : t -> edge -> bool         val find_edge : t -> vertex -> vertex -> edge         val find_all_edges : t -> vertex -> vertex -> edge list         val succ : t -> vertex -> vertex list         val pred : t -> vertex -> vertex list         val succ_e : t -> vertex -> edge list         val pred_e : t -> vertex -> edge list         val iter_vertex : (vertex -> unit) -> t -> unit         val fold_vertex : (vertex -> '-> 'a) -> t -> '-> 'a         val iter_edges : (vertex -> vertex -> unit) -> t -> unit         val fold_edges : (vertex -> vertex -> '-> 'a) -> t -> '-> 'a         val iter_edges_e : (edge -> unit) -> t -> unit         val fold_edges_e : (edge -> '-> 'a) -> t -> '-> 'a         val map_vertex : (vertex -> vertex) -> t -> t         val iter_succ : (vertex -> unit) -> t -> vertex -> unit         val iter_pred : (vertex -> unit) -> t -> vertex -> unit         val fold_succ : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a         val fold_pred : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a         val iter_succ_e : (edge -> unit) -> t -> vertex -> unit         val fold_succ_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a         val iter_pred_e : (edge -> unit) -> t -> vertex -> unit         val fold_pred_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a         module Datatype :           sig             type t = t             val ty : t Type.t             val name : string             val descr : t Descr.t             val packed_descr : Structural_descr.pack             val reprs : t list             val equal : t -> t -> bool             val compare : t -> t -> int             val hash : t -> int             val pretty_code : Format.formatter -> t -> unit             val internal_pretty_code :               Type.precedence -> Format.formatter -> t -> unit             val pretty : Format.formatter -> t -> unit             val varname : t -> string             val mem_project : (Project_skeleton.t -> bool) -> t -> bool             val copy : t -> t           end       end     val compute : graph -> Datatype.String.Set.t -> Service_graph.t     val output_graph : out_channel -> Service_graph.t -> unit     val entry_point : unit -> Service_graph.V.t option     module TP :       sig         type t = Service_graph.t         module V :           sig             type t = node vertex             val compare : t -> t -> int             val hash : t -> int             val equal : t -> t -> bool             type label             val create : label -> t             val label : t -> label           end         type vertex = V.t         module E :           sig             type t = Service_graph.E.t             val compare : t -> t -> int             type vertex = vertex             val src : t -> vertex             val dst : t -> vertex             type label             val create : vertex -> label -> vertex -> t             val label : t -> label           end         type edge = E.t         val is_directed : bool         val is_empty : t -> bool         val nb_vertex : t -> int         val nb_edges : t -> int         val out_degree : t -> vertex -> int         val in_degree : t -> vertex -> int         val mem_vertex : t -> vertex -> bool         val mem_edge : t -> vertex -> vertex -> bool         val mem_edge_e : t -> edge -> bool         val find_edge : t -> vertex -> vertex -> edge         val find_all_edges : t -> vertex -> vertex -> edge list         val succ : t -> vertex -> vertex list         val pred : t -> vertex -> vertex list         val succ_e : t -> vertex -> edge list         val pred_e : t -> vertex -> edge list         val iter_vertex : (vertex -> unit) -> t -> unit         val fold_vertex : (vertex -> '-> 'a) -> t -> '-> 'a         val iter_edges : (vertex -> vertex -> unit) -> t -> unit         val fold_edges : (vertex -> vertex -> '-> 'a) -> t -> '-> 'a         val iter_edges_e : (edge -> unit) -> t -> unit         val fold_edges_e : (edge -> '-> 'a) -> t -> '-> 'a         val map_vertex : (vertex -> vertex) -> t -> t         val iter_succ : (vertex -> unit) -> t -> vertex -> unit         val iter_pred : (vertex -> unit) -> t -> vertex -> unit         val fold_succ : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a         val fold_pred : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a         val iter_succ_e : (edge -> unit) -> t -> vertex -> unit         val fold_succ_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a         val iter_pred_e : (edge -> unit) -> t -> vertex -> unit         val fold_pred_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a         val graph_attributes : t -> Graph.Graphviz.DotAttributes.graph list         val default_vertex_attributes :           t -> Graph.Graphviz.DotAttributes.vertex list         val vertex_name : V.t -> string         val vertex_attributes :           V.t -> Graph.Graphviz.DotAttributes.vertex list         val default_edge_attributes :           t -> Graph.Graphviz.DotAttributes.edge list         val edge_attributes : E.t -> Graph.Graphviz.DotAttributes.edge list         val get_subgraph :           V.t -> Graph.Graphviz.DotAttributes.subgraph option       end   end