sig   type edge_kind = [ `Back | `Cross | `Forward ]   type ('v, 'e) t =       [ `Edge of 'v * 'e * 'v * CCGraph.Traverse.Event.edge_kind       | `Enter of 'v * int * ('v, 'e) CCGraph.Traverse.path       | `Exit of 'v ]   val get_vertex :     ('v, 'e) CCGraph.Traverse.Event.t -> ('v * [ `Enter | `Exit ]) option   val get_enter : ('v, 'e) CCGraph.Traverse.Event.t -> 'v option   val get_exit : ('v, 'e) CCGraph.Traverse.Event.t -> 'v option   val get_edge : ('v, 'e) CCGraph.Traverse.Event.t -> ('v * 'e * 'v) option   val get_edge_kind :     ('v, 'e) CCGraph.Traverse.Event.t ->     ('v * 'e * 'v * CCGraph.Traverse.Event.edge_kind) option   val dfs :     ?tbl:'CCGraph.set ->     ?eq:('-> '-> bool) ->     graph:('v, 'e) CCGraph.graph ->     'CCGraph.sequence ->     ('v, 'e) CCGraph.Traverse.Event.t CCGraph.sequence_once   val dfs_tag :     ?eq:('-> '-> bool) ->     tags:'CCGraph.tag_set ->     graph:('v, 'e) CCGraph.graph ->     'CCGraph.sequence ->     ('v, 'e) CCGraph.Traverse.Event.t CCGraph.sequence_once end