functor (X : AdditionalInfo->
  sig
    type t = Reason_graph.reason_graph
    module V :
      sig
        type t = PdgTypes.Node.t
        val pretty : Format.formatter -> PdgTypes.Node.t -> unit
      end
    module E :
      sig
        type t =
            Reason_graph.Printer.V.t * Reason_graph.Printer.V.t *
            Reason_graph.reason_type
        val src : 'a * 'b * '-> 'a
        val dst : 'a * 'b * '-> 'b
      end
    val node_kf : PdgTypes.Node.Map.key -> Cil_types.kernel_function
    val keep_edge :
      PdgTypes.Node.Map.key * PdgTypes.Node.Map.key * '-> bool
    val iter_vertex :
      (Reason_graph.NodeSet.elt -> unit) -> Reason_graph.Reason.Set.t -> unit
    val iter_edges_e :
      (Reason_graph.Reason.Set.elt -> unit) ->
      Reason_graph.Reason.Set.t -> unit
    val vertex_name : PdgTypes.Node.t -> string
    val graph_attributes : '-> [> `Label of string ] list
    val default_vertex_attributes :
      '-> [> `Shape of [> `Box ] | `Style of [> `Filled ] list ] list
    val default_edge_attributes : '-> 'b list
    val vertex_attributes :
      PdgTypes.Node.t ->
      [> `Color of int | `Label of string | `Shape of [> `Diamond ] ] list
    val edge_attributes :
      'a * 'b * Reason_graph.reason_type ->
      [> `Color of int | `Label of string ] list
    val get_subgraph :
      PdgTypes.Node.Map.key -> Graph.Graphviz.DotAttributes.subgraph option
  end