anchor.diff:  Gremlin I/O
   -----------
   
  -image:gremlin-io.png[width=250,float=right] The task of getting data in and out of `Graph` instances is the job of the Gremlin I/O packages.  Gremlin I/O provides two interfaces that for reading and writing `Graph` instances: `GraphReader` and `GraphWriter`.  These interfaces expose methods that support:
  +image:gremlin-io.png[width=250,float=right] The task of getting data in and out of `Graph` instances is the job of the Gremlin I/O packages.  Gremlin I/O provides two interfaces for reading and writing `Graph` instances: `GraphReader` and `GraphWriter`.  These interfaces expose methods that support:
   
   * Reading and writing an entire `Graph`
   * Reading and writing a `Traversal<Vertex>` as adjacency list format
  
positive.code: GraphML Reader/Writer
  ~~~~~~~~~~~~~~~~~~~~~
  
  image:gremlin-graphml.png[width=350,float=left] The link:http://graphml.graphdrawing.org/[GraphML] file format is a common XML-based representation of a graph. It is widely supported by graph-related tools and libraries making it a solid interchange format for TinkerPop. In other words, if the intent is to work with graph data in conjunction with applications outside of TinkerPop, GraphML maybe be the best choice to do that. Common use cases might be:
  
  * Generate a graph link:https://networkx.github.io/[NetworkX], export it with GraphML and import it to TinkerPop.
  * Produce a subgraph and export it to GraphML to be consumed by and visualized in link:https://gephi.org/[Gephi].
  * Migrate the data of an entire graph to a different graph database not supported by TinkerPop.
  
  
negative.code: ----
  final Graph g = TinkerFactory.createModern();
  try (final OutputStream os = new FileOutputStream("tinkerpop-modern.gio")) {
      g.io().kryoWriter().create().writeGraph(os);
  }
  
  final Graph newGraph = TinkerGraph.open();
  