sig
  type value =
      Int of int
    | Float of float
    | String of string
    | List of Gml.value_list
  and value_list = (string * Gml.value) list
  module Parse :
    functor (B : Builder.S->
      functor
        (L : sig
               val node : Gml.value_list -> B.G.V.label
               val edge : Gml.value_list -> B.G.E.label
             end->
        sig val parse : string -> B.G.t end
  module Print :
    functor
      (G : sig
             module V :
               sig
                 type t
                 val hash : Gml.Print.V.t -> int
                 val equal : Gml.Print.V.t -> Gml.Print.V.t -> bool
                 type label
                 val label : Gml.Print.V.t -> Gml.Print.V.label
               end
             module E :
               sig
                 type t
                 type label
                 val src : Gml.Print.E.t -> Gml.Print.V.t
                 val dst : Gml.Print.E.t -> Gml.Print.V.t
                 val label : Gml.Print.E.t -> Gml.Print.E.label
               end
             type t
             val iter_vertex : (Gml.Print.V.t -> unit) -> Gml.Print.t -> unit
             val iter_edges_e :
               (Gml.Print.E.t -> unit) -> Gml.Print.t -> unit
           end->
      functor
        (L : sig
               val node : G.V.label -> Gml.value_list
               val edge : G.E.label -> Gml.value_list
             end->
        sig val print : Format.formatter -> G.t -> unit end
end