anchor.diff:  ----
   final Graph graph = TinkerFactory.createModern();
   try (final OutputStream os = new FileOutputStream("tinkerpop-modern.kryo")) {
  -    graph.io().gryoWriter().create().writeGraph(os);
  +    graph.io().gryoWriter().create().writeGraph(os, graph);
   }
   
   final Graph newGraph = TinkerGraph.open();
   try (final InputStream stream = new FileInputStream("tinkerpop-modern.kryo")) {
  -    newGraph.io().gryoReader().vertexIdKey("name").create().readGraph(stream);
  +    newGraph.io().gryoReader().vertexIdKey("name").create().readGraph(stream, newGraph);
   }
   ----
   
  
positive.code: 
  With a minor change to the construction of the `GraphSONWriter` the lossy nature of GraphSON can be avoided:
  
  [source,groovy]
  ----
  gremlin> graph = TinkerFactory.createModern()
  ==>tinkergraph[vertices:6 edges:6]
  gremlin> f = new FileOutputStream("vertex-1.json")
  ==>java.io.FileOutputStream@3bbf9027
  gremlin> mapper = graph.io().graphSONMapper().embedTypes(true).create()
  ==>org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper@2ce45a7b
  gremlin> graph.io().graphSONWriter().mapper(mapper).create().writeVertex(f, g.V(1).next(), BOTH)
  ==>null
  gremlin> f.close()
  ==>null
  ----
  
  In the above code, the `embedTypes` option is set to `true` and the output below shows the difference in the output:
  
negative.code: ==>tinkergraph[vertices:0 edges:0]
  gremlin> r = LegacyGraphSONReader.build().create()
  ==>org.apache.tinkerpop.gremlin.structure.io.graphson.LegacyGraphSONReader@64337702
  gremlin> r.readGraph(new FileInputStream('/tmp/tp2.json'), graph)
  ==>null
  gremlin> g = graph.traversal(standard())
  ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
  